第 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属性来指定,当@Enumerated的value属性为EnumType.STRING时,底层数据库保存枚举值的名称;当value属性为EnumType.ORDINAL时,底层数据库保存枚举值的序号。
7.@Lob Annotation (修饰Field)
@Lob :JPA使用@Lob Annotation来修饰大数据类型,当实体的Filed为byte[]、Byte[]或java.io.Serializable类型时,@Lob Annotation修饰的Field将映射为底层的Blob列;当实体的Field为char[]、Character[]或java.lang.String类型时,@Lob修饰的Field将映射为底层的Clob列。
8.@Basic Annotation (修饰Field)
@Basic :使用该Annotation来修饰Field表示该Field采用延迟加载机制,可指定如下属性:
fecth :指定是否延迟加载该Field。该属性可接受FetchType.EAGER、FetchType.LAZY两个值之一,其中前者指定不用延迟加载;后者使用延迟加载。
Optional :指定该Field映射的数据列是否允许使用null值。
9.@Temporal Annotation (修饰Field)
@Temporal:修饰日期类型的Field,使用@Temporal时可指定一个value属性,该属性支持TemporalType.DATE、TemporalType.TIME、TemporalType.TIMESTAMP三个值之一,用于指定将该Field映射到数据表的date、time、timestamp类型的数据列。
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 :如果实体类的标识属性(映射成主键列)是基本数据类型、基本数据类型的包装类、String、Date等类型,那么就可以简单地使用@Id Annotation修饰该实体属性。使用@Id Annotation时无须指定任何属性。
16.@GeneratedValue Annotation (修饰标识属性 Field)
@GeneratedValue :如果希望JPA 为逻辑主键自动生成主键值,则还应该在@Id Annotation下使用@GeneratedValue 来修饰实体的标识属性,使用@GeneratedValue时可指定如下属性:
属性 |
是否必需 |
说明 |
strategy |
否 |
指定JPA对该主键列使用怎样的主键生成策略。该属性支持的属性有如下四个: 1.GenerationType.AUTO:JPA自动选择最适合底层数据库的主键生成策略 2..GenerationType.IDENTITY:对于MySQL、SQL Server这样的数据库选择自动增长的主键生成策略 3.GenerationType.SEQUENCE:对于Oracle这样的数据库,选择使用基于sequence的主键生成策略。应与@SequenceGenerator一起使用 4.GenerationType.TABLE:使用一个辅助表来生成主键。应与@TableGenerator一起使用 |
generator |
否 |
当使用 GenerationType.SEQUENCE、GenerationType.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:指定JPA将merge操作都级联到关联实体; 3.CascadeType.PERSIST:指定JPA将persist操作都级联到关联实体; 4.CascadeType.REFRESH:指定JPA将refresh操作都级联到关联实体; 5.CascadeType.REMOVE:指定JPA将remove操作都级联到关联实体。 |
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:用于修饰1—1关联关系的关联实体属性,可以指定如下属性:
属性 |
是否必需 |
说明 |
cascade |
否 |
指定JPA对关联实体采用怎样的级联策略,该级联策略支持如下四个属性: 1.CascadeType.ALL:指定JPA将所有的持久化操作都级联到关联实体; 2.CascadeType.MERGE:指定JPA将merge操作都级联到关联实体; 3.CascadeType.PERSIST:指定JPA将persist操作都级联到关联实体; 4.CascadeType.REFRESH:指定JPA将refresh操作都级联到关联实体; 5.CascadeType.REMOVE:指定JPA将remove操作都级联到关联实体。 |
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)
@OneToMany:1—N关联关系需要使用@OneToMeny来修饰1端的Set属性(该属性记录了该实体的所有关联实体),可以指定如下属性:
属性 |
是否必需 |
说明 |
cascade |
否 |
指定JPA对关联实体采用怎样的级联策略,该级联策略支持如下四个属性: 1.CascadeType.ALL:指定JPA将所有的持久化操作都级联到关联实体; 2.CascadeType.MERGE:指定JPA将merge操作都级联到关联实体; 3.CascadeType.PERSIST:指定JPA将persist操作都级联到关联实体; 4.CascadeType.REFRESH:指定JPA将refresh操作都级联到关联实体; 5.CascadeType.REMOVE:指定JPA将remove操作都级联到关联实体。 |
fetch |
否 |
指定抓取关联实体的抓取策略,该属性支持如下两个属性: 1.FetchType.EAGER:抓取实体时,立即抓取实体,这是默认值; 2.FetchType.LAZY:抓取实体时,延迟抓取关联实体,等到真正用到实体时才去抓取。 |
mappedBy |
否 |
该属性合法的属性值为关联实体的属性名,该属性指定关联实体中哪个属性可引用到当前实体 |
targetEnttity |
否 |
该属性指定关联实体的类名。在默认情况下,JPA将通过反射来判断关联实体的类名。 |
23.@ManyToMany Annotation (修饰Filed)
@ManyToMany:用于修饰N—N关联关系的关联属性,N—N的关联必须要使用连接表,因此N—N关联中除了使用@ManyToMany来修饰Set属性之外,还需要使用@JoinTable来修饰Set属性。使用@ManyToMany时可指定如下属性:
属性 |
是否必需 |
说明 |
cascade |
否 |
指定JPA对关联实体采用怎样的级联策略,该级联策略支持如下四个属性: 1.CascadeType.ALL:指定JPA将所有的持久化操作都级联到关联实体; 2.CascadeType.MERGE:指定JPA将merge操作都级联到关联实体; 3.CascadeType.PERSIST:指定JPA将persist操作都级联到关联实体; 4.CascadeType.REFRESH:指定JPA将refresh操作都级联到关联实体; 5.CascadeType.REMOVE:指定JPA将remove操作都级联到关联实体。 |
fetch |
否 |
指定抓取关联实体的抓取策略,该属性支持如下两个属性: 1.FetchType.EAGER:抓取实体时,立即抓取实体,这是默认值; 2.FetchType.LAZY:抓取实体时,延迟抓取关联实体,等到真正用到实体时才去抓取。 |
mappedBy |
否 |
该属性合法的属性值为关联实体的属性名,该属性指定关联实体中哪个属性可引用到当前实体 |
targetEnttity |
否 |
该属性指定关联实体的类名。在默认情况下,JPA将通过反射来判断关联实体的类名。 |
24.@JoinTable Annotation (修饰Filed)
@JoinTable:专门用于为N—N关联关系指定连接表的配置信息,使用@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:对于1—N关联、N—N关联而言,当程序通过当前实体获取N端的关联实体时,系统默认根据关联实体的主键的升序来检索关联实体,如果应用需要改变这种默认的排序规则,则可以将@OrderBy与@OneToMany、@ManyToMany结合使用。使用@OrderBy时可指定一个value属性,该属性值是一个形如propertyName ASC、propertyName DESC 的字符串,指定按关联实体propertyName 这个属性来进行升序、降序来检索关联实体
相关推荐
Jap,全称为Java Annotation Processor,是一种用于处理Java注解的工具。在这个项目中,Jap API可能被用来在编译时自动生成与数据库交互所需的代码,比如实体类、DAO层以及数据访问相关的接口和实现。通过这种方式,...
本文档主要介绍 JPA 中的批注(Annotation)及其使用方法。 #### 二、JPA 批注的重要性 JPA 批注是实现 JPA 功能的关键组成部分之一。通过使用批注,开发人员可以在不修改源代码结构的前提下,定义实体类的映射规则...
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest public class JPATest { @Autowired private UserRepository ...
JPA的核心是实体(Entity),而批注(Annotation)在JPA中扮演着至关重要的角色,它们定义了实体类与数据库表之间的映射关系,简化了持久化操作。以下是JPA批注的一些关键知识点: 1. **@Entity**: 这个批注标记一...
hibernate annotation reference CHM hibernate jpa
**hibernate_annotation_api** 在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。而Hibernate的注解API是其核心特性之一,允许开发者通过在Java类和属性上添加注解来...
以下是关于"spring_hibernate_annotation的三种实现"的详细知识点: 1. **Spring的注解驱动开发** - **@Autowired**:自动装配bean,根据类型或名称自动找到合适的依赖。 - **@Qualifier**:当有多个相同类型的...
- `@Entity`、`@Id`、`@Column`等是标准的JPA注解,而`@Formula`、`@Cacheable`、`@Filter`等是Hibernate特有的,提供更丰富的功能,如计算属性、缓存策略和动态过滤。 5. **通过XML覆写元数据** 虽然注解是首选...
标题 "SpringIOC_SpringMVC_SpringAnnotation_JPA" 涵盖了四个核心的Java开发框架技术,它们是Spring框架的重要组成部分。Spring框架是一个开源的应用框架,它为Java开发者提供了一个全面的基础设施,用于构建可扩展...
2. `@Query`:JPA的动态查询,可以在Repository接口方法上直接编写HQL或JPQL。 五、使用示例 创建一个简单的User实体类,使用Hibernate Annotation进行注解: ```java @Entity @Table(name = "users") public ...
myeclipse的自带hibernate jar包不支持注解;自己找的hibernate注解所需的jar包:hibernate-core;hibernate-annotation;hbm-cfg-xml;log4j.properties
### Hibernate Annotation注解编程知识点详解 #### 一、概述与设置环境 - **概述**:Hibernate 是一个流行的 Java 持久层框架,它提供了一种面向对象的方式来处理数据库操作。Hibernate 支持多种元数据定义方式,...
SSH(Struts2、Spring、Hibernate)是一种经典的Java Web开发框架,它整合了Struts2的MVC设计模式、Spring的依赖...在这个案例中,S2SpringJPA_annotation文件很可能是包含了具体实现这些功能的源代码,供学习和参考。
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)来实现对象与数据库表之间的映射。这些注解是元数据的一种形式,嵌入在Java源代码中,提供了关于类、字段和方法的信息,使得JPA能够理解并执行相应的数据库操作。 1. **实体(Entity...