标签: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