ORM数据库与实体类映射

ORM(对象关系映射)

JPA 是通过 JDK5.0 注解或 XML 描述对象 - 关系表的映射关系,并将运行期实体对象持久化到数据库中去。

实例1

Employee实体类

@Entity 
public class Employee implements Serializable { 
   private static final long serialVersionUID = 1L; 
   @Id 
   private Long id; 
   private String name; 
   private int age; 
   private String addree; 
    
  // Getters and Setters 
}
  • 如果没有 @javax.persistence.Entity@javax.persistence.Id 这两个注解的话,它完全就是一个典型的 POJO 的 Java 类,在加上这两个注解之后,就可以作为一个实体类与数据库中的表相对应。

90

  • final 类型的变量以及方法不被映射
  • static final修饰的属性表示一旦给值,就不可修改,并且可以通过类名访问。
  • static final也可以修饰方法,表示该方法不能重写,可以在不new对象的情况下调用。
  • 如果实体类的一个实例需要用传值的方式调用(例如,远程调用),则这个实体类必须实现(implements)java.io.Serializable 接口。

实例2

使用 @Table 和 @Column 注解修改映射规则

@Entity 
@Table(name="Workers") 
public class Employee implements Serializable { 
   private static final long serialVersionUID = 1L; 
   @Id 
   @GeneratedValue 
   private Long id; 
   @Column(name="emp_name", length=30) 
   private String name; 
   @Column(name="emp_age", nullable=false) 
   private int age; 
   @Column(name="emp_address", nullable=false ,unique=true) 
   private String addree; 
    
    // Getters and Setters 
 
}

改变默认规则后 在数据库中对应的表为:

91

映射类型

  • 一对一 - 此关联由@OneToOne注释表示。在这里,每个实体的实例与另一个实体的单个实例相关。
  • 一对多 - 此关联由@OneToMany注释表示。 在这种关系中,一个实体的实例可以与另一个实体的多个实例相关联。
  • 多对一 - 此映射由@ManyToOne注释定义。 在这种关系中,一个实体的多个实例可以与另一个实体的单个实例相关联。
  • 多对多 - 此关联由@ManyToMany注释表示。 在这种关系中,一个实体的多个实例可能与另一个实体的多个实例有关。 在这个映射中,任何一方都可以成为所有者方。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×