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

posted @ 2017-04-12 11:52  流年如水烟雨随风  阅读(155)  评论(0编辑  收藏  举报