课程提纲 口第一部分Java EE基础 口第二部分Java Web:开发 口第三部分JSF框架 口第四部分EJB ◆第13章JPA进阶 JPQL (Java Persistence Query Language) 口第五部分JPA 口第六部分SSH框架 Java EE技术 ·1。西北农林科大学信息工程学院本科生课程
课程提纲 第一部分 Java EE基础 第二部分 Java Web开发 第三部分 JSF框架 第四部分 EJB ◆第13章 JPA进阶 JPQL (Java Persistence Query Language) 第五部分 JPA 第六部分 SSH框架 Java EE技术 •1 信息工程学院本科生课程
主要内容 冬实体的状态及操作: 实体主键与实体属性: 。主键生成策略,复合主键,嵌入式主键 实体属性:类型、加载方式等 实体关系映射: 。关联关系:一对一、一对多与多对一、 多对多 继承关系: JPA查询语言(JPA QL): ·使用查询对象完成查询 ·处理查询结果 。 使用标准$QL语句 ·条件查询、关系查询等 JPA进阶 ·2。西北农林升技大学信息工程学院本科生课程
❖ 实体的状态及操作: ❖ 实体主键与实体属性: • 主键生成策略,复合主键,嵌入式主键 • 实体属性:类型、加载方式等 ❖ 实体关系映射: • 关联关系:一对一、一对多与多对一、多对多 • 继承关系: ❖ JPA查询语言 (JPA QL): • 使用查询对象完成查询 • 处理查询结果 • 使用标准SQL语句 • 条件查询、关系查询等 JPA进阶 •2 信息工程学院本科生课程 主要内容
实体的状态转换 PC:PersisteneContext does not exist POJO construction Objectobj new Objecto; 1.Database remove 与PG还未关联 2.@PostRemove new 1.EntityManager.persist(obj) 2.@PrePersist 3.Database insert 4.@PostPersist commit(/rollback0/close 0 1.EntityManager.remove(obj) serialized to another tier 与PC电关联 2.@PreRemove detached managed 3.Pending removal in database removed 与PC不再关联 EntityManager.merge(obj) 与PC有关联, 1.Update query 但即将被删除 1.EntityManager.refresh(obj) 2.@PreUpdate 2.@Post扎nad 3.Database update 4.@PostUpdate JPA进阶 3。 西北农林科教大学信息工程学院本科生课程
实体的状态转换 •3 信息工程学院本科生课程 与PC还未关联 与PC已关联 与PC不再关联 与PC有关联, 但即将被删除 commit()/rollback()/close() PC: PersisteneContext JPA进阶
实体的状态 冬新建状态(new):尚未与实体管理器关联过的实体 ·新建状态的实体不会被持久化到数据库中; ·通过实体管理器的persist'可将其持久化而成为受管的; ·如新建实体没有被引用,垃圾回收机制将回收。 受管状态(managed):数据库中存在对应的记录、 拥有持久化标识、处于实体管理器管理之下的实体 ·受管状态下的实体可能是刚保存的,或是刚被加载的; ·JPA会自动检测到处于受管状态下的实体的改动。当程序 修改受管实体的属性时,JPA负责修改,开发者无需手工 执行JPDATE语句。 JPA进阶 ·4。品北农林升教大学信息工程学院本科生课程
❖ 新建状态(new):尚未与实体管理器关联过的实体 • 新建状态的实体不会被持久化到数据库中; • 通过实体管理器的persist可将其持久化而成为受管的; • 如新建实体没有被引用,垃圾回收机制将回收。 ❖ 受管状态(managed):数据库中存在对应的记录、 拥有持久化标识、处于实体管理器管理之下的实体 • 受管状态下的实体可能是刚保存的,或是刚被加载的; • JPA会自动检测到处于受管状态下的实体的改动。当程序 修改受管实体的属性时,JPA负责修改,开发者无需手工 执行UPDATE语句。 实体的状态 JPA进阶 •4 信息工程学院本科生课程
实体的状态 分离状态(detached):具有持久化标识,但已与实 体管理器失去关联的实体 ·处于分离状态实体的引用依然有效,可继续被修改; ·这里的分离是指该实体“脱离”了实体管理器的管理。 被删除状态(r emoved):具有持久化标识、与上下 文仍然关联、待从数据库中删除的实体 。当实体管理器调用remove()方法删除指定实体之后,该 实体将进入被删除状态; 当其对应的记录将从数据库中删除且调用@PostRemove方 法后,实体将被回收。 JPA进阶 ·5。品北农林科大学信息工程学院本科生课程
❖ 分离状态(detached):具有持久化标识,但已与实 体管理器失去关联的实体 • 处于分离状态实体的引用依然有效,可继续被修改; • 这里的分离是指该实体“脱离”了实体管理器的管理。 ❖ 被删除状态(removed):具有持久化标识、与上下 文仍然关联、待从数据库中删除的实体 • 当实体管理器调用remove()方法删除指定实体之后,该 实体将进入被删除状态; • 当其对应的记录将从数据库中删除且调用@PostRemove方 法后,实体将被回收。 实体的状态 JPA进阶 •5 信息工程学院本科生课程