一、Configuration对象
功能:配置加载类,用于加载主配置,orm元数据加载。
1 //1、创建,调用空参构造(还没有读配置文件) 2 Configuration conf=new Configuration(); 3 //2、读取指令配置文件=>空参加载方法,加载src下的hibernate.cfg.xml文件 4 conf.configure(); 5 6 //3、读取指定orm元数据(扩展),如果主配置中已经引入映射配置,不需要手动加载 7 //conf.addResource(resourceName); 8 //conf.addClass(persistentClass); 9 10 //4、根据配置信息创建SessionFactory对象 11 SessionFactory sf = conf.buildSessionFactory();
二、SessionFactory对象
功能:用于创建操作数据库核心对象Session对象的工厂,简单说功能就一个——>创建session对象。
注意:1.SessionFactory负责保存和使用所有配置信息,消耗内存资源非常大
2.SessionFactory属于线程安全的对象设计
结论:保证在web项目中只创建一个SessionFactory
1 //5、获得session 2 //打开一个新的session对象 3 sf.openSession(); 4 //获得一个与线程绑定的session对象 5 sf.getCurrentSession();
在实际项目使用中,常常会抽取出一个HibernateUtils的工具类,用来提供Session对象。
Hibernate工具类:
1 package cn.itheima.utils; 2 3 import org.hibernate.Session; 4 import org.hibernate.SessionFactory; 5 import org.hibernate.cfg.Configuration; 6 7 public class HibernateUtils { 8 //保证web项目中只创建一个SessionFactory 9 private static SessionFactory sf; 10 11 static{ 12 Configuration conf=new Configuration().configure(); 13 sf = conf.buildSessionFactory(); 14 } 15 16 //获得session=>获得全新的session 17 public static Session openSession(){ 18 Session session = sf.openSession(); 19 return session; 20 } 21 22 //获得session=>获得与线程绑定的session 23 public static Session getCurrentSession(){ 24 Session session = sf.getCurrentSession(); 25 return session; 26 } 27 28 //测试一下工具类 29 public static void main(String[] args){ 30 System.out.print(HibernateUtils.openSession()); 31 } 32 }
三、Session对象
功能:表达Hibernate框架与数据库之间的连接(会话), 类似于JDBC年代的Connection对象,还可以完成对数据库中数据的增删改查操作。
session是Hibernate操作数据库的核心对象
1、获得事务
2、session的新增
3、session的查询(通过id,第二个参数要带数据类型,如下Long类型,在1后面添加l)
4、session的修改(通过id)
5、session的删除(通过id)
四、Transaction对象
功能:封装了事务的操作
1、打开事务
方式一:
方式二:
2、提交事务
3、回滚事务