JPA2.0学习笔记---对象/关系映射增强详解
来源:互联网 发布:php 字符串转化二进制 编辑:程序博客网 时间:2024/06/06 00:44
今天开始学学JPA2.0 ~~
实体类
package com.neal.bean.test;import java.util.List;import java.util.Set;import javax.persistence.CollectionTable;import javax.persistence.Column;import javax.persistence.ElementCollection;import javax.persistence.Entity;import javax.persistence.Enumerated;import javax.persistence.Id;import javax.persistence.OrderBy;@Entitypublic class Vehicle {@Idint vin;@ElementCollection@CollectionTable(name = "VEH_OPTNS")@Enumerated()@Column(name = "FEAT")Set<FeatureType> optionalFeatures;@ElementCollection@CollectionTable(name = "VEH_SVC")@OrderBy("serviceDate")List<ServiceVisit> serviceHistory;public enum FeatureType {AC, CRUISE, PWR, BLUETOOTH, TV}}
package com.neal.bean.test;import java.util.Date;import javax.persistence.Column;import javax.persistence.Embeddable;import javax.persistence.Temporal;import javax.persistence.TemporalType;@Embeddable public class ServiceVisit{ @Temporal(TemporalType.DATE) @Column(name="SVC_DATE") Date serviceDate; String workDesc; int cost; }
数据库生成表都在下面, 一些表名这类的的 大小写就不用太计较了。。哈~
第一个注解:@Entity 这玩意不用说,对应的表就是 vehicle , @ID生成如下主键 vin这些都是基本的,现在开始下面的注解
@ElementCollection
@CollectionTable(name = "VEH_OPTNS")
个人理解为:这个有点像一对多~~ 嵌入 一张表 表名为VEH_OPTNS,对应FeatureType枚举,再生成一张表,用来存放枚举数据,而不是和JPA1 里面用字段来存放枚举数值,VEH_OPTNS中的Vechicle_vin ,根据外键名自动生成。 外键关联到 Vehicle 表中的vin字段 的主键上,也就是以嵌入式的方式生成一个枚举表,不过个人觉得这个样子还不如直接定义枚举,多表查询,速度可想而知。
第二个应该才是嵌入式的该用到的地方了~ 大概也和上面一样,我就不细说了。生成表 VEH_SVC,表内数据其实就是 ServiceVisit 中的内容,之后还是主外键关联。
总结: 其实也就是一对多的变种而已。。 嵌入一些信息,把原先那些枚举这类的也看成为一个对象,用一个表格存储,1.0 的时候就是一个字段而已,更加面向对象了。 两张表与主表Vehicle 之间有主键的关联,自动生成的表主键似乎无法修改,谁知道了也回复一下啊。
敲完手工。。。 下午继续研究其他特性。
数据库生成如下三张表:
- JPA2.0学习笔记---对象/关系映射增强详解
- Pro JPA2读书笔记系列(四)-第四章(对象-关系映射)
- Hibernate 学习笔记05 --对象关系映射
- JPA2.0学习笔记---Criteria 查询
- Pro JPA2读书笔记系列(十一)-第十章(高级对象-关系映射)
- 详解jpa2.0
- 对象关系映射文件详解
- hibernate映射详解之: 对象 - 关系映射
- hibenrnate学习笔记9对象关系映射文件
- Hibernate学习笔记 第二章 基本对象关系映射
- JPA2.0的学习
- Hibernate对象关系映射详解之一对多关系映射
- Hibernate对象关系映射详解之“一对多”关系映射
- Hibernate之关系对象映射详解
- hibernate 对象关系映射文件详解
- 《数据访问模式》笔记:对象/关系映射
- android对象关系映射框架ormlite学习
- 【Hibernate框架学习】:Hibernate进阶之详解Hibernate配置文件和对象关系映射配置文件
- Mozilla将发布Windows 8 Metro版Firefox
- Struts2 中使用<jsp:forward> 出现404
- 一些中文字体的英文名称
- 关于 oacle 锁做的 小实验
- ORACLE 学习
- JPA2.0学习笔记---对象/关系映射增强详解
- 关于oracle 锁的实际 解决方法
- 对于大文件的编译方法
- 防火墙简述
- 电脑通过android手机上网
- Android HAL 是如何被调用的
- 防火墙和路由器的区别简述
- 安装应用程序服务器(远程管理)
- HDOJ 1024 Max Sum Plus Plus