Hibernate对象的状态,session的clear()和evict()
来源:互联网 发布:1936奥运会知乎 编辑:程序博客网 时间:2024/05/21 15:48
public class PersonTest {private static SessionFactory sessionFactory = null;static{Configuration configuration = new Configuration();//加载配置文件,路径为classPath下的,名字为hibernate.cfg.xml"的文件configuration.configure();//configuration.configure("/com/xxc/test/hibernate.cfg.xml");sessionFactory = configuration.buildSessionFactory();}/** * 添加一个person */@Testpublic void savePerson(){Session session = sessionFactory.openSession();Transaction transaction = session.beginTransaction();Person p = new Person();p.setPname("xxc1");p.setPsex("man1");//执行save语句的时候,就是将临时状态对象改成和session有关系的持久化状态,但是并不是马上执行insert语句session.save(p);//因为修改的是持久化状态对象,所以不需要update语句,当事务提交的时候会执行update语句p.setPsex("女");/** * 在commit的时候会发生如下两句sql操作 * 由save引起的:insert into Person (pname, psex, pid) values (?, ?, ?) * 由update引起的:update Person set pname=?, psex=? where pid=? */transaction.commit();session.close();}/** * 修改一个person */@Testpublic void editPerson(){Session session = sessionFactory.openSession();Transaction transaction = session.beginTransaction();//操作持久化状态的数据,修改了其中的属性,不需要update就能同步到数据库Person person = (Person)session.get(Person.class, 1L);person.setPname("皮卡丘111");//这句话在这里相当于废话//session.update(person);transaction.commit();session.close();}@Testpublic void editPerson2(){Session session = sessionFactory.openSession();Transaction transaction = session.beginTransaction();Person p1 = new Person();//临时状态p1.setPname("p1");//临时状态p1.setPsex("man1");//临时状态session.save(p1);//持久化状态transaction.commit();session.close();//关闭session//重新开启一个sessionsession = sessionFactory.openSession();//重新开启一个事务transaction = session.beginTransaction();//将p1对象的属性改变,但是此时的p1对象对于当前的session来说,p1是个临时对象,所以在事务提交的时候并不会执行update语句p1.setPname("p2");p1.setPsex("man2");//session.update(p1);//只有写了这句话,才会将p1对象与新的session关联起来,使p1成为持久化状态transaction.commit();session.close();}@Testpublic void testClear(){Session session = sessionFactory.openSession();Transaction transaction = session.beginTransaction();Person p1 = new Person();//临时状态p1.setPname("p1");//临时状态p1.setPsex("man1");//临时状态session.save(p1);//持久化状态session.clear();//清空session中所有的对象transaction.commit();//所以所这里不会进行insert操作了session.close();}@Testpublic void testEvict(){Session session = sessionFactory.openSession();Transaction transaction = session.beginTransaction();Person p1 = (Person) session.get(Person.class, 1L);//持久化状态p1.setPsex("不男不女");session.evict(p1);//将session中将持久化状态的p1对象改编成临时状态对象session.update(p1);//将p1对象从临时化状态改为持久化状态transaction.commit();session.close();}}
- Hibernate对象的状态,session的clear()和evict()
- Hibernate session 的evict()和clear()的区别
- hibernate session中clear、evict、flush方法的区别
- Hibernate Session中flush、clear、evict方法的区别
- Hibernate中session的clear(),flush(),evict()方法详解
- Hibernate中session的clear(),flush(),evict()方法详解
- Hibernate中session的clear(),flush(),evict()方法详解
- Hibernate的evict方法和clear方法的区别
- Hibernate的evict方法和clear方法的区别
- Hibernate的evict方法和clear方法的区别
- Hibernate的evict方法和clear方法的区别
- Hibernate的evict方法和clear方法的区别
- Hibernate的evict方法和clear方法的区别
- Hibernate的evict方法和clear方法的区别
- Hibernate的evict()方法和clear()方法、flush()方法
- Hibernate一级缓存管理-evict和clear的用法
- Hibernate的clear(),flush(),evict()方法详解
- Hibernate的clear(),flush(),evict()方法详解
- grub使用说明
- Oracle比较时间大小
- linux grep 匹配某行不以800开头
- Python中的module,library,package之间的区别
- Oracle进程类别
- Hibernate对象的状态,session的clear()和evict()
- word插入图表目录的时候同时插入了原图的解决办法
- linux 完全卸载mysql数据库
- 写缓冲区时两次使用 inet_ntoa 的后果
- LEADTOOLS WinRT OCR识别代码示例
- <ctype.h> 字符测试函数:字符大小转换函数
- VS2008建立的Qt工程(或项目)生成pro文件
- android display:GPU驱动框架: Imagination Technologies Ltd的PVR框架-小结
- 英文数学符号的读法