package com.hanqi.test; import static org.junit.Assert.*; import java.util.Date; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.hanqi.entity.User; public class Test01 { private ServiceRegistry sr =null; private Session se =null; private Transaction ts = null; private SessionFactory sf = null; //在测试用例方法被执行之前自动执行的方法 //一般用来初始化公用的对象 //前置方法 @Before public void init() { //1.获取配置文件 Configuration cfg = new Configuration().configure(); //2.注册配置 sr =new StandardServiceRegistryBuilder() .applySettings(cfg.getProperties()).build(); //3. 获取Session-Factory(相当于JDBCd 连接) sf = cfg.buildSessionFactory(sr); System.out.println(sf); //4.产生Session(回话) se = sf.openSession(); //创建 //5.启动事务 ts = se.beginTransaction(); } //后置方法 //一般用来释放资源 @After public void destroy() { //7.提交事务 ts.commit(); //8释放资源 se.close(); sf.close(); } //测试Hibernate连接数据库 @Test public void test() { //1.获取配置文件 Configuration cfg = new Configuration().configure(); //2.注册配置 ServiceRegistry sr =new StandardServiceRegistryBuilder() .applySettings(cfg.getProperties()).build(); //3. 获取Session-Factory(相当于JDBCd 连接) SessionFactory sf = cfg.buildSessionFactory(sr); System.out.println(sf); //4.产生Session(回话) Session se = sf.openSession(); //创建 //5.启动事务 Transaction ts = se.beginTransaction(); //6.操作数据库 //添加数据 //实例化的新的对象,处于临时状态 User u1 = new User(); u1.setBirthday(new Date()); u1.setMoney(2000); u1.setPassword("111111"); u1.setUserName("测试1"); //u1.setUserId(2);//自然主键 //保存数据 //透过save方法吧对象从临时状态变成持久化状态 se.save(u1);//添加数据 System.out.println("u1="+u1); //7.提交事务 ts.commit(); //释放资源 se.close(); sf.close(); } //测试查询 @Test public void test01() { //查询数据 //提供两个参数 //1需要返回哪一个持久化类的实例 //2实例的标识(数据的主键值) //通过Session的get方法获得的对象处于持久化状态 User u2 =(User)se.get(User.class, 3);//查找 u2.setUserName("修改的");//修改 System.out.println(u2); //删除 se.delete(u2);//使持久化对象进入删除状态 } @Test public void test02()//测试缓存 { User u1 = (User) se.get(User.class, 4);//立即加载数据 System.out.println("get老付变傻逼之后"); System.out.println(u1); User u2 =(User) se.get(User.class, 14); System.out.println(u2); } @Test public void tese03() { User u1 =(User)se.load(User.class, 14);//延时加载数据(懒加载) System.out.println("load后"); System.out.println(u1);//当使用时才加载 } //测试游离状态 @Test public void test04() { User u1=(User)se.get(User.class, 4);//得到持久化状态的对象 System.out.println("u1="+u1); //关闭Session se.close(); //使u1进入游离状态 u1.setUserName("测试游离111"); u1.setUserId(null);//把id设为null System.out.println("这是啥,重新创建session"); //重新创建session se=sf.openSession(); ts=se.beginTransaction();//重新开启事务 //se.saveOrUpdate(u1); System.out.println("u1="+u1); } }