JPA_Annotation

第  1  

1.@Entity Annotation (修饰类)

  @Entity:被该Annotation修饰的POJO就是一个实体,可指定一个name属性为实体名称,省略时以该类名作为实体名称

 

2.@Table Annotation (修饰类)

 @Table:该Annotation指定实体所映射的表。可指定如下属性:

属性

是否必需

说明

catalog

设置实体所映射的表放入指定的catalog内,没指定将放入默认的catalog

name

设置实体所映射的表的表名,没指定将与实体类的类名相同

schema

设置实体所映射的表放入指定的schema内,没指定将放入默认的schema

uniqueConstraints

为实体所映射的表设置唯一约束。该属性值可以是一个@UniqueConstraint Annotation 数组

 

3.@UniqueConstraint  Annotation(作为@Table uniqueConstrains 属性值)

  @UniqueConstraint :用于为数据表定义唯一约束,使用该Annotation时可以指定如下唯一属性:

columnNames:该属性的属性值是一个字符串数组,每个字符串元素代表一     个数据列

4.@Column Annotation (修饰Field

  @Column :映射实体属性到数据表中的字段,使用该Annotation时可以指定如下属性:

属性

是否必需

说明

insertable

指定该列是否包含在JPA生成的insert语句的列表中。默认值为true

length

指定该列所能保存的数据最大长度,默认为255

name

指定该列的表列名,默认为与@Column修饰的属性名相同

nullable

指定该列是否允许为null,默认为true

table

指定该列所属的表名。当需要用多个表来保存一个实体时往往指定该属性

unique

指定该列是否具有唯一约束。默认为false,即不具有唯一约束

updatable

指定该列是否包含在JPA生成的update语句的列表中。默认值为true

 

5.@Transien Annotation (修饰Field

  @Transient :修饰不想持久保存的Field,修饰属性后表示该属性不会映射到数据表。

6. @Enumerated Annotation (修饰 Field

  @Enumerated :修饰枚举类型的Field。底层数据库既可保存枚举值的名称来代表枚举值,也可以保存枚举值号来代表枚举值。这可以通过value属性来指定,当@Enumeratedvalue属性为EnumType.STRING时,底层数据库保存枚举值的名称;当value属性为EnumType.ORDINAL时,底层数据库保存枚举值的序号。

7.@Lob  Annotation (修饰Field

  @Lob JPA使用@Lob Annotation来修饰大数据类型,当实体的Filedbyte[]Byte[]java.io.Serializable类型时,@Lob Annotation修饰的Field将映射为底层的Blob列;当实体的Fieldchar[]Character[]java.lang.String类型时,@Lob修饰的Field将映射为底层的Clob列。

8.@Basic  Annotation (修饰Field

  @Basic :使用该Annotation来修饰Field表示该Field采用延迟加载机制,可指定如下属性:

   fecth :指定是否延迟加载该Field。该属性可接受FetchType.EAGERFetchType.LAZY两个值之一,其中前者指定不用延迟加载;后者使用延迟加载。

   Optional :指定该Field映射的数据列是否允许使用null值。

9.@Temporal Annotation (修饰Field

  @Temporal:修饰日期类型的Field,使用@Temporal时可指定一个value属性,该属性支持TemporalType.DATETemporalType.TIMETemporalType.TIMESTAMP三个值之一,用于指定将该Field映射到数据表的datetimetimestamp类型的数据列。

10.@SecondaryTable Annotation (修饰类)

   @SecondaryTable:把一个实体的属性映射到底层第二个数据表中,指定该属性时也要指定@Table来修饰实体把一部分属性映射到第一个表中。如果要指定多个@SecondaryTable,则需要把它放到@SecondaryTablesk中可以指定如下属性:

属性

是否必需

说明

name

指定新数据表的表名

catalog

指定将新数据表放入指定的catalog内,如果不指定该属性,则将新数据表放入默认的catalog

schema

指定将新数据表放入指定的schema内。如果不指定该属性,则将新数据表放入默认的schema

pkJoinColumns

指定新数据表中一个或多个外键列,只有通过该外键列才可让新数据表中的记录参照到主表记录。pkJoinColumns属性值是一个@PrimaryKeyJoinColumn数组

uniqueConstraints

为新数据表指定唯一约束

 

11.@PrimaryKeyJoinColumn Annotation (作为@SecondaryTable的属性uniqueConstraints的属性值)

   @PrimaryKeyJoinColumn:用于定义在从表中定义外键列的映射信息,使用该Annotation时可以指定如下属性:

属性

是否必需

说明

columnDefinition

指定JPA使用该属性值指定的SQL片段来创建外键列

name

指定从表中外键列的列名

referencedColumnName

指定从表中外键列参照的数据列的列名

 

12.@Embedded  Annotation (修饰普通Field

   @Embedded :当实体内包含复合类型的属性时,使用@Embedded修饰这个复合类型的属性,使用该Annotation时无须指定任何属性。而且还要使用@Embeddable 来修饰这个复合类

13.@AttributeOverride  Annotation (修饰Field

   @AttributeOverride :使用@Embedded 修饰复合属性之外,还需要使用@AttributeOverride 来指定复合类型中成员属性的映射配置,如果复合类型内包含多个属性,而且这多个属性都需要重新指定映射配置,则应该考虑使用@AttributeOverrides 来组合多个@AttributeOverride,每个@AttributeOverride必须包含下面两个属性:

属性

是否必需

说明

name

指定对复合类中哪个属性进行配置

column

指定关于该属性的详细映射信息,该属性值是一个@Column,可以在@Column中的name属性指定映射到数据库中的字段名

14.@AttributeOverrides  Annotation (修饰Field) 

   @AttributeOverrides :用于包含多个@AttributeOverride Annotation

15.@Id  Annotation (修饰标识属性Field

   @Id :如果实体类的标识属性(映射成主键列)是基本数据类型、基本数据类型的包装类、StringDate等类型,那么就可以简单地使用@Id  Annotation修饰该实体属性。使用@Id  Annotation时无须指定任何属性。

16.@GeneratedValue  Annotation (修饰标识属性 Field

   @GeneratedValue :如果希望JPA 为逻辑主键自动生成主键值,则还应该在@Id  Annotation下使用@GeneratedValue 来修饰实体的标识属性,使用@GeneratedValue时可指定如下属性:

属性

是否必需

说明

strategy

指定JPA对该主键列使用怎样的主键生成策略。该属性支持的属性有如下四个:

1.GenerationType.AUTOJPA自动选择最适合底层数据库的主键生成策略

2..GenerationType.IDENTITY:对于MySQLSQL Server这样的数据库选择自动增长的主键生成策略

3.GenerationType.SEQUENCE:对于Oracle这样的数据库,选择使用基于sequence的主键生成策略。应与@SequenceGenerator一起使用

4.GenerationType.TABLE:使用一个辅助表来生成主键。应与@TableGenerator一起使用

generator

当使用 GenerationType.SEQUENCEGenerationType.TABLE 主键生成策略时,该属性指定sequence、辅助表的名称

 

17.@IdClass  Annotation (修饰类)

  @IdClass :用于修饰类,指定实体需要使用复合主键,并指定一个属性值为复合主键类.Class。并且在该 Annotation修饰的实体类内将使用多个@Id 来修饰指定来自复合主键类内的多个属性作为联合主键。

18.@EmbeddedId  Annotation (修饰主键)

   @EmbeddedId 的用法和 @Embedded 用法基本相似,只是@Embedded用于修饰普通的复合属性,而@EmbeddedId用于修饰复合主键而已。使用@EmbeddedId时同样可以结合@AttributeOverrides和 @AttributeOverride两个Annotation一起使用。

18.@ManyToOne  Annotation (修饰Filed

   @ManyToOne 用于修饰1-N关联关系(不管是单向关联,还是双向关联)中N的一端关联属性。使用@ManyToOne 可以指定如下属性:

属性

是否必需

说明

cascade

指定JPA对关联实体采用怎样的级联策略,该级联策略支持如下四个属性:

1.CascadeType.ALL:指定JPA将所有的持久化操作都级联到关联实体;

2.CascadeType.MERGE:指定JPAmerge操作都级联到关联实体;

3.CascadeType.PERSIST:指定JPApersist操作都级联到关联实体;

4.CascadeType.REFRESH:指定JPArefresh操作都级联到关联实体;

5.CascadeType.REMOVE:指定JPAremove操作都级联到关联实体。

fetch

指定抓取关联实体时抓取策略,该属性支持如下两个属性值:

1.FetchType.EAGER:抓取实体时,立即抓取关联实体。这是默认值

2.FetchType.LAZY:抓取实体时,延迟抓取关联实体,等到真正用到实体时才去抓取。

optional

该属性指定关联关系是否可选

targetEntity

该属性指定关联实体的类名。在默认情况下,JPA将通过反射来判断关联实体的类名。

19.@JoinColumn  Annotation(修饰Filed

   @JoinColumn:映射N端实体的外键列信息,使用该Annotation可指定如下属性:

属性

是否必需

说明

columnDefinition

指定JPA使用该属性值指定的SQL片段来创建外键列

name

指定该外键列的列名

insertable

指定该列是否包含在JPA生成的insert语句的列列表中。默认为true

updatable

指定该列是否包含在JPA生成的update语句的列列表中。默认为true

nullable

指定该列是否允许为null,该属性的默认为true

table

指定该列所在数据表的表名

unique

指定是否为该列增加唯一绝不

referencedColumnName

指定该列所参照的主键列的列名

 

20.@JoinColumns  Annotation(修饰Filed

   @JoinColumns:如果记录关联关系的底层数据表使用了复合主键、复合外键,那就需要定义多个外键列了,此时可以使用@JoinColumns来组合多个@JoinColumn

21.@OneToOne  Annotation (修饰Filed

   @OneToOne:用于修饰11关联关系的关联实体属性,可以指定如下属性:

属性

是否必需

说明

cascade

指定JPA对关联实体采用怎样的级联策略,该级联策略支持如下四个属性:

1.CascadeType.ALL:指定JPA将所有的持久化操作都级联到关联实体;

2.CascadeType.MERGE:指定JPAmerge操作都级联到关联实体;

3.CascadeType.PERSIST:指定JPApersist操作都级联到关联实体;

4.CascadeType.REFRESH:指定JPArefresh操作都级联到关联实体;

5.CascadeType.REMOVE:指定JPAremove操作都级联到关联实体。

fetch

指定抓取关联实体的抓取策略,该属性支持如下两个属性:

1.FetchType.EAGER:抓取实体时,立即抓取实体,这是默认值;

2.FetchType.LAZY:抓取实体时,延迟抓取关联实体,等到真正用到实体时才去抓取。

mappedBy

该属性合法的属性值关联实体属性名该属性指定关联实体中哪个属性可引用到当前实体

optional

该属性指定关联关系是否可选

targetEntity

该属性指定关联实体的类名。在默认情况下,JPA将通过反射来判断关联实体的类名。

mappedBy属性在单向关联关系中无法使用,因为单向关联中只支持“当前实体关联实体”,不支持“关联实体当前实体”,因此关联实体并没有任何属性来引用当前实体。

对于mappedBy属性而言,它可在@OneToOne@OneToMany@ManyToMany这三个Annotation中使用,它不能在@ManyToOne中使用。它的作用除了表中说明的作用之外,它还用于指定该属性出现的当前实体不再控制关联关系,类似于Hibernate框架中设置了inverse=true”。一旦为@OneToMany@ManyTOMany指定了mappedB属性,这两个Annotation将不能和@JoinColumn@JoinTable一起使用。

22.@OneToMany  Annotation (修饰Filed

   @OneToMany1N关联关系需要使用@OneToMeny来修饰1端的Set属性(该属性记录了该实体的所有关联实体),可以指定如下属性:

属性

是否必需

说明

cascade

指定JPA对关联实体采用怎样的级联策略,该级联策略支持如下四个属性:

1.CascadeType.ALL:指定JPA将所有的持久化操作都级联到关联实体;

2.CascadeType.MERGE:指定JPAmerge操作都级联到关联实体;

3.CascadeType.PERSIST:指定JPApersist操作都级联到关联实体;

4.CascadeType.REFRESH:指定JPArefresh操作都级联到关联实体;

5.CascadeType.REMOVE:指定JPAremove操作都级联到关联实体。

fetch

指定抓取关联实体的抓取策略,该属性支持如下两个属性:

1.FetchType.EAGER:抓取实体时,立即抓取实体,这是默认值;

2.FetchType.LAZY:抓取实体时,延迟抓取关联实体,等到真正用到实体时才去抓取。

mappedBy

该属性合法的属性值关联实体属性名该属性指定关联实体中哪个属性可引用到当前实体

targetEnttity

该属性指定关联实体的类名。在默认情况下,JPA将通过反射来判断关联实体的类名。

 

23.@ManyToMany  Annotation (修饰Filed

   @ManyToMany:用于修饰NN关联关系的关联属性,NN的关联必须要使用连接表,因此NN关联中除了使用@ManyToMany来修饰Set属性之外,还需要使用@JoinTable来修饰Set属性。使用@ManyToMany时可指定如下属性:

属性

是否必需

说明

cascade

指定JPA对关联实体采用怎样的级联策略,该级联策略支持如下四个属性:

1.CascadeType.ALL:指定JPA将所有的持久化操作都级联到关联实体;

2.CascadeType.MERGE:指定JPAmerge操作都级联到关联实体;

3.CascadeType.PERSIST:指定JPApersist操作都级联到关联实体;

4.CascadeType.REFRESH:指定JPArefresh操作都级联到关联实体;

5.CascadeType.REMOVE:指定JPAremove操作都级联到关联实体。

fetch

指定抓取关联实体的抓取策略,该属性支持如下两个属性:

1.FetchType.EAGER:抓取实体时,立即抓取实体,这是默认值;

2.FetchType.LAZY:抓取实体时,延迟抓取关联实体,等到真正用到实体时才去抓取。

mappedBy

该属性合法的属性值关联实体属性名该属性指定关联实体中哪个属性可引用到当前实体

targetEnttity

该属性指定关联实体的类名。在默认情况下,JPA将通过反射来判断关联实体的类名。

 

24.@JoinTable  Annotation (修饰Filed

   @JoinTable:专门用于为NN关联关系指定连接表的配置信息,使用@JoinTable时可指定如下属性:

属性

是否必需

说明

name

指定连接表的表名

catalog

设置实体所映射的表放入指定的catalog内。如果没有指定该属性,连接表将放入默认的catalog

schema

设置实体所映射的表放入指定的schema内。如果没有指定该属性,连接表将谢谢默认的schema

joinColumns

该属性值可接受多个@JoinColumn,用于配置连接表中外键列的列信息,这些外键列参照当前实体的主键列

inverseJoinColumns

该属性可接受多个@JoinColumn,用于配置连接表中外键列的列信息,这些外键列参照当前实体的关联实体的主键列

uniqueConstraints

该属性用于为连接表增加唯一约束

 

25.@MapKey  Annotation (修饰Filed

   @MapKey:用于使用Map集合记录关联实体时修饰Map属性,使用@MqpKey时必须指定一个name属性,name属性的属性值当前实体关联实体类中的标识属性的属性名

26.@OrderBy  Annotation (修饰Filed

   @OrderBy:对于1N关联、NN关联而言,当程序通过当前实体获取N端的关联实体时,系统默认根据关联实体的主键的升序来检索关联实体,如果应用需要改变这种默认的排序规则,则可以将@OrderBy@OneToMany@ManyToMany结合使用。使用@OrderBy时可指定一个value属性,该属性值是一个形如propertyName  ASCpropertyName  DESC 的字符串,指定按关联实体propertyName 这个属性来进行升序、降序来检索关联实体

<!--EndFragment-->
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值