Annotation與XML配置表名、屬性名、日期類型、枚舉類型
如果javabean類名與DB表名不同時:
@Entity
@Table(name="DB表名")
public class Teacher{
.....
}
XML修改方式:
<class name="Teacher" table="DB數據表名">
-----------------------------------------
對比:
如果XML中不配置<property>則該字段不做映射
Annotation中,默認都做映射
只需指明@Id 主鍵
默認屬性名前是:@Basic
@Basic //默認都是Basic 可不寫
{
如果字段(屬性)名與列名不同:
XML修改:
<property name="name" column="列名"></property>
Annotation方式:
@Column(name="s_title")
public String getTitle() {
title;
}
這些注解都寫在get()方法前,導包要javax.persistent下
因為是符合JPA標準的Annotation
-----------------------------------------
Annotation javaBean中,如果不想持久化某個屬性:
@Transient
{
XML中則是不寫該屬性的<property>
-----------------------------------------
保存日期類型屬性時:(并不多)
@Temporal(TemporalType.DATE)
{
TemporalType.DATE只保存日期
如果不指定@Temporal 則DB表字段類型為DATETIME
指定為TemporalType.DATE后,DB字段類型為DATE類型,只存日期
XML實現:
<property name="birthday" type="date" > 或
<property name="birthday" type="time" >
-----------------------------------------
當屬性有枚舉類型時:
使用XML映射Enum非常麻煩,去問谷老師,搜“Hibernate映射枚舉類型”
Annotation配置:
@Enumerated(EnumType.STRING) //保存enum元素的值對應varchar
getZhiCheng() {
EnumType.ORDINAL是保存枚舉元素的索引位置,對應數據庫中integer(number)
-----------------------------------------
字段映射的位置:
注解寫在Field前還是get()方法前?
都可以
如果寫在Field前,則破壞了OOP的封裝性,private成員不可以隨意訪問
大多數寫在get()方法前
-----------------------------------------