import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; public class HibernateSessionFactory { private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>(); private static org.hibernate.SessionFactory sessionFactory; private static Configuration configuration = new Configuration(); private static ServiceRegistry serviceRegistry; static { try { configuration.configure(); serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry(); sessionFactory = configuration.buildSessionFactory(serviceRegistry); } catch (Exception e) { System.err.println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } private HibernateSessionFactory() { } public static Session getSession() throws HibernateException { Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) { if (sessionFactory == null) { rebuildSessionFactory(); } session = (sessionFactory != null) ? sessionFactory.openSession() : null; threadLocal.set(session); } return session; } public static void rebuildSessionFactory() { try { configuration.configure(); serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry(); sessionFactory = configuration.buildSessionFactory(serviceRegistry); } catch (Exception e) { System.err.println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } public static void closeSession() throws HibernateException { Session session = (Session) threadLocal.get(); threadLocal.set(null); if (session != null) { session.close(); } } public static org.hibernate.SessionFactory getSessionFactory() { return sessionFactory; } public static Configuration getConfiguration() { return configuration; } }
相关推荐
HibernateSessionFactory.java
在`HibernateSessionFactory.java`这个文件中,我们可能看到对上述过程的封装,例如创建`SessionFactory`的静态方法,以及提供会话的获取和关闭功能。这样的封装有助于代码的整洁和复用。 在实际应用中,`...
Session s= HibernateSessionFactory.getSession(); 就是Hibernate的工具java类
在这个“hibernate的大部分的工具类”压缩包中,我们很可能会找到一系列帮助简化Hibernate操作的实用工具类。这些工具类通常包括对数据操作的辅助方法、空值检查、分页处理以及HQL查询的通用分页功能。 首先,让...
生成HibernateSessionFactory工具类(HibernateUtil) ===利用Myeclipse根据表生成实体类和映射文件=== g.进入DB Browser窗口,找到数据表 h.数据表右键,选择Hibernate reverse Engin... i.选择要生成的文件hbm....
4. **配置与初始化**:SessionFactory的创建通常在应用启动时进行,需要读取Hibernate配置文件(如hibernate.cfg.xml)并加载实体类信息。正确配置SessionFactory是使用getCurrentSession()的前提。 5. **异常处理*...
`HibernateUtil`工具类就是对Hibernate框架功能的一种封装,简化了对数据库的操作。 在`HibernateUtil`工具类中,常见的方法有以下几类: 1. **初始化SessionFactory**: SessionFactory是Hibernate的核心组件,它...
本文将详细讲解如何在Spring 3.2.3版本中配置SessionFactory,以便整合Hibernate 4.2.2,实现对数据库操作的高效管理。SessionFactory是Hibernate的核心组件,它负责创建Session对象,而Session则是与数据库交互的...
hibernate开发的工具类,封装的sessionFactory,session等
本篇将详细介绍一个基于Hibernate封装的增删改查工具类,该工具类整合了util、comm.util以及beanutils等库,旨在提高开发效率,降低代码复杂度,方便开发者快速地获取session和sessionFactory。 首先,让我们理解...
通过Hibernate生成工具,开发者可以快速地自动生成与数据库表对应的Java实体类、配置文件以及DAO层代码,极大地提高了开发效率。 安装该插件的过程非常简单。首先,你需要将压缩包解压,确保得到三个文件夹。这些...
`HibernateSessionFactory` 类是Hibernate应用中常见的一个工具类,用于管理和提供与当前线程相关的Session实例。让我们详细了解一下`HibernateSessionFactory`类中的关键方法和其背后的原理。 1. **配置和初始化...
3. **SessionFactory和Session**:SessionFactory是Hibernate的顶级工厂类,它负责创建Session对象。Session是与数据库交互的接口,用于执行CRUD(创建、读取、更新、删除)操作。 4. **Query和Criteria API**:...
本文将详细讲解Hibernate工具,包括`hibernate.cfg.xml`配置文件和`HibernateSessionFactory.java`类在Hibernate中的重要角色。 **1. hibernate.cfg.xml配置文件** `hibernate.cfg.xml`是Hibernate应用的基础配置...
在完成上述步骤后,系统将自动生成 HibernateSessionFactory.java 和 hibernate.cfg.xml 文件。然后,在 MyEclipse Datebase Explorer 中选中所有表,点击右键,选择 Hibernate Reverse Enginnering,选中目录存放...
HibernateUtil类是一个工具类,提供了一个线程安全的方式来获取和关闭Session。这里使用了ThreadLocal变量来保证每个线程都有自己的Session实例,并且提供currentSession()和closeSession()方法来分别获取和关闭...
5. **整合到项目**:将生成的Java类和映射文件引入到你的项目中,配置Hibernate的SessionFactory,然后就可以在业务代码中使用这些实体类进行数据库操作了。 标签中的“源码”可能指的是在使用Hibernate Tools的...
《Hibernate 5.0.9:深度解析与应用实践》 Hibernate,作为Java领域中备受推崇的对象关系映射(ORM)框架,自诞生以来就极大地简化了数据库操作,提升了开发效率。本文将深入探讨Hibernate 5.0.9版本的核心特性、...
### Hibernate与JDBC:概述与对比 #### 一、JDBC简介 ...总结而言,Hibernate和JDBC都是Java应用与数据库交互的重要工具,各有优劣。选择使用哪个取决于具体项目的需求、团队的技术背景以及预期的性能目标等因素。