码迷,mamicode.com
首页 > Web开发 > 详细

(09)Hibernate中对象的状态

时间:2016-07-13 12:07:03      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:hibernate


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());
	}
}


(09)Hibernate中对象的状态

标签:hibernate

原文地址:http://lsieun.blog.51cto.com/9210464/1825929

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!