02-Hibernate的API详解
-
hibernate框架API详解
-
Configuration对象
Configuration功能:
配置加载类,用于加载主配置,orm元数据加载
package com.qingzi.text.b_api; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.junit.Test; //学习Configuration //Configuration功能: 配置加载类,用于加载主配置,orm元数据加载 public class Demo { @Test public void fun1(){ //1.创建,调用空参方法 Configuration conf = new Configuration(); //2.读取指定主配置文件 = 空参加载方法,加载src下的hibernate.cfg.xml文件 conf.configure(); //3.读取指定orm元数据(扩展)如果主配置中引入映射配置,就不需要手动加载 //conf.addResource(resourceName); //conf.addClass(persistentClass); //4.根据配置信息,创建SessionFactory对象 SessionFactory sf = conf.buildSessionFactory(); } }
-
SessionFactory对象
SessionFactory功能:
用于创建操作数据库的核心对象session对象的工厂,简单的说功能就一个----创建session对象
注意:
-
SessionFactory负责保存和使用所有配置信息,消耗内存资源非常大。
-
SessionFactory属于线程安全的对象设计
结论: 保证web项目中,只创建一个SessionFactory
package com.qingzi.text.b_api; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.junit.Test; public class Demo2 { @Test public void fun1(){ //1.创建,调用空参方法 Configuration conf = new Configuration(); //2.读取指定主配置文件 = 空参加载方法,加载src下的hibernate.cfg.xml文件 conf.configure(); //3.读取指定orm元数据(扩展)如果主配置中引入映射配置,就不需要手动加载 //conf.addResource(resourceName); //conf.addClass(persistentClass); //4.根据配置信息,创建SessionFactory对象 SessionFactory sf = conf.buildSessionFactory(); //------------------------------------- //5.获得session //打开一个新的session对象 sf.openSession(); //获取一个与线程绑定的session对象 sf.getCurrentSession(); } }
-
-
Session对象
Session对象的功能:
表达hibernate框架与数据库之间的连接(会话),session类似于jdbc年代的connection对象,还可以完成对数据库中的增删改查操作,session是hibernate操作数据库的核心对象
package com.qingzi.text.b_api; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.junit.Test; public class Demo3 { @Test public void fun1(){ //1.创建空参配置 Configuration conf = new Configuration(); //2.加载hibernate主配置 conf.configure(); //3.创建sessionFactory工厂以便于创建session对象 SessionFactory sf = conf.buildSessionFactory(); //4.获取一个新的session对象 Session session = sf.openSession(); //5.获取一个操作事务的Transaction对象 Transaction tx = session.getTransaction(); //5.开启事务并获得操作失误的tx对象(推荐使用) Transaction tx2 = session.beginTransaction(); //----------------------------------------- //--------------------------------------- tx2.commit();//提交事务 //tx2.rollback(); //回滚事务 session.close(); //释放资源 sf.close(); //释放资源 } }
-
hibernate框架中使用session对象对数据进行增删改查
-
session新增功能
//session新增功能 public void fun2(){ //1.创建空参配置 Configuration conf = new Configuration(); //2.加载hibernate主配置 conf.configure(); //3.创建sessionFactory工厂以便于创建session对象 SessionFactory sf = conf.buildSessionFactory(); //4.获取一个新的session对象 Session session = sf.openSession(); //5.获取一个操作事务的Transaction对象 //Transaction tx = session.getTransaction(); //5.开启事务并获得操作失误的tx对象(推荐使用) Transaction tx2 = session.beginTransaction(); //----------------------------------------- Customer c = new Customer(); c.setCust_name("清子"); session.save(c); //--------------------------------------- tx2.commit();//提交事务 //tx2.rollback(); //回滚事务 session.close(); //释放资源 sf.close(); //释放资源 }
-
session删除功能
//session删除功能 //删除ID为8的customer对象 public void fun3(){ //1.创建空参配置 Configuration conf = new Configuration(); //2.加载hibernate主配置 conf.configure(); //3.创建sessionFactory工厂以便于创建session对象 SessionFactory sf = conf.buildSessionFactory(); //4.获取一个新的session对象 Session session = sf.openSession(); //5.获取一个操作事务的Transaction对象 //Transaction tx = session.getTransaction(); //5.开启事务并获得操作失误的tx对象(推荐使用) Transaction tx2 = session.beginTransaction(); //----------------------------------------- Customer c = session.get(Customer.class, 8L); session.delete(c); //--------------------------------------- tx2.commit();//提交事务 //tx2.rollback(); //回滚事务 session.close(); //释放资源 sf.close(); //释放资源 }
-
session修改功能
//session修改功能 //修改ID为11的customer对象的name属性为潭州教育程序员 public void fun4(){ //1.创建空参配置 Configuration conf = new Configuration(); //2.加载hibernate主配置 conf.configure(); //3.创建sessionFactory工厂以便于创建session对象 SessionFactory sf = conf.buildSessionFactory(); //4.获取一个新的session对象 Session session = sf.openSession(); //5.获取一个操作事务的Transaction对象 //Transaction tx = session.getTransaction(); //5.开启事务并获得操作失误的tx对象(推荐使用) Transaction tx2 = session.beginTransaction(); //----------------------------------------- Customer c = session.get(Customer.class, 11L); c.setCust_name("谭州程序员"); session.update(c); //--------------------------------------- tx2.commit();//提交事务 //tx2.rollback(); //回滚事务 session.close(); //释放资源 sf.close(); //释放资源 }
-
session查询功能
//session修改功能 //查询功能 public void fun5(){ //1.创建空参配置 Configuration conf = new Configuration(); //2.加载hibernate主配置 conf.configure(); //3.创建sessionFactory工厂以便于创建session对象 SessionFactory sf = conf.buildSessionFactory(); //4.获取一个新的session对象 Session session = sf.openSession(); //5.获取一个操作事务的Transaction对象 //Transaction tx = session.getTransaction(); //5.开启事务并获得操作失误的tx对象(推荐使用) Transaction tx2 = session.beginTransaction(); //----------------------------------------- Customer c = session.get(Customer.class, 11L); System.out.println(c.toString()); //--------------------------------------- tx2.commit();//提交事务 tx2.rollback(); //回滚事务 //session.close(); //释放资源 sf.close(); //释放资源 }
-
-
HibernateUtils工具类的编写
package com.qingzi.utils; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtils { private static SessionFactory sf; static{ //1.创建,调用空参方法,并获取hibernate配置 Configuration conf = new Configuration(); //2.根据配置信息,创建SessionFactory对象 sf = conf.buildSessionFactory(); } //获得session => 获得全新session public static Session openSession(){ //获得session Session session = sf.openSession(); return session; } //获得session => 获得与线程绑定的session public static Session getCurrentSession(){ //获得session Session session = sf.getCurrentSession(); return session; } }