之前已经提到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
分享到:
相关推荐
在`Student`类中,`mappedBy = "students"`表明关系的维护由`Course`类负责,即当添加或移除`Student`的`courses`时,Hibernate会自动更新中间表。 配置Hibernate的映射文件(hbm.xml),为每个实体类创建相应的...
首先,`HibernateUtil` 类是 Hibernate 教程中常见的一种工具类,它的主要作用是提供对 Hibernate 框架的简单封装,以方便进行数据库操作。在实际开发中,我们通常会创建一个静态方法来初始化 SessionFactory,这样...
HibernateUtil的相关封包------------------------------------------------------------------------------------------------------------------
在Java的持久化框架中,Hibernate是一个非常流行的ORM(对象关系映射)工具,它极大地简化了数据库操作。然而,在某些特定场景下,我们可能并不需要频繁地打开和关闭Session,这时“Hibernate-nosession”就显得尤为...
### Hibernate 5.0.7.Final版本解析与应用指南 #### 一、概述 Hibernate 是一款开源的对象关系映射(Object-...希望这些内容能够帮助开发者更好地理解和使用 Hibernate,从而构建出高效稳定的 Java 应用程序。
在这个hibernate入门实例中,我们将学习如何创建并使用HibernateUtil工具类,该类包含`save`和`get`方法,分别用于执行数据的保存和查询。 首先,我们需要在项目中配置Hibernate的相关文件,包括hibernate.cfg.xml...
`HibernateUtil` 是一个工具类,用于提供 Hibernate 的 SessionFactory实例。该类提供了基本的 CRUD(Create、Read、Update、Delete)操作,可以用于实现数据的增删查改操作。 测试代码 在使用 Hibernate 时,我们...
1. 数据库连接:使用HibernateUtil工具类实现SessionFactory的创建和关闭,简化数据库连接的管理。 2. 实体类映射:使用注解@Entity、@Table等定义实体类与数据库表的关系,@Id指定主键,@Column定义列。 3. CRUD...
Hibernate5.2.1 的工具类 创建session 和 sessionFactory
Hibernate 一对一唯一外键关联映射详解 Hibernate是一种流行的Java持久层框架,提供了多种关联映射方式,其中一对一唯一外键关联映射是一种常见的关联方式。在本文中,我们将详细介绍Hibernate一对一唯一外键关联...
本文将深入介绍Hibernate的基础配置和功能,帮助初学者快速入门。 一、ORM框架与Hibernate ORM框架如Hibernate的核心思想是通过将Java对象映射到数据库表,使得开发者可以专注于业务逻辑,而不是繁琐的SQL语句。...
根据提供的标题、描述以及部分内文,我们可以梳理出关于如何使用Struts2与Hibernate实现分页功能的关键知识点。 ### Struts2与Hibernate简介 - **Struts2**:这是一个基于MVC架构的开源Web框架,它能帮助开发者...
本教程将详细讲解如何使用HibernateUtil工具类封装HQL查询,从初始化配置到执行查询、管理事务,再到对象的持久化操作,旨在帮助开发者更高效地使用Hibernate进行数据库操作。通过学习这些内容,你可以更好地理解...
HibernateUtil 分页 增删改查 封装 HibernateUtil 分页 增删改查 封装 HibernateUtil 分页 增删改查 封装
在IT领域,数据库管理和持久化框架是至关重要的组成部分,尤其是对于Java开发而言,Hibernate作为一款优秀的对象关系...希望这些内容能帮助你理解Hibernate在多对多关系处理上的机制,进一步提升你的数据库操作技能。
`HibernateUtil`工具类就是对Hibernate框架功能的一种封装,简化了对数据库的操作。 在`HibernateUtil`工具类中,常见的方法有以下几类: 1. **初始化SessionFactory**: SessionFactory是Hibernate的核心组件,它...
### Hibernate多表联合查询详解 #### 一、引言 在实际项目开发中,我们经常需要处理复杂的数据库查询,特别是涉及到多个表之间的关联查询。...希望本文能对你理解Hibernate的多表联合查询有所帮助。
Hibernate是一种开源的ORM框架,它允许开发者用面向对象的方式处理数据库操作,通过将Java类与数据库表进行映射,简化了数据库访问的复杂性。在Hibernate中,对象的状态可以被持久化到关系数据库中,反之亦然,...