标签:hibernate
Hibernate中对象的状态: 临时/瞬时状态、持久化状态、游离状态。
序号 | 状态 | 特点 |
---|---|---|
1 | 临时状态 | a. 直接new出来的对象; 【内存】 b. 不处于session的管理;【session】 c. 数据库中没有对象的记录;【数据库】 |
2 | 持久化状态 | a. 处于session的管理; b. 数据库中有对应的记录; 说明:当调用session的save/saveOrUpdate/get/load/list等方法的时候,对象就是持久化状态。 处于持久化状态的对象,当对对象属性进行更改的时候,会反映到数据库中! |
3 | 游离状态 | a. 不处于session的管理; b. 数据库中有对应的记录 c. Session关闭后,对象的状态; |
对象状态的转换App_Status.java
package com.rk.hibernate.i_status; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.classic.Session; import org.junit.Test; public class App_Status { private static SessionFactory sf; static { sf = new Configuration() .configure() .addClass(User.class) .buildSessionFactory(); } @Test public void testStatus() { Session session = sf.openSession(); session.beginTransaction(); // 创建对象 【临时状态】 // User u1 = new User(); // u1.setUsername("Lucy"); // 保存 【持久化状态】 // session.save(u1); // u1.setUsername("Tom"); // 查询 User u2 = (User) session.get(User.class, 2); System.out.println(u2); u2.setUsername("Jack");// hibernate会自动与数据库匹配(一级缓存),如果一样(也就是原来的名字就是Jack),就不更新数据库 session.getTransaction().commit(); session.close(); // 打印 【游离状态】 u2.setUsername("Naruto"); System.out.println(u2.getUserId()); System.out.println(u2.getUsername()); } }
标签:hibernate
原文地址:http://lsieun.blog.51cto.com/9210464/1825929