菜鸟之JPA二

来源:互联网 发布:分布式数据库 pec模块 编辑:程序博客网 时间:2024/06/04 18:26

jpa简介

3、jpa实体关系映射

上篇写到了实体的关系映射今天就从使用基本注解的实体开始

首先我们创建一个User实体,其注解如下:

import java.io.Serializable;

import java.util.Date;
import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.Id;

import javax.persistence.Temporal;

import javax.persistence.TemporalType;

@Entity(name = "t_user")

public class User implements Serializable{

    @Id

    private long id;   
    @Column(name="t_usernmae")

    private String username;   

    private String password;

   
    @Temporal(TemporalType.DATE)

    private Date birthday;

    @Column(name="t_age")

    private int age;

........

省略get set方法

}

综上可以很明显的知道如何给一个实体加注解,其实就跟hibernate的配置类似,只是换了种形式,为了方便,看起来

直观,这里的注解都写到了字段上,按道理是应该写到get方法上的。

例:    private String password;不加注解,字段也会指定映射到表,默认列明为字段名

下面就来说说继承关系

3.2继承关系

最简单的基本注解

定义一个BaseEntity实体

@MappedSuperclass

   public abstract  class BaseEntity implements Serializable{

    private static final long serialVersionUID = 5003093721586047440L;

    @Id
    @GeneratedValue
    private Long id;
    @Version
    private long version;
    
    @Temporal(TemporalType.TIMESTAMP)
    private Date createdDate = new Date();
    
    @Temporal(TemporalType.TIMESTAMP)
    private Date lastModifiedDate;

..............

省略get set

}

再写一个基本的User实体

@Entity(name="t_user")
public class User extends BaseEntity{
    private static final long serialVersionUID = 1045289538678669205L;
    private String username;
    private String password;

@Temporal(TemporalType.DATE)

    private Date birthday;

    @Column(name="t_age")

    private int age;

..............

省略get set

}

在父类上加上@MappedSuperclass 声明为抽象类,然后子类继承,这样在数据库表中,t_user除了在User中声明的字段外还会加上继承父类的字段。JPA 采用多种方法来支持实体继承,这只是比较简单的一种,详情请等下篇分解。

更多学习资料

原创粉丝点击