废话不多说,直接上干货
@Entity
所在包 javax.persistence.Entity
用法:标注于实体类声明类名前 指出该类为实体类
@Table
所在包 同上
用法:1.当实体类与映射的数据库名不一致时,使用其进行标注说明
@Table(name=”alias_name”)
2.可选项catalog和schema用于设置所属数据库的目录和模式,通常为数据库名
3.uniqueConstraints选项用户设置约束条件,通常不设置
@Id
所在包:同上
用法:1.标识实体类的主键 可以与字段同行,也可在单行上,亦可在getter方法上
@GeneratedValue
所在包 同上
用法 :标注主键的生成策略。通常strategy指定 jpa自动选择一个适合底层数据库的主键生成策略, Sql对于 identity ,MYsql 对应 auto increment
Javax.persistence.GrnerationType中的定义了一下几种可选择
1 IDENTYITY 数据库ID自增方式 ORACLE不支持
2.AUTO JPA自动选择 默认
3.SEQUENCE 通过序列产生主键 MYSql不支持
4.TABLE 通过表产生主键 框架借助由表模拟序列产生主键
@Basic
所属包:同上
用法:对于一个实体 如果标识了@Entity注解,其字段都如被@Basic修饰的作用
- fetch 表示读取策略 EAGER(立即加载)和 LAZY(延迟加载)两种 默认是EAGER
- optional 字段是否允许为null 默认true
@Column
所在包:同上
用法:当实体属性和映射的数据库列不同时可以使用它
- 常用属性name 映射列名 其他属性 unique nullable length
- columnDefinition 表示该字段在数据库中的实际类型,通常ORM框架可以根据属性类型自动判断 但对于Date类型无法确定 String 默认类型是varchar 如果String 类型映射为Blob或Text
- 可以在getter方法前标注
@Transient 用于忽略数据库表字段的映射
@Temporal
1.表示数据库中 Date的精度 有 DATE TIME TIMESTAMO三种精度
2.对于java 中的 java.util.Date 和 java.util.Calendar 在没有@Temporal修饰的时候
3.对于oracle数据库的数据类似是tempstamp(6)
Oracle 的数据类型为DATE类型
几个不长用的数据类型
如果实体类的字段是 byte[] oracle数据会映射为 RAW(255)
如果加@Lob注解修饰 oracle数据类型会映射为 Blob字段
如果实体类的字段类型是 String oracle的数据会映射为 varchar2
如果加@Lob注解修饰 oracle的数据类型会映射为 CLOB
使用@Column 的columnDefinition 修饰具体类型