`
kevin_wanwei
  • 浏览: 117581 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

形象理解hibernate中对象三种状态

阅读更多
public class QueryTest {	
	/***
	 * 形象理解Hibernate的三种状态
	 * 		Transient(瞬时态):DB无记录,和Session无关(有内在状态,无外在状态,不需要同步)
     * 		Persistent(持久态):DB有记录,和Session有关(有内在状态,有外在状态,Session作同步)
     * 		Detached(脱管态):DB有记录,和Session无关(有内在状态,有外在状态,手工同步)
     * 下面以一段Hibernate新增数据操作为例,让我们真正明白到底什么是Hibernate对象的三种状态
	 * @param args
	 * 2010-3-24
	 */
	public static void main(String args[]){
		//==========================瞬时态
		User u=new User();
		u.setName("wangwei");//当程序new一个对象时,这时它还没有和Session关联,数据库中也没有这个对象的记录,
							 //此时该对象的状态就被称为“瞬时态”
		u.setBirthday(new Date());
		//==========================瞬时态
		Session session=null;
		Transaction tx=null;
		try{
			session=HibernateUtil.getSession();
			tx=session.beginTransaction();
			//==========================持久态
			session.save(u);        //当session调用save()方法后,此时hibernate session中会有该对象,数据库也会有该对象的数据库(如果没有提交,数据库会自动回滚数据)
			u.setName("wangyechun");//在“瞬时态”中当对象状态发生改变时(也就是说对象中有属性值发生了改变),Hibernate 会同步更新该对象对应数据库中的状态。
									//hibernate这时我会生成一条插入和更新的语句来完成session和数据库的同步
									//Hibernate: insert into User (name, birthday) values (?, ?)
									//Hibernate: update User set name=?, birthday=? where id=?
									//这就是hibernate生成的两条sql语句
			//==========================持久态
			tx.commit();
		}finally{
			if(session!=null){
				session.close();
			}
			//============================脱管态
			System.out.println(u.getId());//当session被关闭以后此时的User 对象就变成了脱管状态了,它已经和session无关了
										  //它和“瞬时态”的区别是:瞬时态id没有值,而脱管态id是有值的。
			//============================脱管态
		}
	}
}

 

2
1
分享到:
评论

相关推荐

    面向对象技术与应用讲义

    7. **State Diagrams**(状态图):描述了对象在其生命周期内的各种状态及状态间的转换。 8. **Activity Diagrams**(活动图):用于表示系统的业务流程或者工作流。 9. **Component Diagrams**(组件图):展示了...

    java反序列化漏洞-金蛇剑之hibernate(上).pdf

    在描述的场景中,作者提到“金蛇剑”,这是用来比喻 Hibenate反序列化漏洞的一种形象说法,暗示着这个漏洞像一把锋利的剑,可能对系统造成深远的影响。Hibernate的核心功能是将Java对象(POJO)与数据库表进行映射,...

    商品库存管理系统

    2. MVC设计模式:Model-View-Controller(MVC)是一种常见的软件设计模式,将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。在库存管理系统中,模型负责处理业务逻辑和数据存储,...

    online-shopping:这是一个使用Spring MVC和Hibernate的在线购物项目

    在本项目中,Hibernate用于将Java对象与数据库表之间的映射,使得开发者可以避免编写大量的SQL语句。通过配置Hibernate实体类,项目可以实现对数据库的增删查改操作,提高了代码的可读性和可维护性。 **3. 数据库...

    酒店管理系统

    满汉楼项目很可能是这个酒店管理系统的核心代码库,这个名字可能是对酒店餐饮业务的一种形象化比喻。在这个项目中,我们可以期待看到以下核心组件: 1. **用户界面(View)**:这部分可能包含了各种用于用户交互的...

    基于Android无线电子菜谱系统开发服务器端毕业论文.doc

    4. **Struts、Spring和Hibernate框架**:这三个都是Java开发中的常用框架。Struts是MVC(Model-View-Controller)架构的实现,用于处理HTTP请求和控制应用程序流程;Spring是一个全面的后端开发框架,提供依赖注入、...

    该文件是一种基于JavaWeb的企业门户网站

    Hibernate则是强大的ORM(对象关系映射)工具,简化数据库操作。 6. **数据库管理**: 企业门户网站通常需要存储大量数据,如用户信息、文章内容、产品资料等,因此需要与数据库进行交互。MySQL、Oracle或SQL Server...

    企业门户网站.zip

    企业门户网站是一种专门为企事业单位设计的在线平台,它集成了信息发布、产品展示、在线服务、客户互动等多种功能,旨在提升企业的品牌形象,增强与客户的沟通效率。本项目基于Java技术栈进行开发,提供了完整的源码...

    MyEclipse Java 开发中文教程.pdf

    本书籍在描述上文知识时,还通过实例演示、实战案例以及全程视频讲解的方式,使得教程内容更加生动形象,便于读者学习和理解。通过本书的学习,即便是初学者也能够掌握MyEclipse的使用方法,并能进行基础的Java开发...

    java软件开发简历模板.pdf

    Java是一种广泛使用的编程语言,具有多种特性,包括简单性、面向对象、分布式处理、解释执行、强健安全性、平台中立性、可移植性、高性能以及多线程。这份简历模板为求职者提供了构建自己专业形象的框架。 在【基本...

    Manning - Java Reflection in Action.pdf

    书中克服了反射作为神秘和深奥哲学追求的形象,也避免了一套混乱且容易出错的编码技巧的陷阱。书中的模式和习语可以帮助解决常见问题,许多示例可以直接适应于各种领域,如XML处理、自动化软件测试和程序分析工具。...

    ate-samples:这家商店吃了样品项目

    "这家商店吃了样品项目"这部分可能是一种形象的表述,暗示这个项目是用来在模拟的商店环境中尝试或演示各种功能的。 【描述分析】 描述中的“吃样品”可能是在进一步解释项目的目的,即通过试用、体验或测试“样品...

    jshop3完美的界面

    同时,可能会利用JDBC(Java Database Connectivity)进行数据库操作,或者使用ORM(对象关系映射)框架如Hibernate,以简化数据访问。 6. **安全机制**:作为电商系统,安全性至关重要。jshop3可能采用了HTTPS协议...

    rich4App.zip_Java编程_Java_

    Java编程是一种广泛应用于企业级应用开发的高级编程语言,以其跨平台、面向对象和强大的库支持而闻名。在Java的世界里,JavaServer Faces(JSF)是Oracle公司推出的一种用于构建用户界面的MVC(模型-视图-控制器)...

Global site tag (gtag.js) - Google Analytics