1 Configuration
package cn.itheima.b_api; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.junit.Test; import cn.itheima.domain.Customer; //学习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(); } }
2 SessionFactory
package www.test.b_api; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.junit.Test; //学习SessionFactory对象 // SessionFactory功能: 用于创建操作数据库核心对象session对象的工厂. // 简单说功能就一个---创建session对象 //注意:1.sessionfactory 负责保存和使用所有配置信息.消耗内存资源非常大. // 2.sessionFactory属于线程安全的对象设计. //结论: 保证在web项目中,只创建一个sessionFactory. 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(); } }
3 Session
package www.test.b_api; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.junit.Test; import www.test.domain.Customer; //学习Session对象 //session对象功能: 表达hibernate框架与数据库之间的连接(会话).session类似于 // JDBC年代的connection对象. 还可以完成对数据库中数据的增删改查操作. // session是hibernate操作数据库的核心对象 public class Demo3 { @Test //事务操作 public void fun1(){ //1 创建,调用空参构造 Configuration conf = new Configuration().configure(); //2 根据配置信息,创建 SessionFactory对象 SessionFactory sf = conf.buildSessionFactory(); //3 获得session Session session = sf.openSession(); //4 session获得操作事务的Transaction对象 //获得操作事务的tx对象 //Transaction tx = session.getTransaction(); //开启事务并获得操作事务的tx对象(建议使用) Transaction tx2 = session.beginTransaction(); //---------------------------------------------- //---------------------------------------------- tx2.commit();//提交事务 tx2.rollback();//回滚事务 session.close();//释放资源 sf.close();//释放资源 } @Test //session的新增 public void fun2(){ //1 创建,调用空参构造 Configuration conf = new Configuration().configure(); //2 根据配置信息,创建 SessionFactory对象 SessionFactory sf = conf.buildSessionFactory(); //3 获得session Session session = sf.openSession(); //4 session获得操作事务的Transaction对象 //获得操作事务的tx对象 //Transaction tx = session.getTransaction(); //开启事务并获得操作事务的tx对象(建议使用) Transaction tx2 = session.beginTransaction(); //---------------------------------------------- Customer c = new Customer(); c.setCust_name("微软"); session.save(c); //---------------------------------------------- tx2.commit();//提交事务 session.close();//释放资源 sf.close();//释放资源 } @Test //session的查询 //查询id为1的customer对象 public void fun3(){ //1 创建,调用空参构造 Configuration conf = new Configuration().configure(); //2 根据配置信息,创建 SessionFactory对象 SessionFactory sf = conf.buildSessionFactory(); //3 获得session Session session = sf.openSession(); //4 session获得操作事务的Transaction对象 //获得操作事务的tx对象 //Transaction tx = session.getTransaction(); //开启事务并获得操作事务的tx对象(建议使用) Transaction tx2 = session.beginTransaction(); //---------------------------------------------- Customer customer = session.get(Customer.class, 1L); //L 表示long型 System.out.println(customer); //---------------------------------------------- tx2.commit();//提交事务 session.close();//释放资源 sf.close();//释放资源 } @Test //session的修改 //修改id为1的customer对象的name属性为阿里巴巴 public void fun4(){ //1 创建,调用空参构造 Configuration conf = new Configuration().configure(); //2 根据配置信息,创建 SessionFactory对象 SessionFactory sf = conf.buildSessionFactory(); //3 获得session Session session = sf.openSession(); //4 session获得操作事务的Transaction对象 //获得操作事务的tx对象 //Transaction tx = session.getTransaction(); //开启事务并获得操作事务的tx对象(建议使用) Transaction tx2 = session.beginTransaction(); //---------------------------------------------- //1 获得要修改的对象 Customer c = session.get(Customer.class, 1l); //2 修改 c.setCust_name("阿里巴巴"); //3 执行update session.update(c); //---------------------------------------------- tx2.commit();//提交事务 session.close();//释放资源 sf.close();//释放资源 } @Test //session的删除 //删除id为1的customer对象 public void fun5(){ //1 创建,调用空参构造 Configuration conf = new Configuration().configure(); //2 根据配置信息,创建 SessionFactory对象 SessionFactory sf = conf.buildSessionFactory(); //3 获得session Session session = sf.openSession(); //4 session获得操作事务的Transaction对象 //获得操作事务的Transaction对象 Transaction tx = session.getTransaction(); tx.begin(); //开启事务并获得操作事务的Transaction对象(建议使用) Transaction tx2 = session.beginTransaction(); //---------------------------------------------- //1 获得要修改的对象 Customer c = session.get(Customer.class, 1l); //2 调用delete删除对象 session.delete(c); //---------------------------------------------- tx2.commit();//提交事务 session.close();//释放资源 sf.close();//释放资源 } }