随笔 - 0, 文章 - 75, 评论 - 0, 引用 - 0
数据加载中……

Annotation与XML配置表名、属性名、日期类型、枚举类型

如果javabean类名与DB表名不同时:


@Entity


@Table(name="DB表名")


public class Teacher{


.....


}



XML修改方式:


<class name="Teacher" table="DB数据表名">


-----------------------------------------


对比:


如果XML中不配置<property>则该字段不做映射


Annotation中,默认都做映射


只需指明@Id 主键


默认属性名前是:@Basic


@Basic //默认都是Basic 可不写
public String getName()
{
return name;
}



如果字段(属性)名与列名不同:


XML修改:


<property name="name" column="列名"></property>



Annotation方式:


@Column(name="s_title")
public String getTitle() {
return
title;
}



这些注解都写在get()方法前,导包要javax.persistent下


因为是符合JPA标准的Annotation


-----------------------------------------


Annotation javaBean中,如果不想持久化某个属性:


@Transient //不持久化该属性
public String getYourWifeName()
{
return yourWifeName;
}



XML中则是不写该属性的<property>


-----------------------------------------


保存日期类型属性时:(并不多)


@Temporal(TemporalType.DATE)
public Date getBirthday()
{
return birthday;
}


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
public ZhiCheng
getZhiCheng() {
return zhiCheng;
}


EnumType.ORDINAL是保存枚举元素的索引位置,对应数据库中integer(number)


-----------------------------------------


字段映射的位置:


注解写在Field前还是get()方法前?


都可以


如果写在Field前,则破坏了OOP的封装性,private成员不可以随意访问


大多数写在get()方法前


-----------------------------------------

posted on 2012-04-22 16:01 hantai 阅读(267) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: