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是有值的。
//============================脱管态
}
}
}
分享到:
相关推荐
7. **State Diagrams**(状态图):描述了对象在其生命周期内的各种状态及状态间的转换。 8. **Activity Diagrams**(活动图):用于表示系统的业务流程或者工作流。 9. **Component Diagrams**(组件图):展示了...
在描述的场景中,作者提到“金蛇剑”,这是用来比喻 Hibenate反序列化漏洞的一种形象说法,暗示着这个漏洞像一把锋利的剑,可能对系统造成深远的影响。Hibernate的核心功能是将Java对象(POJO)与数据库表进行映射,...
2. MVC设计模式:Model-View-Controller(MVC)是一种常见的软件设计模式,将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。在库存管理系统中,模型负责处理业务逻辑和数据存储,...
在本项目中,Hibernate用于将Java对象与数据库表之间的映射,使得开发者可以避免编写大量的SQL语句。通过配置Hibernate实体类,项目可以实现对数据库的增删查改操作,提高了代码的可读性和可维护性。 **3. 数据库...
满汉楼项目很可能是这个酒店管理系统的核心代码库,这个名字可能是对酒店餐饮业务的一种形象化比喻。在这个项目中,我们可以期待看到以下核心组件: 1. **用户界面(View)**:这部分可能包含了各种用于用户交互的...
4. **Struts、Spring和Hibernate框架**:这三个都是Java开发中的常用框架。Struts是MVC(Model-View-Controller)架构的实现,用于处理HTTP请求和控制应用程序流程;Spring是一个全面的后端开发框架,提供依赖注入、...
Hibernate则是强大的ORM(对象关系映射)工具,简化数据库操作。 6. **数据库管理**: 企业门户网站通常需要存储大量数据,如用户信息、文章内容、产品资料等,因此需要与数据库进行交互。MySQL、Oracle或SQL Server...
企业门户网站是一种专门为企事业单位设计的在线平台,它集成了信息发布、产品展示、在线服务、客户互动等多种功能,旨在提升企业的品牌形象,增强与客户的沟通效率。本项目基于Java技术栈进行开发,提供了完整的源码...
本书籍在描述上文知识时,还通过实例演示、实战案例以及全程视频讲解的方式,使得教程内容更加生动形象,便于读者学习和理解。通过本书的学习,即便是初学者也能够掌握MyEclipse的使用方法,并能进行基础的Java开发...
Java是一种广泛使用的编程语言,具有多种特性,包括简单性、面向对象、分布式处理、解释执行、强健安全性、平台中立性、可移植性、高性能以及多线程。这份简历模板为求职者提供了构建自己专业形象的框架。 在【基本...
书中克服了反射作为神秘和深奥哲学追求的形象,也避免了一套混乱且容易出错的编码技巧的陷阱。书中的模式和习语可以帮助解决常见问题,许多示例可以直接适应于各种领域,如XML处理、自动化软件测试和程序分析工具。...
"这家商店吃了样品项目"这部分可能是一种形象的表述,暗示这个项目是用来在模拟的商店环境中尝试或演示各种功能的。 【描述分析】 描述中的“吃样品”可能是在进一步解释项目的目的,即通过试用、体验或测试“样品...
同时,可能会利用JDBC(Java Database Connectivity)进行数据库操作,或者使用ORM(对象关系映射)框架如Hibernate,以简化数据访问。 6. **安全机制**:作为电商系统,安全性至关重要。jshop3可能采用了HTTPS协议...
Java编程是一种广泛应用于企业级应用开发的高级编程语言,以其跨平台、面向对象和强大的库支持而闻名。在Java的世界里,JavaServer Faces(JSF)是Oracle公司推出的一种用于构建用户界面的MVC(模型-视图-控制器)...