`
TriEyes
  • 浏览: 11188 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Learning Hibernate step by step -- 03 HibernateUtil帮助类

阅读更多
之前已经提到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
分享到:
评论

相关推荐

    Hibernate应用例子many-to-many

    在`Student`类中,`mappedBy = "students"`表明关系的维护由`Course`类负责,即当添加或移除`Student`的`courses`时,Hibernate会自动更新中间表。 配置Hibernate的映射文件(hbm.xml),为每个实体类创建相应的...

    06_传智播客hibernate教程_完善HibernateUtil类及hql查询入门

    首先,`HibernateUtil` 类是 Hibernate 教程中常见的一种工具类,它的主要作用是提供对 Hibernate 框架的简单封装,以方便进行数据库操作。在实际开发中,我们通常会创建一个静态方法来初始化 SessionFactory,这样...

    HibernateUtil

    HibernateUtil的相关封包------------------------------------------------------------------------------------------------------------------

    Hibernate-nosession

    在Java的持久化框架中,Hibernate是一个非常流行的ORM(对象关系映射)工具,它极大地简化了数据库操作。然而,在某些特定场景下,我们可能并不需要频繁地打开和关闭Session,这时“Hibernate-nosession”就显得尤为...

    hibernate-release-5.0.7.Final.zip官方

    ### Hibernate 5.0.7.Final版本解析与应用指南 #### 一、概述 Hibernate 是一款开源的对象关系映射(Object-...希望这些内容能够帮助开发者更好地理解和使用 Hibernate,从而构建出高效稳定的 Java 应用程序。

    hibernate入门实例封装了HibernateUtil

    在这个hibernate入门实例中,我们将学习如何创建并使用HibernateUtil工具类,该类包含`save`和`get`方法,分别用于执行数据的保存和查询。 首先,我们需要在项目中配置Hibernate的相关文件,包括hibernate.cfg.xml...

    hibernate使用参考文档

    `HibernateUtil` 是一个工具类,用于提供 Hibernate 的 SessionFactory实例。该类提供了基本的 CRUD(Create、Read、Update、Delete)操作,可以用于实现数据的增删查改操作。 测试代码 在使用 Hibernate 时,我们...

    hibernate-release-5.0.6.Final

    1. 数据库连接:使用HibernateUtil工具类实现SessionFactory的创建和关闭,简化数据库连接的管理。 2. 实体类映射:使用注解@Entity、@Table等定义实体类与数据库表的关系,@Id指定主键,@Column定义列。 3. CRUD...

    HibernateUtil.java Hibernate5.2.1

    Hibernate5.2.1 的工具类 创建session 和 sessionFactory

    hibernate one-to-one 一对一唯一外键关联映射_单向 and 双向

    Hibernate 一对一唯一外键关联映射详解 Hibernate是一种流行的Java持久层框架,提供了多种关联映射方式,其中一对一唯一外键关联映射是一种常见的关联方式。在本文中,我们将详细介绍Hibernate一对一唯一外键关联...

    Hibernate入门 - 基础配置

    本文将深入介绍Hibernate的基础配置和功能,帮助初学者快速入门。 一、ORM框架与Hibernate ORM框架如Hibernate的核心思想是通过将Java对象映射到数据库表,使得开发者可以专注于业务逻辑,而不是繁琐的SQL语句。...

    完整Struts2 HIBERNATE实现分页

    根据提供的标题、描述以及部分内文,我们可以梳理出关于如何使用Struts2与Hibernate实现分页功能的关键知识点。 ### Struts2与Hibernate简介 - **Struts2**:这是一个基于MVC架构的开源Web框架,它能帮助开发者...

    HibernateUtil分装完整版HQL查询

    本教程将详细讲解如何使用HibernateUtil工具类封装HQL查询,从初始化配置到执行查询、管理事务,再到对象的持久化操作,旨在帮助开发者更高效地使用Hibernate进行数据库操作。通过学习这些内容,你可以更好地理解...

    HibernateUtil 分页 增删改查 封装

    HibernateUtil 分页 增删改查 封装 HibernateUtil 分页 增删改查 封装 HibernateUtil 分页 增删改查 封装

    Hibernate多对多数据表操作-插入

    在IT领域,数据库管理和持久化框架是至关重要的组成部分,尤其是对于Java开发而言,Hibernate作为一款优秀的对象关系...希望这些内容能帮助你理解Hibernate在多对多关系处理上的机制,进一步提升你的数据库操作技能。

    Hibernate工具类

    `HibernateUtil`工具类就是对Hibernate框架功能的一种封装,简化了对数据库的操作。 在`HibernateUtil`工具类中,常见的方法有以下几类: 1. **初始化SessionFactory**: SessionFactory是Hibernate的核心组件,它...

    hibernate多表联合查询

    ### Hibernate多表联合查询详解 #### 一、引言 在实际项目开发中,我们经常需要处理复杂的数据库查询,特别是涉及到多个表之间的关联查询。...希望本文能对你理解Hibernate的多表联合查询有所帮助。

    hibernate-release-5.4.13.Final.zip

    Hibernate是一种开源的ORM框架,它允许开发者用面向对象的方式处理数据库操作,通过将Java类与数据库表进行映射,简化了数据库访问的复杂性。在Hibernate中,对象的状态可以被持久化到关系数据库中,反之亦然,...

Global site tag (gtag.js) - Google Analytics