hibernate中有两个常见的配置文件hibernate.cfg.xml和*.hbm.xml
下面分别详细介绍下这两个配置文件
一、hibernate.cfg.xml配置文件内容和详解
<hibernate-configuration>
<session-factory>
<!-- 配置数据库连接信息 -->
<!-- 数据库驱动 -->
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<!-- url -->
<property name="connection.url">jdbc:mysql:///hibernatetest</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- 数据库方言 -->
<property name="dialect">
org.hibernate.dialect.MySQL5Dialect
</property>
<!-- 是否打印sql语句 -->
<property name="show_sql">true</property>
<!-- 格式化sql语句 -->
<property name="format_sql">true</property>
<!-- 数据库更新方式:
create:每次执行都先将原有的数据表删除,然后创建该表
create-drop:使用create-drop时,在显示关闭SessionFactory时,将drop掉数据库schema(表)
validate:检测
update:如果表不存在则创建,有就不用创建
-->
<property name="hbm2ddl.auto">update</property>
<!-- 映射文件 -->
<mapping resource="com/test/pojo/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
二、User实体类
public class User {
private int id;
private String name;
private String pwd;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
与User实体类对应的User.hbm.xml配置文件内容和详解
<!-- package声明pojo类所在的包,如果不写那么在class中需要指明pojo类所在的包
schema指数据库模式, 一个模式下可以有多张表
-->
<hibernate-mapping package="com.test.pojo">
<!--
class:指映射一个pojo类
1) 提供了公共的无参构造方法--通过反射产生对象
2)属性用private修饰,并且生成对应的get/set方法
3)类不能用final 来修饰--hibernate会产生代理类(cglib)
4)类需要指明标识
name:表示pojo类名
table:表示pojo类对应数据库中的表名;如果不写默认是类名
-->
<class name="User" table="user">
<!--
id:表示实体类的标识(OID),对应数据库表中的主键
name:指实体类的标识属性名
column:表示对应数据库的列名,如果不写则数据库表中列名和属性名一致
length:表示数据库表中对应数据类型的长度,如果不写有默认长度
type:表示类型如果不写hibernate可以找到对应pojo类的属性的类型
-->
<id name="id" column="id">
<!-- 主键生成策略
increment:用于为long,short或者int类型生成唯一标识。
只有在没有其他进程往同一张表中插入数据时才能使用。在集群下不要使用
identity:对DB2,MySQL,SQL Server,Sybase和HypersonicSQL的内置标识字段提供支持。
返回的标识符为long,short或者int类型的。
sequence:在支持序列的数据库中使用 Orcale
例: 注:param中的值是数据库sequence的名称
<generator class="sequence">
<param name="sequence">user_seq</param>
</generator>
uuid: UUID被编码为一个32位16进制数字的字符串
native:根据底层数据库的能力选择identity,sequence或者hilo中的一个
assigned: 自己制定主键
-->
<generator class="native"></generator>
</id>
<!-- 实体类属性
name:指明pojo类属性名称(区分大小写)
column:实体类属性对应的数据库表列名
-->
<property name="name">
<column name="name"></column>
</property>
<property name="pwd"/>
</class>
</hibernate-mapping>