`
rdman
  • 浏览: 84730 次
  • 性别: Icon_minigender_1
  • 来自: 陕西
社区版块
存档分类
最新评论

hiernate连接类

阅读更多

package com.huawei.ssh.entity;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
 private static Configuration configuration;

 private static SessionFactory sessionFactory;

 private static boolean useThreadLocal = true;

 private static ThreadLocal threadSession = new ThreadLocal();

 private static ThreadLocal threadTransaction = new ThreadLocal();

 /**
  * 获取配置文件
  */
 static {

  try {
   // 创建Configuration对象
   configuration = new Configuration();
   // 读取hibernate.cfg.xml文件
   configuration.configure();
   
   sessionFactory = configuration.buildSessionFactory();
  } catch (Exception e) {
   
   System.out.println("init exception " + e);
  }
 }

 /**
  * @return SessionFactory
  */
 public static SessionFactory getSessionFactory() {
  return sessionFactory;
 }

 /**
  * @return 获取当前session
  */
 public static Session getCurrentSession() {
  
  if (useThreadLocal) {
   Session s = (Session) threadSession.get();
   if (s == null) {
    s = getSessionFactory().openSession();
    threadSession.set(s);
   }
   return s;
  } else {

   return getSessionFactory().getCurrentSession();
  }

 }
 
    /**
  *关闭session对象
  */
 public static void closeSession()
 {
  Session session = (Session)threadSession.get();
  threadSession.set(null);
  if(session!=null&&session.isOpen())
  {
   session.close();
  }
 }
 
 /**
  * 开始事务
  */
 public static void beginTransaction()
 {
  Transaction tx = (Transaction)threadTransaction.get();
  if(tx==null)
  {
   tx = getCurrentSession().beginTransaction();
   threadTransaction.set(tx);
  }
 }
 
 /**
  * 提交事务
  */
 public static void commitTransaction()
 {
  Transaction tx = (Transaction)threadTransaction.get();
  try
  {
  if(tx!=null&&!tx.wasCommitted()&&!tx.wasRolledBack())
  {
   tx.commit();
   
  }
  threadTransaction.set(null);
  }catch(Exception ex)
  {
   rollbackTransaction();
   System.out.println("回滚 "+ex);
  }
  
 }
 
 /**
  * 回滚事务
  */
 public static void rollbackTransaction()
 {
  
  Transaction tx = (Transaction)threadTransaction.get();
  try
  {
  threadTransaction.set(null);
  if(tx!=null&&!tx.wasCommitted()&&!tx.wasRolledBack())
  {
   tx.rollback();
  }
  }catch(Exception ex)
  {
   System.out.println("Rollback exception "+ex);
  }finally
  {
   closeSession();
  }
 }
}

 

分享到:
评论

相关推荐

    hiernate5.2 .12 api

    1. **配置与初始化**:Hibernate的配置通常通过`hibernate.cfg.xml`文件完成,包括数据库连接信息、方言设置、缓存配置等。初始化时,会创建SessionFactory,它是线程安全的,负责创建Session实例。 2. **Session**...

    Hiernate课件

    ### Hiernate课件知识点详述 #### 一、Hibernate简介 **1.1 什么是Hibernate?** Hibernate是一个开源框架,能够自动地根据XML完成对象关系映射(ORM),并将对象持久化到数据库中。它是连接Java应用程序和关系...

    xfire集成spring+hiernate实现webservice样例工程

    2. **配置Hibernate**:编写Hibernate的配置文件(如hibernate.cfg.xml),指定数据库连接信息,加载映射文件(hbm.xml)以定义实体类和数据库表之间的映射。 3. **整合XFire与Spring**:通过Spring的Bean配置,将...

    学生成绩管理系统struts2+spring+hiernate+dwr+jquery UI

    Spring框架是整个系统的核心,它负责管理和协调各个组件,包括数据库连接、事务管理以及对其他框架如Struts2、Hibernate的整合。Spring的AOP(面向切面编程)特性允许我们定义全局的事务策略,确保数据的一致性。...

    Strtus2+spring+hibernate

    这些文件是SSH整合的关键,它们定义了各个组件如何协作,如Action如何注入服务,Hibernate如何连接数据库,以及Spring如何管理所有bean。 为了更好地理解和使用这个项目,你需要熟悉SSH的配置、生命周期管理、以及...

    案例课程B-S架构-1期 详细设计书18-审核批示模块.pdf

    - **Model层**:实体对象类(如`Shenhe`)和映射配置文件(如`Shenhe.hbm.xml`)位于`com.hiernate.persistence`包中。公共操作类(如数据库操作和业务功能方法)位于`com.hiernate.util`包下,包括`GetHibernate`...

    案例课程B-S架构-1期 详细设计书6-发布申请模块.pdf

    下,`GetHibernate`类负责初始化数据库连接,而`HibernateUtil`类则实现了各个模块的业务操作方法,包括发布申请的新增方法`saveShenhe(Shenhe shenhe)`。 **发布申请录入功能的详细设计逻辑:** - **界面层(fa....

    案例课程B-S架构-1期 详细设计书8-个人计划模块.pdf

    - Hibernate的公用操作类如GetHibernate和HibernateUtil放在com.hiernate.util目录下,负责数据库连接初始化和业务逻辑操作。 个人计划模块的设计充分考虑了易用性和可维护性,通过分离视图、控制和模型,提高了...

    hibernate学习笔记

    - 创建实体类:定义代表数据库表的Java类。 - 编写映射文件:使用XML文件描述实体类与数据库表之间的映射关系。 - 实现业务逻辑:利用Hibernate API进行数据的增删改查操作。 #### 配置文件 - **用途**:定义...

    hibernate和spring简易教程

    在“hibernate+spring教程”中,你将学习如何配置Hibernate和Spring,创建数据库连接,定义实体类,编写映射文件,以及如何在Spring中配置SessionFactory和事务管理器。此外,教程还将展示如何在Spring的控制层(如@...

Global site tag (gtag.js) - Google Analytics