JPA的实体

一个实体,就是一个持久化的领域对象。通常情况下,一个实体代表在关系数据库中的一张表,实体的一个实例对应于表中的一行。

  JPA规范对实体的要求:

  1、实体类必须使用javax.persistence.Entity进行注解(@Entity)。

  2、实体类必须要有一个公共的或者受保护的空参构造方法。

  3、实体类不能声明为final,方法和需要持久化的属性也不能声明为final。

  4、如果游离态的实体对象需要以值的方式进行传递,则必须实现Serializable接口。

  5、实体类可以继承实体类和非实体类,非实体类也可以继承实体类。

  6、持久化实例变量必须被声明为私有的、受保护的或者私有包,只能直接访问实体类的方法。

  JAP实体类常用的注解:

  1、@Entity 将领域对象标注为一个实体,表示需要保存到数据库中。

  2、@Table @Table(name="table_name")用name属性指定对应的表。

  3、@Id 表示对应的字段是表的主键。

  4、@GeneratedValue 主键的产生策略。

  5、@Column @Column(name="col_name",nullable=true,length=32)用name属性指定对应表中的列名,nullable指定是否可以为空,length指定列的长度。

  6、@Temporal  @Temporal(TemporalType.Date)指定时间类型,数据库对时间的类型有严格的划分。

  7、@Version “提交版本必须大于记录当前版本才能执行更新”的乐观锁策略。

  8、@Transient 让变量不要持久化到数据库中

 

  一个实体例子: 

复制代码
 1 package com.cndatacom.jpa.entity; 2  3 import java.io.Serializable; 4 import java.sql.Timestamp; 5 import java.util.Date; 6  7 import javax.persistence.Column; 8 import javax.persistence.Entity; 9 import javax.persistence.GeneratedValue;10 import javax.persistence.Id;11 import javax.persistence.Table;12 import javax.persistence.Temporal;13 import javax.persistence.TemporalType;14 import javax.persistence.Transient;15 import javax.persistence.Version;16 17 /** 18  * @author  Luxh19  */ 20 21 @Entity//标识为持久化实体对象 22 @Table(name="t_employee")//指定表名 23 public class Employee implements Serializable {24 25     private static final long serialVersionUID = -6143714081018642099L;26     27     @Id//标识为主键 28     @GeneratedValue//主键产生策略 29     private Long id;30     31     @Column(name="name",length=100)//指定列名、列的长度 32     private String name;33     34     @Temporal(TemporalType.DATE)//指定时间格式类型 35     private Date createTime;36     37     @Version//乐观锁 38     @Column(name="optlock")39     private Timestamp version;40     41     @Transient//让变量不要持久化到数据库中 42     private String temp;43 44     public Long getId() {45         return id;46     }47 48     public void setId(Long id) {49         this.id = id;50     }51 52     public String getName() {53         return name;54     }55 56     public void setName(String name) {57         this.name = name;58     }59 60     public Date getCreateTime() {61         return createTime;62     }63 64     public void setCreateTime(Date createTime) {65         this.createTime = createTime;66     }67 68     public Timestamp getVersion() {69         return version;70     }71 72     public void setVersion(Timestamp version) {73         this.version = version;74     }75 76     public String getTemp() {77         return temp;78     }79 80     public void setTemp(String temp) {81         this.temp = temp;82     }83 84 }

转载于:https://my.oschina.net/xiahuawuyu/blog/59595

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值