hibernate基础配置

时间:2023-03-09 17:57:56
hibernate基础配置

数据库表名和类名

  一致

    注解:可写可不写;

    XML:可写可不写; <class name="Student">

  不一致

    注解:  @Table(name="_teacher") public class Teacher ,注意导入的是 javax.persistence.Table;

    XML:  <class name="Student" table="_student"> 。

字段名和属性名

  一致

    注解:@Basic / 不写,没有在字段上加注解相当于加了@Basic;

    XML:如果要在数据库中进行操作的字段那就必须要写,否则数据就不会插入到数据库中

 <id name="id"/>
<property name="name"/>

  不一致

    注解: @Column(name="_name") public String getName() ,注意导入的是 javax.persistence.Column;

    XML: <property name="name" column="_name"/>

不想保存在数据库中的字段:

  注解:导入 javax.persistence.Transient;

     import javax.persistence.Transient;

     private String girlName;

     @Transient
public String getGirlName() {
return girlName;
} public void setGirlName(String girlName) {
this.girlName = girlName;
}

  XML:不要持久化的属性不写进XML配置文件就可以了

映射日期和时间

  注解: 默认是 TIMESTAMP,如果要设置时间精度,有三个可选,DATE只保存日期(年月日),TIME只保存时间(时分秒),TIMESTAMP保存日期和时间:

    hibernate基础配置

    例子:

    private Date birthday;
@Temporal(value=TemporalType.TIMESTAMP)
public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
}

  XML:在对应的字段上对 type 进行配置,如图:hibernate基础配置

映射枚举类型

  注解:两种类型 ORDINAL在数据库中以int保存,STIRNG以字符串保存

    hibernate基础配置

    定义枚举类型:

    

 package com.bjsxt.hibernate.model;

 public enum ZhiCheng {
A,B,C
}

    设置职称为B:  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