复制 HibernateSessionFactory.java 到 util 包下
package util; import org.hibernate.HibernateException; import org.hibernate.cfg.Configuration; import org.hibernate.classic.Session; public class HibernateSessionFactory { private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml"; // 给线程绑定一个Session 比类级别更加安全 private static final ThreadLocal threadLocal = new ThreadLocal(); private static Configuration configuration = new Configuration(); private static org.hibernate.SessionFactory sessionFactory; private static String configFile = CONFIG_FILE_LOCATION; // 运行一次 先于类构造方法完成 内存寄存器位置 static { try { configuration.configure(configFile); sessionFactory = configuration.buildSessionFactory(); } 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(configFile); sessionFactory = configuration.buildSessionFactory(); } 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 void setConfigFile(String configFile) { HibernateSessionFactory.configFile = configFile; sessionFactory = null; } public static Configuration getConfiguration() { return configuration; } }
实例化该类
Session session = HibernateSessionFactory.getSession();
释放资源操作
HibernateSessionFactory.closeSession();
PS:实例化 HibernateSessionFactory 类,就可以使用了,使用完后,就需要释放资源,关闭Session。
例子:
package test; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.Transaction; import util.HibernateSessionFactory; import entity.Student; import entity.Teacher; public class MaryToOneTest2 { public static void main(String[] args) { maryToOne(); } private static void maryToOne() { Session session = HibernateSessionFactory.getSession(); // 增删改用事务 Transaction tx = null; Teacher teacher =new Teacher("李老师"); Student student1 = new Student("A学生"); Student student2 = new Student("B学生"); try { tx=session.beginTransaction(); session.save(teacher); session.save(student1); session.save(student2); tx.commit(); System.out.println("保存成功!!!"); } catch (HibernateException e) { e.printStackTrace(); tx.rollback(); }finally{ HibernateSessionFactory.closeSession(); } } }
效果图:
相关推荐
HibernateSessionFactory.java
本篇文章将深入探讨`HibernateSessionFactory`及其在Hibernate中的作用,以及如何使用它来实现增、删、查、改(CRUD)操作。 `SessionFactory`是Hibernate的核心组件,它是线程安全的,负责管理数据库连接和会话。`...
Session s= HibernateSessionFactory.getSession(); 就是Hibernate的工具java类
4. **配置与初始化**:SessionFactory的创建通常在应用启动时进行,需要读取Hibernate配置文件(如hibernate.cfg.xml)并加载实体类信息。正确配置SessionFactory是使用getCurrentSession()的前提。 5. **异常处理*...
为了将SessionFactory注入到需要使用它的类中,例如DAO层,可以使用`@Autowired`注解: ```java @Repository public class UserRepository { @Autowired private SessionFactory sessionFactory; public User ...
在完成上述步骤后,系统将自动生成 HibernateSessionFactory.java 和 hibernate.cfg.xml 文件。然后,在 MyEclipse Datebase Explorer 中选中所有表,点击右键,选择 Hibernate Reverse Enginnering,选中目录存放...
Session session = HibernateSessionFactory.currentSession(); Transaction t = session.beginTransaction(); session.save(o); t.commit(); HibernateSessionFactory.clossSession(); } ``` 2. 删除数据...
在该类中,我们可以使用 Hibernate 提供的 SessionFactory 实例来实现数据的访问。 本文档提供了 Hibernate 的基本使用步骤,从引入 JAR 包到编写测试代码。通过阅读本文档,读者可以快速掌握 Hibernate 的使用。 ...
Session session = HibernateSessionFactory.getSession(); Transaction tx = session.beginTransaction(); session.save(user); // 保存用户 tx.commit(); HibernateSessionFactory.closeSession(); } ``` ...
`DeleteTest.java`, `HibernateSessionFactory.java`以及`BatchUpdateTest.java`这四个文件涵盖了Hibernate中的核心操作和测试场景,它们一起构成了一个完整的数据库操作示例,展示了如何高效地使用Hibernate处理...
`HibernateSessionFactory` 类是Hibernate应用中常见的一个工具类,用于管理和提供与当前线程相关的Session实例。让我们详细了解一下`HibernateSessionFactory`类中的关键方法和其背后的原理。 1. **配置和初始化...
hibernate自动生成关键映射以及工厂类,连接数据库弄好连接和设置hibernate...直接使用HibernateSessionFactory 工厂类调用方法测试就好了,方便简洁,还能提高编码效率。 本人亲自测试过,纯手打的。希望大家支持。
此外,还可以使用框架提供的工具类 `HibernateSessionFactory` 来获取 `Session`,这样可以进一步简化代码并实现更好的资源管理。 ```java Session session = HibernateSessionFactory.getSession(); ``` #### 四...
如果选择自定义配置文件的位置或名称,则需要通过`HibernateSessionFactory`类中的`CONFIG_FILE_LOCATION`属性来指定实际的配置文件路径。 **配置文件中的主要内容包括:** - **数据库连接信息**:包括数据库的URL...
`HibernateUtil`会配置Hibernate的`hibernate.cfg.xml`配置文件,加载实体类,并根据配置创建SessionFactory实例。 2. **获取Session**: Session是与数据库交互的接口,提供了保存、更新、删除和查询对象的方法。在...
2. 创建实体类:为数据库表创建对应的Java类,并使用Hibernate的注解(如@Entity、@Table、@Id等)进行映射。 3. 配置Hibernate:创建一个hibernate.cfg.xml配置文件,设置数据库连接信息(如URL、用户名、密码)、...
- 获取Session对象:通过`HibernateSessionFactory.getSession()`方法获取一个`Session`实例。 - 开始事务:调用`session.beginTransaction()`开始一个事务。 - 创建查询:使用`session.createQuery`创建HQL查询语句...
然后,`EntityDaoImpl`实现类会利用Spring的`SessionFactory`和Hibernate的`Session`来实现这些方法。例如,`findById`的实现可能是这样的: ```java @Service public class EntityDaoImpl<T> implements EntityDao...