`
iove10
  • 浏览: 1125 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

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-->
分享到:
评论

相关推荐

    BookCreation_japand_JavaJPA_saidyw7_

    Jap,全称为Java Annotation Processor,是一种用于处理Java注解的工具。在这个项目中,Jap API可能被用来在编译时自动生成与数据库交互所需的代码,比如实体类、DAO层以及数据访问相关的接口和实现。通过这种方式,...

    JPA_批注参考

    本文档主要介绍 JPA 中的批注(Annotation)及其使用方法。 #### 二、JPA 批注的重要性 JPA 批注是实现 JPA 功能的关键组成部分之一。通过使用批注,开发人员可以在不修改源代码结构的前提下,定义实体类的映射规则...

    D_JPA_01_环境搭建

    import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest public class JPATest { @Autowired private UserRepository ...

    1_JPA_批注参考.

    JPA的核心是实体(Entity),而批注(Annotation)在JPA中扮演着至关重要的角色,它们定义了实体类与数据库表之间的映射关系,简化了持久化操作。以下是JPA批注的一些关键知识点: 1. **@Entity**: 这个批注标记一...

    hibernate_annotation_reference.CHM

    hibernate annotation reference CHM hibernate jpa

    hibernate_annotation_api

    **hibernate_annotation_api** 在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。而Hibernate的注解API是其核心特性之一,允许开发者通过在Java类和属性上添加注解来...

    spring_hibernate_annotation的三种实现

    以下是关于"spring_hibernate_annotation的三种实现"的详细知识点: 1. **Spring的注解驱动开发** - **@Autowired**:自动装配bean,根据类型或名称自动找到合适的依赖。 - **@Qualifier**:当有多个相同类型的...

    hibernate_annotation_中文帮助文档

    - `@Entity`、`@Id`、`@Column`等是标准的JPA注解,而`@Formula`、`@Cacheable`、`@Filter`等是Hibernate特有的,提供更丰富的功能,如计算属性、缓存策略和动态过滤。 5. **通过XML覆写元数据** 虽然注解是首选...

    SpringIOC_SpringMVC_SpringAnnotation_JPA

    标题 "SpringIOC_SpringMVC_SpringAnnotation_JPA" 涵盖了四个核心的Java开发框架技术,它们是Spring框架的重要组成部分。Spring框架是一个开源的应用框架,它为Java开发者提供了一个全面的基础设施,用于构建可扩展...

    hibernate_annotation中文版

    2. `@Query`:JPA的动态查询,可以在Repository接口方法上直接编写HQL或JPQL。 五、使用示例 创建一个简单的User实体类,使用Hibernate Annotation进行注解: ```java @Entity @Table(name = "users") public ...

    hibernate_annotation_所需jar包

    myeclipse的自带hibernate jar包不支持注解;自己找的hibernate注解所需的jar包:hibernate-core;hibernate-annotation;hbm-cfg-xml;log4j.properties

    hibernate _annotation 注解编程

    ### Hibernate Annotation注解编程知识点详解 #### 一、概述与设置环境 - **概述**:Hibernate 是一个流行的 Java 持久层框架,它提供了一种面向对象的方式来处理数据库操作。Hibernate 支持多种元数据定义方式,...

    ssh集成jpa和使用注解案例

    SSH(Struts2、Spring、Hibernate)是一种经典的Java Web开发框架,它整合了Struts2的MVC设计模式、Spring的依赖...在这个案例中,S2SpringJPA_annotation文件很可能是包含了具体实现这些功能的源代码,供学习和参考。

    GSH:spring3.1.0M2+Hibernate3.5+GWT2.4+JPA+Annotation+Spring4gwt0.0.1亲手整合

    GSH:spring3.1.0M2+Hibernate3.5+GWT2.4+JPA+Annotation+Spring4gwt0.0.1亲手整合,也可以上新浪博客去看 http://blog.sina.com.cn/s/blog_687dfecb0100yrmf.html

    JPA Annotation Reference

    JPA Annotation Reference

    JPA视频教程_使用jpa映射单个实体对象

    JPA通过使用注解(Annotation)来实现对象与数据库表之间的映射。这些注解是元数据的一种形式,嵌入在Java源代码中,提供了关于类、字段和方法的信息,使得JPA能够理解并执行相应的数据库操作。 1. **实体(Entity...

Global site tag (gtag.js) - Google Analytics