Hibernate的几个概念

本文深入探讨了Hibernate框架中的SessionFactory、Session和Transaction的概念,以及可持久化对象的三种状态:临时、持久化和分离状态。介绍了这些概念在实际应用中的作用与区别,为开发者提供了一个全面的Hibernate基础知识框架。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hibernate的几个概念

Hibernate中几个常用的概念

1SessionFactoryorg.hibernate.SessionFactory):一个线程安全的Session工厂类,能为不同的线程生成不同的SessionSessionFactory维护着Session相关的资源,包括数据库连接池、缓存数据等

2Session(org.hibernate.Session)Session代表用户的一次操作。Session的生命周期很短,在操作开始时通过执行SessionFactory.openSession()产生,在操作结束时通过执行session.close()关闭。Session维护着相关的资源,包括Transaction、当前数据库连接等

3Transactionorg.hibernate.Transaction):Transaction代表一次事务,事务内包含若干的数据库修改,事务提交后才生效。如果事务失败或者回滚,所有的修改都会失效。Hibernate的事务不同于数据库的事务。Hibernate可能使用各种机制保证事务性,包括JTA、第三方事务管理、数据库事务等。

可持久化对象的状态

1、临时状态(Transient):对象在保存进数据库之前为临时状态。这时候数据库中没有该对象的信息,该对象的Id属性也为空。如果没有被持久化,程序退出时临时状态的对象信息将会丢失。

2、持久化状态(Persistent):对象在保存进数据库后或者从数据库中加载后、并且没有脱离Session时为持久化状态。这时候数据库中有该对象的信息,该对象的id为数据库中对应记录的主键值。由于Session中,持久化状态的对象可以执行任何有关数据库的操作,例如获取集合属性的值等。

3、分离状态(Detached):分离状态是对象曾经处于持久化状态、但是现在已经离开Session了。虽然分离状态的对象有id值,有对应的数据库记录,但是已经无法执行有关数据库的操作。例如,读取延迟加载的集合属性,可能会抛出LazyInitializaException

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值