JPA的常用Annotation

http://www.blogjava.net/zJun/archive/2007/01/24/95747.html

1、

@Entity:通过@Entity注解将一个类声明为一个实体bean

@Table(name=”t_Husband”):通过 @Table注解可以为实体bean映射指定表,name属性表示实体所对应表的名称,如果没有定义 @Table,那么系统自动使用默认值:实体的类名(不带包名)

2、

@Id:用于标记属性的主键

@GeneratedValue(默认取值anto,ID生成策略)

3、

@Column(name=”wifeid”):表示持久化属性所映射表中的字段,如果属性名与表中的字段名相同,则可以省略

4、

联合主键:当entity class使用复合主键时,需要定义一个类作为id class。id class必须符合以下要求:类必须声明为public,并提供一个声明为public的空构造函数。必须实现Serializable接,覆写 equals()和hashCode()方法。entity class的所有id field在id class都要定义,且类型一样。

在类名上@[email protected](TeacherPK.class)

在联合主键的两个属性上分别@[email protected]

public class EmployeePK implements java.io.Serializable{
      
String empName;
      
Integer empAge;
       public
EmployeePK(){}
       public
boolean equals(Object obj){ ......}
      
public int hashCode(){......}
   
}

@IdClass(EmployeePK.class)
   
@Entity
   
public class Employee {
       
@Id String empName;
       
@Id Integer empAge;
   
}

5、

关联关系中:

@OneToOne

@OneToMany

@ManyToOne

@ManyToMany

6、

@JoinColumn

如果在entity class的field上定义了关系(one2one或one2many等),我们通过JoinColumn来定义关系的属性。

name:列名。

referencedColumnName:该列指向列的列名(建表时该列作为外键列指向关系另一端的指定列)

unique: 是否唯一

nullable: 是否允许为空

insertable: 是否允许插入

updatable: 是否允许更新

columnDefinition: 定义建表时创建此列的DDL

secondaryTable: 从表名。如果此列不建在主表上(默认建在主表),该属性定义该列所在从表的名字。

下面的代码说明Husband和Wife是一对一关系。在Husband对应的映射表建一个名为wifeid的列,该列作为外键指向Wife对应表中的主键id。

public class Husband{

private
Wife wife;

@OneToOne

@JoinColumn(name="wifeid")

public
Wife getWife () {

return
wife;

}

7、

@JoinColumns

如果在entity class的field上定义了关系(one2one或one2many等),并且关系存在多个JoinColumn,用JoinColumns定义多个JoinColumn的属性。

元数据属性说明:

value: 定义JoinColumn数组,指定每个JoinColumn的属性。

下面的代码说明Husband和Wife是一对一关系。在Husband对应的映射表建两列,一个名为wifeid的列,该列作为外键指向Wife对应表中的主键id;另一个为wifename的列,该列作为外键指向Wife对应表中的主键name。

public class Husband{

private
Wife wife;

@OneToOne

@JoinColumns({

@JoinColumn(name="wifeid",
referencedColumnName="id"),

@JoinColumn(name="wifename",
referencedColumnName="name")

})

public
Wife getWife () {

return
wife;

}

8、

@JoinTable

JoinTable在many-to-many关系的所有者一边定义。如果没有定义JoinTable,使用JoinTable的默认值。

元数据属性说明:

  • name:这个join table的名字。
  • joinColumns:定义指向所有者主表的外键列,数据类型是JoinColumn数组。
  • inverseJoinColumns:定义指向非所有者主表的外键列,数据类型是JoinColumn数组。

下面的teacher类代码定义了一个连接表teacher和student的join table。join table的表名是teacher_student,包含两个外键,一个外键是t_ID,指向表teacher的主键ID,另一个外键是s_ID,指向表student的主键ID。其中referencedColumnName可以省略。

public class Teacher{

 private Set<Student> students = new HashSer<Student>();

 @ManyToMany

@JoinTable(

name=”teacher_student”,

[email protected](name="t_ID",
referencedColumnName="id"),

[email protected](name="s_ID",
referencedColumnName="id")

)

  public  Set<Student> getStudents(){

    return students;

  }

JPA的常用Annotation

时间: 2025-01-15 04:01:02

JPA的常用Annotation的相关文章

3、JPA一些常用的注解

常用注解有下面这些: ①:@Entity.@Table.@Id.@GeneratedValue.@Column.@Basic ②:@Transient 用于忽略某个属性,而不对该属性进行持久化操作 ③:@Temporal 一.第①组注解 @Entity 标注用于实体类声明语句之前,指出该Java 类为实体类,将映射到指定的数据库表.如声明一个实体类 Customer,它将映射到数据库中的 customer 表上. @Table,当实体类与其映射的数据库表名不同名时需要使用 @Table 标注说明

17 Spring Data JPA的常用接口分析

思考 在客户的案例中,我们发现在自定义的CustomerDao中,并没有提供任何方法就可以使用其中的很多方法,那么这些方法究竟是怎么来的呢?答案很简单,对于我们自定义的Dao接口,由于继承了JpaRepository和JpaSpecificationExecutor,所以我们可以使用这两个接口的所有方法. 在使用Spring Data JPA时,一般实现JpaRepository和JpaSpecificationExecutor接口,这样就可以使用这些接口中定义的方法,但是这些方法都只是一些声明

Hibernate常用Annotation标签说明

@ javax.persistence.Entity 实体类定义,该标签表示当前类是一个Hibernate的数据库实体,对应着数据库中的某个表 位置:用于类级别 参数:无 样例:@Entity 注意:导入标签类时可能会有多个,这里使用的是javax.persistence.Entity @javax.persistence.Table 实体类定义,该标签表示当前类是一个Hibernate的数据库实体,对应着数据库中的某个表 位置:用于类级别 参数:name – 用于指定表名,如果不指定则表名与类

jpa的常用注解

package com.itheima.domain; import javax.persistence.*;import java.util.ArrayList;import java.util.List; @Entity@Table(name="t_role")public class Role { @Id @Column @GeneratedValue(strategy = GenerationType.IDENTITY) private int rid; @Column pri

JPA常用注解

JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.        JPA由EJB 3.0软件专家组开发,作为JSR-220实现的一部分.但它不囿于EJB 3.0,你可以在Web应用.甚至桌面应用中使用.JPA的宗旨是为POJO提供持久化标准规范.        JPA的总体思想和现有Hibernate.TopLink,JDO等ORM框架大体一致.总的来说,JPA包括以下3方面的技术:     

JPA实体基本映射

1.前言 JPA可以使用XML映射文件来管理实体与数据表之间的映射关系,但在实际开发中,绝大部分情况都是采用Annotation来管理实体和数据表的映射关系.本篇着重来讲解一下JPA中采用注解形式来映射实体. 2.JPA属性注入 2.1.常用注解 @Entity:被该注解修饰的POJO就是一个实体 @Table:该注解反应的是所映射的一个表 @Column:该字段用来修饰多要描述的属性 [email protected] 在默认情况下,实体类的Field会自动映射到数据表的数据列,如果不想映射的

Hibernate之Annotation(注解的方式,非映射)

在hibernate 3.0之后,可以建立一个符合JPA标准的Annotation,以hibernate3.3.2GA为例 Annotation 以 hibernate Annotation 3.3.0GA为例 我们需要在根目录下面获取: hibernate-annotations.jar //反正是必须的包 我们需要在Annotation 3.3.0GA内的lib文文件夹下面获取: 1.hibernate-commons-annotations.jar //进行反射的时候需要的一个包 2.ej

Eclipse 通过JPA自动生成注解实体

hibernate是JPA最常用的实现之一,而且hiberante自身也对注释语法进行了支持.现在再不用去看那一堆堆的XML映射了.而且eclipse还提供了从数据库直接生成Entity Class的工具. 一.项目添加JPA工具 现在将已有项目添加JPA支持,首先选择项目右键Properties->Project Facets 勾选列表Project Facts 下JPA选项,确定选择转入数据库连接配置 >>点击Furhter configuration available platf

hibernate学习笔记03-- hibernate + mysql + Annotation

1. Annotation 的使用主要分为 2 步: 1.1 加入相应的 jar 包: hibernate-annotations.jar // Annotation  核心包 ejb3-persistence.jar  // 符合 jpa 标准的 Annotation 的实现 hibernate-commons-annotations.jar // 进行发射的时候使用 1.2 在 model 中使用 @ 注解的形式对类和属性进行注解 2. 新建 hibernate_annotation ,工程