之前已经提到SessionFactory用来获取Session实例,Session实例负责处理数据库的持久化操作,且在单线程环境中使用。SessionFactory是线程安全的全局对象,应该只被初始化一次。为使SessionFactory易于使用,且只被创建一次,我们创建一个帮助类HibernateUtil.java负责维护SessionFactory的初始化工作。代码如下:
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public final class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
private HibernateUtil() {}
private static SessionFactory buildSessionFactory() {
try {
// 根据hibernate.cfg.xml配置文件创建SessionFactory
return new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
// 确保出现异常时在控制台输出错误日志信息
System.err.println("创建SessionFactory初始化对象失败." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
另外,在程序开发中,应尽量按如下格式使用事务,当Session抛出异常后,事务应当回滚并且销毁Session对象,这样能保证在发生异常后Session的内部状态与数据库仍能保持一致。
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
// do something
// ...
tx.commit();
} catch (Exception e) {
if (tx != null) {
tx.rollback();
}
throw e;
} finally {
session.close();
}
另外,网上有一些功能很强大HibernateUtil帮助类,可以加入到自己的项目中使用,如下:
http://beckham-xiao.iteye.com/blog/355478
http://www.koders.com/java/fid07F9A88EDEDAEDAABC6C0535D5CC07C9BB39B43F.aspx
分享到:
相关推荐
HibernateUtil的相关封包------------------------------------------------------------------------------------------------------------------
06_传智播客hibernate教程_完善HibernateUtil类及hql查询入门
Hibernate5.2.1 的工具类 创建session 和 sessionFactory
HibernateUtil 分页 增删改查 封装 HibernateUtil 分页 增删改查 封装 HibernateUtil 分页 增删改查 封装
hibernate入门实例封装了HibernateUtil,完成数据库的添加操作,和查询操作。 Session的save方法和get方法。
03_hibernate入门案例的代码优化; 04_Session接口及get|load|persist方法 05_实体对象的三种状态与saveOrUpdate方法 06_完善HibernateUtil类及hql查询入门 07_实体类或属性名与数据库关键字冲突问题 10_使用...
HibernateUtil工具类,封装了Hibernate的事务,增,删,改,查,以及分页的方法!
HibernateUtil分装完整版HQL查询HibernateUtil分装完整版HQL查询
HibernateUtil工具类
一个工具类实现了增删改查 util comm.util beanutils 方便了获取session和sessionFactory
java util帮助类,包括日期工具类、字符串处理工具类、上传工具类、http请求工具类、hibernate工具类、MD5工具类、分页工具类等。 CodeStringUtil.java CreateFileUtil.java DateUtil.java FileCopy.java ...
自己编写的HibernateUtil类,比较全面,方法均通过测试
本章学习目标 Hibernate 初认识 Hibernate 的HelloWorld hibernate.cfg.xml 配置详解 *.hbm.xml 对象映射文件详解 Hibernate 核心接口... 抽取HibernateUtil 工具类 使用Session 接口进行增删改查
生成HibernateSessionFactory工具类(HibernateUtil) ===利用Myeclipse根据表生成实体类和映射文件=== g.进入DB Browser窗口,找到数据表 h.数据表右键,选择Hibernate reverse Engin... i.选择要生成的文件hbm....
每个具体类一个表 - 打开 HibernateUtil.java 并启用一个表每个 concreate 类注释类并运行 Application.java 这里创建了三个表。 每个层次类的一个表 - 打开 HibernateUtil.java 并启用每个层次类的一个表并运行 ...
hibernate 一对多测试工程,博客介绍请参照: http://blog.csdn.net/smilefyx/article/details/48596665
为以本机方式创建Hibernate的sessionFactory创建了新的HibernateUtil.java类表USERS也在这里创建和初始化 删除了JPA内容 persistence.xml 通过Resources.java设置EntityManager 创建了jboss-d
│ HibernateUtil.java │ JsonUtil.java │ list.txt │ log4j.properties │ messageResource_zh_CN.properties │ spring.xml │ struts.xml │ ├─28个java常用的工具类 │ │ Base64.java │ │ Base64...