import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "tbl_user" schema="SIMULATE" ) publicclass User implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id" insertable=false,nullable=false,updatable=false) private Integer id; @Column(name = "name") private String name; @Column(name = "age") private String age; public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } /**** * 用戶名 * @param name */ public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public User() {} }
從上面代碼來看開發實體Bean非常簡單,比起普通的JavaBean就是多了些注釋。
@Entity注釋指名這是一個實體Bean,
@Table注釋指定了Entity所要映射帶數據庫表,
其中@Table.name()用來指定映射表的表名。如果缺省@Table注釋,系統默認采用類名作為映射表的表名。
實體Bean的每個實例代表數據表中的一行數據,行中的一列對應實例中的一個屬性。
@Column注釋定義了將成員屬性映射到關系表中的哪一列和該列的結構信息,屬性如下:
1)name:映射的列名。如:映射tbl_user表的name列,可以在name屬性的上面或getName方法上面加入;
2)unique:是否唯一;
3)nullable:是否允許為空;
4)length:對於字符型列,length屬性指定列的最大字符長度;
5)insertable:是否允許插入;
6)updatetable:是否允許更新;
7)columnDefinition:定義建表時創建此列的DDL;
8)secondaryTable:從表名。如果此列不建在主表上(默認是主表),該屬性定義該列所在從表的名字。
@Id注釋指定表的主鍵,它可以有多種生成方式:
1)TABLE:容器指定用底層的數據表確保唯一;
2)SEQUENCE:使用數據庫德SEQUENCE列萊保證唯一(Oracle數據庫通過序列來生成唯一ID);
3)IDENTITY:使用數據庫的IDENTITY列萊保證唯一;
4)AUTO:由容器挑選一個合適的方式來保證唯一;
5)NONE:容器不負責主鍵的生成,由程序來完成。
@GeneratedValue注釋定義了標識字段生成方式。
@Temporal注釋用來指定java.util.Date或java.util.Calender屬性與數據庫類型date、time或timestamp中的那一種類型進行映射。
@Temporal(value=TemporalType.TIME)
//oracle數據庫自定義的sequences @SequenceGenerator(name = "MY_SEQUENCE", sequenceName = "INCREMENTA") @Id @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="MY_SEQUENCE") @Column(insertable=false,nullable=false,updatable=false) private String id;
轉自:https://blog.csdn.net/u010081710/article/details/51692314
