2、 hibernate.cfg.xml:format_sql
3、 表名和类名不同,对表名进行配置
a) Annotation:@Table
b) Xml:自己查询
4、 字段名和属性相同
a) 默认为@Basic
b) Xml中不用写column
5、 字段名和属性名不同
a) Annotation:@Column
b) Xml:自己查询
6、 不需要psersistence的字段
a) Annotation:@Transient
b) Xml:不写
7、 映射日期与时间类型,指定时间精度
a) Annotation:@Temporal
b) Xml:指定type
8、 映射枚举类型
a) Annotation:@Enumerated
b) Xml:麻烦
9、 字段映射的位置(field或者get方法)
a) Best practice:保持field和get/set方法的一致
10、 @Lob
11、 课外:CLOB BLOB类型的数据存取
12、 课外:Hibernate自定义数据类型
13、 Hibernate类型
ehibernate.cfg.xml : show_sql
输出所有SQL语句到控制台. 有一个另外的选择是把org.hibernate.SQL这个log category设为debug。
取值: true | false
hibernate.cfg.xml :format_sql
在log和console中打印出更漂亮的SQL。
取值: true | false
True样式:
16:32:39,750 DEBUG SchemaExport:377 -
create table Teacher (
id integer not null,
name varchar(255),
title varchar(255),
primary key (id)
)
False样式:
16:33:40,484 DEBUG SchemaExport:377 - create table Teacher (id integer not null, name varchar(255), title varchar(255), primary key (id))
表名和类名不同,对表名进行配置
Annotation:使用 @Table(name=”tableName”) 进行注解
例如:
/**
* @Entity 表示下面的这个Teacher是一个实体类
* @Table 表示映射到数据表中的表名,其中的name参数表示"表名称"
* @Id 表示主键Id,一般放在getXXX前面
*/
@Entity
@Table(name="_teacher")
public class Teacher {
[……]
}
Xml:
<class name="Student" table="_student">
字段名和属性相同
Annotation:默认为@Basic
注意:如果在成员属性没有加入任何注解,则默认在前面加入了@Basic
Xml中不用写column
字段名和属性名不同
Annotation:使用@Column(name=”columnName”)进行注解
例如:
/**
* @Entity 表示下面的这个Teacher是一个实体类
* @Table 表示映射到数据表中的表名,其中的name参数表示"表名称"
* @Column 表示实体类成员属性映射数据表中的字段名,其中name参数指定一个新的字段名
* @Id 表示主键Id
*/
@Entity
@Table(name="_teacher")
public class Teacher {
private int id;
private String name;
private String title;
//设置主键使用@Id
@Id
public int getId() {
return id;
}
@Column(name="_name")//字段名与属性不同时
public String getName() {
return name;
}
……
Xml:
<property name="name" column="_name"/>
不需要(持久化)psersistence的字段
就是不实体类的某个成员属性不需要存入数据库中
Annotation:使用@Transient 进行注解就可以了。
例如:
@Transient
public String getTitle() {
return title;
}
Xml:不写(就是不需要对这个成员属性进行映射)
映射日期与时间类型,指定时间精度
Annotation:使用@Temporal(value=TemporalType)来注解表示日期和时间的注解
其中TemporalType有三个值:TemporalType.TIMESTAMP 表示yyyy-MM-dd HH:mm:ss
TemporalType.DATE 表示yyyy-MM-dd
TemporalType.TIME 表示HH:mm:ss
@Temporal(value=TemporalType.DATE)
public Date getBirthDate() {
return birthDate;
}
注意:当使用注解时,属性为value时,则这个属性名可以省略,例如:@Temporal(TemporalType)
Xml:使用type属性指定hibernate类型
<property name="birthDate" type="date"/>
。 注意:hibernate日期时间类型有:date, time, timestamp,当然也可以使用Java包装类。
映射枚举类型
Annotation:使用@Enumerated(value=EnumType)来注解表示此成员属性为枚举映射到数据库
其中EnumType有二个值:①EnumType.STRING 表示直接将枚举名称存入数据库
②EnumType.ORDINAL 表示将枚举所对应的数值存入数据库
Xml:映射非常的麻烦,先要定义自定义类型,然后再使用这个定义的类型……