zoukankan      html  css  js  c++  java
  • 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 让变量不要持久化到数据库中

      9、@Enumerated 使用枚举。@Enumerated(EnumType.STRING)表示使用枚举的值,@Enumerated(EnumType.ORDINAL)表示使用枚举值的索引。   

        10、@Lob 处理大文本和二进制数据。

      一个实体例子: 

      

      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.Basic;
      8 import javax.persistence.Column;
      9 import javax.persistence.Entity;
     10 import javax.persistence.EnumType;
     11 import javax.persistence.Enumerated;
     12 import javax.persistence.FetchType;
     13 import javax.persistence.GeneratedValue;
     14 import javax.persistence.GenerationType;
     15 import javax.persistence.Id;
     16 import javax.persistence.Lob;
     17 import javax.persistence.Table;
     18 import javax.persistence.Temporal;
     19 import javax.persistence.TemporalType;
     20 import javax.persistence.Transient;
     21 import javax.persistence.Version;
     22 
     23 
     24 /**
     25  * @author Luxh
     26  */
     27 
     28 @Entity//标识为持久化实体对象
     29 @Table(name="t_employee")//指定表名
     30 public class Employee implements Serializable {
     31 
     32     private static final long serialVersionUID = -6143714081018642099L;
     33     
     34     @Id
     35     @GeneratedValue(strategy=GenerationType.AUTO)
     36     //@GeneratedValue(strategy=GenerationType.IDENTITY)
     37     //@GeneratedValue(strategy=GenerationType.SEQUENCE)
     38     //@GeneratedValue(strategy=GenerationType.TABLE)
     39     private Long id;
     40     
     41     @Column(name="name",length=100)//指定列名、列的长度
     42     private String name;
     43     
     44     @Temporal(TemporalType.DATE)//指定时间格式类型
     45     private Date createTime;
     46     
     47     @Version//乐观锁
     48     @Column(name="optlock")
     49     private Timestamp version;
     50     
     51     @Transient//让变量不要持久化到数据库中
     52     private String temp;
     53     
     54     @Enumerated(EnumType.STRING)//使用枚举
     55     @Column(name="gender",length=6,nullable=false)
     56     private Gender gender = Gender.MALE;//默认值为MALE
     57     
     58     @Lob//大文本
     59     private String instruction;
     60     
     61     @Lob//二进制数据
     62     @Basic(fetch=FetchType.LAZY)//延迟加载,用到的时候才从数据库加载
     63     private Byte[] files;
     64     
     65 
     66     public Gender getGender() {
     67         return gender;
     68     }
     69 
     70     public void setGender(Gender gender) {
     71         this.gender = gender;
     72     }
     73 
     74     public String getInstruction() {
     75         return instruction;
     76     }
     77 
     78     public void setInstruction(String instruction) {
     79         this.instruction = instruction;
     80     }
     81 
     82     public Byte[] getFiles() {
     83         return files;
     84     }
     85 
     86     public void setFiles(Byte[] files) {
     87         this.files = files;
     88     }
     89 
     90     public Long getId() {
     91         return id;
     92     }
     93 
     94     public void setId(Long id) {
     95         this.id = id;
     96     }
     97 
     98     public String getName() {
     99         return name;
    100     }
    101 
    102     public void setName(String name) {
    103         this.name = name;
    104     }
    105 
    106     public Date getCreateTime() {
    107         return createTime;
    108     }
    109 
    110     public void setCreateTime(Date createTime) {
    111         this.createTime = createTime;
    112     }
    113 
    114     public Timestamp getVersion() {
    115         return version;
    116     }
    117 
    118     public void setVersion(Timestamp version) {
    119         this.version = version;
    120     }
    121 
    122     public String getTemp() {
    123         return temp;
    124     }
    125 
    126     public void setTemp(String temp) {
    127         this.temp = temp;
    128     }
    129 
    130 }


      枚举Gender:

      

    1 /**
    2  * 性别
    3  * @author Luxh
    4  */
    5 public enum Gender {
    6     MALE,FEMALE
    7 }

      

  • 相关阅读:
    稳扎稳打Silverlight(13) 2.0交互之鼠标事件和键盘事件
    稳扎稳打Silverlight(17) 2.0数据之详解DataGrid, 绑定数据到ListBox
    再接再厉VS 2008 sp1 + .NET 3.5 sp1(2) Entity Framework(实体框架)之详解 Linq To Entities 之一
    稳扎稳打Silverlight(8) 2.0图形之基类System.Windows.Shapes.Shape
    稳扎稳打Silverlight(11) 2.0动画之ColorAnimation, DoubleAnimation, PointAnimation, 内插关键帧动画
    稳扎稳打Silverlight(21) 2.0通信之WebRequest和WebResponse, 对指定的URI发出请求以及接收响应
    稳扎稳打Silverlight(16) 2.0数据之独立存储(Isolated Storage)
    稳扎稳打Silverlight(9) 2.0画笔之SolidColorBrush, ImageBrush, VideoBrush, LinearGradientBrush, RadialGradientBrush
    稳扎稳打Silverlight(23) 2.0通信之调用WCF的双向通信(Duplex Service)
    游戏人生Silverlight(1) 七彩俄罗斯方块[Silverlight 2.0(c#)]
  • 原文地址:https://www.cnblogs.com/luxh/p/2517228.html
Copyright © 2011-2022 走看看