废话不多说,直接上干货

@Entity

所在包 javax.persistence.Entity

用法:标注于实体类声明类名前 指出该类为实体类

@Table

所在包 同上

用法:1.当实体类与映射的数据库名不一致时,使用其进行标注说明

@Table(name=”alias_name”)

2.可选项catalog和schema用于设置所属数据库的目录和模式,通常为数据库名

3.uniqueConstraints选项用户设置约束条件,通常不设置

JPA 注解详解

@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修饰的作用

  1. fetch 表示读取策略 EAGER(立即加载)和 LAZY(延迟加载)两种 默认是EAGER
  2. optional 字段是否允许为null 默认true

@Column

所在包:同上

用法:当实体属性和映射的数据库列不同时可以使用它

  1. 常用属性name 映射列名 其他属性 unique nullable length
  2. columnDefinition 表示该字段在数据库中的实际类型,通常ORM框架可以根据属性类型自动判断 但对于Date类型无法确定 String 默认类型是varchar 如果String 类型映射为Blob或Text
  3. 可以在getter方法前标注

@Transient 用于忽略数据库表字段的映射

@Temporal

 1.表示数据库中 Date的精度 有 DATE TIME TIMESTAMO三种精度

 2.对于java 中的 java.util.Date 和 java.util.Calendar 在没有@Temporal修饰的时候

 3.对于oracle数据库的数据类似是tempstamp(6)

JPA 注解详解

Oracle 的数据类型为DATE类型

 

几个不长用的数据类型

如果实体类的字段是 byte[]  oracle数据会映射为 RAW(255)

如果加@Lob注解修饰 oracle数据类型会映射为 Blob字段

如果实体类的字段类型是 String oracle的数据会映射为 varchar2

如果加@Lob注解修饰 oracle的数据类型会映射为 CLOB

使用@Column 的columnDefinition 修饰具体类型

JPA 注解详解

JPA 注解详解

相关文章: