hibernate基础配置
数据库表名和类名
一致
注解:可写可不写;
XML:可写可不写; <class name="Student">
不一致
注解: 1 @Table(name="_teacher") 2 public class Teacher ,注意导入的是 javax.persistence.Table;
XML: <class name="Student" table="_student"> 。
字段名和属性名
一致
注解:@Basic / 不写,没有在字段上加注解相当于加了@Basic;
XML:如果要在数据库中进行操作的字段那就必须要写,否则数据就不会插入到数据库中
1 <id name="id"/> 2 <property name="name"/>
不一致
注解: @Column(name="_name") public String getName() ,注意导入的是 javax.persistence.Column;
XML: <property name="name" column="_name"/>
不想保存在数据库中的字段:
注解:导入 javax.persistence.Transient;
1 import javax.persistence.Transient; 2 3 private String girlName; 4 5 @Transient 6 public String getGirlName() { 7 return girlName; 8 } 9 10 public void setGirlName(String girlName) { 11 this.girlName = girlName; 12 }
XML:不要持久化的属性不写进XML配置文件就可以了
映射日期和时间
注解: 默认是 TIMESTAMP,如果要设置时间精度,有三个可选,DATE只保存日期(年月日),TIME只保存时间(时分秒),TIMESTAMP保存日期和时间:
例子:
1 private Date birthday; 2 @Temporal(value=TemporalType.TIMESTAMP) 3 public Date getBirthday() { 4 return birthday; 5 } 6 7 public void setBirthday(Date birthday) { 8 this.birthday = birthday; 9 }
XML:在对应的字段上对 type 进行配置,如图:
映射枚举类型
注解:两种类型 ORDINAL在数据库中以int保存,STIRNG以字符串保存
定义枚举类型:
1 package com.bjsxt.hibernate.model; 2 3 public enum ZhiCheng { 4 A,B,C 5 }
设置职称为B: 1 t.setZhiCheng(ZhiCheng.B); 如果映射为ORDINAL,数据保存为0;如果映射为STRING,数据保存为B。
XML:很麻烦,一般不用。
FAQ:
1、注解指定数据库字段的长度?
注解:Column 的 length 配置;
XML:propertye 的 length 配置。
-----------------------------------------------------------------------------------------------------------------------------------------------------------
字段映射的位置:field 上、方法上。
放在方法上,这样不会破坏Java的面向对象的封装性;
best practice:保持field和 get set 方法的一致。
链接: http://pan.baidu.com/s/1caR1ZS 密码: c24n
jar包:链接: http://pan.baidu.com/s/1pLM4ch9 密码: q5cp