Hibernate chapter 3.Persistence Contexts
来源:互联网 发布:淘宝crm客户管理系统 编辑:程序博客网 时间:2024/04/28 13:41
内容列表
org.hibernate.Session API和javax.persistence.EntityManager API代表一个处理持续化数据的上下文。即persistence context。持续化数据有一个状态与持续化上下文和底层数据库关联。
Entity states(实体状态)
- new ,或者persistent - 实体已经被实例化并且还没有与一个持续化上下文关联。其在数据库中没有持续化的表示并且没有指定标示。
- managed,或者persistent - 实体关联了标示并且与一个持续化上下文关联
- detached - 虽然实体有一个关联的标示,但不再关联一个持续化上下文。(通常因为关闭了持续化上下文或者从上下文中没收了实例)
- removed - 实体有一个关联的标示并且与一个持续化上下文关联,然而其计划从数据库中移除
在Hibernate的本地API中,持续化上下文定义在org.hibernate.Session中。在JAP中,持续化上下文定义在javax.persistence.EntityManager。这两个API中有大量方法处理不同状态之间的移动实体。
3.1 Making entities persistent (实体持久化)
一旦创建了一个新的实例,其为new状态。你可以通过org.hibernate.Session或者javax.persistence.EntityManager关联这些实例从而持久化。
Example 3.1 Example of making an entity persistent
DomesticCat fritz = new DomesticCat();fritz.setColor( Color.GINGER );fritz.setSex( 'M' );fritz.setName( "Fritz" );session.save( fritz );
DomesticCat fritz = new DomesticCat();fritz.setColor( Color.GINGER );fritz.setSex( 'M' );fritz.setName( "Fritz" );entityManager.persist( fritz );
org.hibernate.session中也有一个persist方法,其与javax.persistence.EntityManager中的persist方法有相同的语义。两个包中的persist方法实现了委托机制。
如果上述的实体有一个生成的标示,当调用save或者persist方法时,标示就与实例关联。如果标示没有自动创建,应用程序指定的key值得在save或者persist方法调用前赋值给这个实例。
3.2 Deleting entities(删除实例)
实体也可以别删除
Example 3.2. Example of deleting an entity
session.delete( fritz );
entityManager.remove( fritz );
Hibernate可以删除detached状态,这点很重要值得注意。然而在JPA中,不允许这样做。区别是传给org.hibernate.Session的delete方法的实例状态可以是detached或者managed,而传给javax.persistence.EntityManager必须是managed状态
3.3 Obtain an entity reference without initializing its data(获取不需要初始化数据的实体引用)
有时候涉及到延迟加载,获取一个实体引用而不必加载其数据是很有用的。最大的通用情况是需要在一个实体和另一个已经存在的实体之间创建一个关联。
Example 3.3. Example of obtaining an entity reference without initializing its data
Book book = new Book();
book.setAuthor( session.byId( Author.class ).getReference( authorId ) );
Book book = new Book();
book.setAuthor( entityManager.getReference( Author.class, authorId ) );
- Hibernate chapter 3.Persistence Contexts
- ORM介绍-摘自Java Persistence with Hibernate (first chapter)
- JDBC、Hibernate、Java Persistence
- Java persistence with hibernate
- Java Persistence with Hibernate
- Java Persistence with Hibernate
- Hibernate Object Persistence
- Hibernate 之 Persistence
- Hibernate 之 Persistence
- chapter 12 Data Files and Persistence
- Hibernate Entity / Persistence LifeCycle States
- hibernate--错误:javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey
- Hibernate异常:NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/
- ATL Internals 2ed复习.chapter 7.COM Persistence
- ATL Internals 2ed复习.chapter 7.ATL Persistence implements
- hibernate:javax/persistence/EntityListeners(转)
- hibernate:javax/persistence/EntityListeners(转)
- hibernate java.lang.ClassNotFoundException: javax.persistence.EntityListeners
- Visual C++编译器常用选项设置总结
- 用C语言怎么实现复制自己
- sqlite学习笔记1:编译数据库
- 后缀数组suffix array
- layout_weight 小白的理解之我的地盘听我的!(一)
- Hibernate chapter 3.Persistence Contexts
- 注册c#中软件运行中的异常事件,并记录日志
- JavaFX学习之道:File Chooser
- HDU-1067-Gap(BFS+HASH)
- Tomcat启动找不到StrutsPrepareAndExecuteFilter
- if语句和FOR语句 BAT
- android开发:android获取IMEI、MSISDN、ICCID、IMSI
- 聚类算法学习笔记(1)
- 最好玩的休闲捕鱼游戏:“全球捕鱼”