博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate中的持久化上下文与Entity对象的状态
阅读量:4179 次
发布时间:2019-05-26

本文共 802 字,大约阅读时间需要 2 分钟。

Hibernate实质上是一种ORM的解决方案。在这种ORM中,与关系数据库中存储的数据相对应的,就是Hibernate中的持久化上下文中的对象。

数据库中的数据由关系数据库维护,Hibernate中的对象由持久化上下文维护。

在Hibernate中,提供了两种持久化上下文的实现,一种是Hibernate自身提供的Native API,即org.hibernate.Session。另一种是Hibernate实现的JPA API,即javax.persistence.EntityManager。

关系数据库与持久化上下文一起,就构成了持久化数据(即Entity对象)的生存环境。在这个生存环境中,不同时刻一个Entity对象可能具有不同的状态。事实上,持久化上下文的主要目的就是操作Entity对象的状态。

Entity对象的状态

  • transient
Entity实例已经被初始化,但是未与Session关联,Entity实例中没有标识符
在数据库中没有与Entity实例对应的记录
通过Session的save()、persist()方法与Session关联,并转换为persistent状态
  • managed/persistent
Entity实例与Session关联,并且有了标识符
数据库中未必有对应的记录,因为可能只是在缓存中,为持久化
在Session结束时或者调用Session的flush()方法,Entity实例同步持久化到数据库
  • detached
Entity实例未与Session关联,但有标识符
数据库中有对应的记录
可以调用Session的update()、merge()方法再次与Session关联,并转换为persistent状态
  • removed
Entity实例与Session关联,并且有标识符,但是将会被Session删除
数据库中有对应的记录,但是将会被数据库删除

转载地址:http://zilai.baihongyu.com/

你可能感兴趣的文章
json, recyclerView问题
查看>>
cmake处理多源文件目录的方法
查看>>
Service Intent must be explicit
查看>>
android studio SDK开发
查看>>
studio 统计代码的行数
查看>>
字符数组和16进制互换
查看>>
德鲁伊druid 数据源配置
查看>>
NO message found under code 'xxxxx' locale 'zh_CN'
查看>>
Jenkins-部署(一)
查看>>
Jenkins-配置邮箱
查看>>
六、同一个tomcat多个web应用共享session
查看>>
Tomcat配置注意事项
查看>>
Tomcat下面的配置在每次Eclipse编译后,修改好的配置会还原
查看>>
Eclipse代码格式模板导入
查看>>
list与Set、Map区别及适用场景
查看>>
Jenkins自动部署Maven 多个子项目
查看>>
Oracle连接DB2
查看>>
CXF配置
查看>>
WSDL文件解析
查看>>
MyEclipse安装Flash Builder插件
查看>>