`
chaoyi
  • 浏览: 306320 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用 HibernateSessionFactory 类

 
阅读更多

复制 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();
		}
	}
}

 

效果图:

 

 

 

 

 

  • 大小: 32.9 KB
分享到:
评论

相关推荐

    HibernateSessionFactory.java

    HibernateSessionFactory.java

    HibernateSessionFactory 代码

    本篇文章将深入探讨`HibernateSessionFactory`及其在Hibernate中的作用,以及如何使用它来实现增、删、查、改(CRUD)操作。 `SessionFactory`是Hibernate的核心组件,它是线程安全的,负责管理数据库连接和会话。`...

    HibernateSessionFactory.java Hibernate使用的整合的工具文件

    Session s= HibernateSessionFactory.getSession(); 就是Hibernate的工具java类

    新Hibernate SessionFactory().getCurrentSession()猫腻

    4. **配置与初始化**:SessionFactory的创建通常在应用启动时进行,需要读取Hibernate配置文件(如hibernate.cfg.xml)并加载实体类信息。正确配置SessionFactory是使用getCurrentSession()的前提。 5. **异常处理*...

    spring配置sessionFactory(spring3.2.3+hibernate4.2.2)

    为了将SessionFactory注入到需要使用它的类中,例如DAO层,可以使用`@Autowired`注解: ```java @Repository public class UserRepository { @Autowired private SessionFactory sessionFactory; public User ...

    自动生成hibernate映射文件和实体类

    在完成上述步骤后,系统将自动生成 HibernateSessionFactory.java 和 hibernate.cfg.xml 文件。然后,在 MyEclipse Datebase Explorer 中选中所有表,点击右键,选择 Hibernate Reverse Enginnering,选中目录存放...

    hibernate数据库通用SQL代码

    Session session = HibernateSessionFactory.currentSession(); Transaction t = session.beginTransaction(); session.save(o); t.commit(); HibernateSessionFactory.clossSession(); } ``` 2. 删除数据...

    hibernate使用参考文档

    在该类中,我们可以使用 Hibernate 提供的 SessionFactory 实例来实现数据的访问。 本文档提供了 Hibernate 的基本使用步骤,从引入 JAR 包到编写测试代码。通过阅读本文档,读者可以快速掌握 Hibernate 的使用。 ...

    Hibernate笔记总结

    Session session = HibernateSessionFactory.getSession(); Transaction tx = session.beginTransaction(); session.save(user); // 保存用户 tx.commit(); HibernateSessionFactory.closeSession(); } ``` ...

    hibernate操纵实体对象

    `DeleteTest.java`, `HibernateSessionFactory.java`以及`BatchUpdateTest.java`这四个文件涵盖了Hibernate中的核心操作和测试场景,它们一起构成了一个完整的数据库操作示例,展示了如何高效地使用Hibernate处理...

    hibernate常用方法集合

    `HibernateSessionFactory` 类是Hibernate应用中常见的一个工具类,用于管理和提供与当前线程相关的Session实例。让我们详细了解一下`HibernateSessionFactory`类中的关键方法和其背后的原理。 1. **配置和初始化...

    hibernate自动生成关键映射以及工厂类,连接数据库

    hibernate自动生成关键映射以及工厂类,连接数据库弄好连接和设置hibernate...直接使用HibernateSessionFactory 工厂类调用方法测试就好了,方便简洁,还能提高编码效率。 本人亲自测试过,纯手打的。希望大家支持。

    Hibernate3使用经验

    此外,还可以使用框架提供的工具类 `HibernateSessionFactory` 来获取 `Session`,这样可以进一步简化代码并实现更好的资源管理。 ```java Session session = HibernateSessionFactory.getSession(); ``` #### 四...

    hibernate中的相关组件的介绍

    如果选择自定义配置文件的位置或名称,则需要通过`HibernateSessionFactory`类中的`CONFIG_FILE_LOCATION`属性来指定实际的配置文件路径。 **配置文件中的主要内容包括:** - **数据库连接信息**:包括数据库的URL...

    Hibernate工具类

    `HibernateUtil`会配置Hibernate的`hibernate.cfg.xml`配置文件,加载实体类,并根据配置创建SessionFactory实例。 2. **获取Session**: Session是与数据库交互的接口,提供了保存、更新、删除和查询对象的方法。在...

    JAVA 使用hibernate配置实例

    2. 创建实体类:为数据库表创建对应的Java类,并使用Hibernate的注解(如@Entity、@Table、@Id等)进行映射。 3. 配置Hibernate:创建一个hibernate.cfg.xml配置文件,设置数据库连接信息(如URL、用户名、密码)、...

    hibernate基本功能

    - 获取Session对象:通过`HibernateSessionFactory.getSession()`方法获取一个`Session`实例。 - 开始事务:调用`session.beginTransaction()`开始一个事务。 - 创建查询:使用`session.createQuery`创建HQL查询语句...

    Spring+Hibernate实现)Hibernate公用类

    然后,`EntityDaoImpl`实现类会利用Spring的`SessionFactory`和Hibernate的`Session`来实现这些方法。例如,`findById`的实现可能是这样的: ```java @Service public class EntityDaoImpl<T> implements EntityDao...

Global site tag (gtag.js) - Google Analytics