在Hibernate中,映射文件通常以“hbm.xml”作为后缀。位置是在实体包下,是实体类到数据库表的一个映射信息
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.happy.entity"> <class name="Student" table="Student"> <id name="id" column="id"> <generator class="native"></generator> </id> <property name="name" column="name"/> </class> </hibernate-mapping>
class : 定义一个持久化类的映射信息:
name :表示持久化类的全限定名,也就是实体类的名称
table :表示持久化类映射到数据库的表名
id : 表示持久化类的OID和表主键的映射
name :表示持久化类的属性的名称,和属性的访问器相匹配。
column :表示持久化类属性对应数据库表中的字段名称。
type :持久化类属性的类型,可以不写。
generator :ID元素的子元素,用于生成主键的策略。
class :用来指定具体的生成策略
param :用来专递参数
常用的主键生成策略:
(1)increment :对类型为 long、short 或 int 的主键,以自动增长的方式生成主键的值 。主键按数值顺序递增,增量为1。
(2)identity : 对如SQL Server、DB2、MySQL 等支持标识列的数据库,可使用该主键生成策略生成自动增长主键,但要在数据库中将该主键设置为标识列。
(3)sequence :对如Oracle、DB2 等支持序列的数据库,可以使用该主键生成策略生成自动增长主键,通过子元素param 传入数据库中序列的名称。
(4)native : 由 HIbernate 根据底层数据库自行判断采用何种主键生成策略,即由使用的数据库生成主键的值。
(5)assigned :主键由应用程序负责生成,无需Hibernate 参与。
property : 定义持久化类中属性和数据库中的表的字段的对应关系。
name : 表示持久化类属性的名称,和属性的访问器相匹配。
type : 表示持久化类属性的类型。
column : 表示持久化类属性对应的数据库表字段的名称,也可以在子元素column中指定。
column元素: 用于指定其父元素代表的持久化类属性所对应的数据库表中的字段。
name : 表示字段的名称
length : 表示字段长度
not-null :设定是否可以为null,值为true表示不能为null。