<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.test.model.User" table="t_user">
<id name="id">
<generator class=“identity“或class=“native"></generator>
</id>
<property name=“name” type=“java.lang.String”></property>
</class>
</hibernate-mapping>
<hibernate-mapping>
中常用属性:
package:该属性指定一个包前缀名,若`<class>`标签没有指定全限定类名,则默认使用该包前缀。
<class>中的属性:
name:指定该类的全限定类名。
table:若类名与数据库名不相同,则可以定义table属性指定数据库名。
<id>中的属性:
name:指定持久化类的标识属性名。
column:用来指定标识属性所映射的数据列的列名。若不设置该属性,则数据库列名与name属性值一致.
type:指定该标识属性的类型。可以是hibernate的类型,也可以是java类型,若是配置成java类型,则需要使用全限定类名。
<id>标签中包含的<generator>标签用于配置hibernate的主键生成器。该标签的class属性指定hibernate的主键生成策略。
常用的主键生成策略:
(1)uuid:用一个128位的UUID算法生成字符串类型的标识符,这在网络中是唯一的。UUID被编码为一个32位十六进制数的字符串。
(2)native:根据底层数据库的能力选择 identity、sequence 或者 hilo 中的一个。
(3)assigned:让应用程序在调用 save() 之前为对象分配一个标识符。这是 <generator> 元素没有指定时的默认生成策略。
<property>标签属性:
(1)name: 属性的名字,以小写字母开头。
(2)column:可选 ,对应的数据库字段名。默认为属性名字。 也可以通过嵌套的<column>元素指定。
(3)type:可选,属性的类型。可以是hibernate的类型,也可以是java类型,若是配置成java类型,则需要使用全限定类名。 。
(4)unique:可选,使用DDL为该字段添加唯一的约束。 同样,允许它作为property-ref引用的目标。
(5)not-null: 可选,使用DDL为该字段添加可否为空(nullability)的约束。
(6)length:指定该属性映射的数据列的长度。