hibernate映射配置文件详解

Hibernate中,各表的映射文件….hbm.xml可以通过工具生成,例如在使用MyEclipse开发时,它提供了自动生成映射文件的工具。配置文件的基本结构如下:

<?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">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping 注释①>
    <class name="类名" table="被映射的表名" catalog="test">
	<!-- 主键 -->
        <id name="主键对应持久类的属性名" type="该属性的类型">
            <column name="数据库中主键的列名" />
            <generator class="注释②" />
        </id>
	<!-- 属性列表 -->
        <property name="属性名" length="指定长度" type="属性类型">
            <column name="列名" not-null="是否为空(true/false)"/>
        </property>
        <property name="age" length="11" type="java.lang.Integer">
            <column name="age" not-null="true"/>
        </property>
        <many-to-one lazy="false" name="stuClass" column="classid" class="com.sshtest.bean.StuClass"/>
    </class>
</hibernate-mapping>

 

①:

<hibernate-mapping>元素中的属性如下:
schema:指定映射数据库的schema名;
catalog:指定映射数据库的Catalog名;
default-cascade:设置Hibernate默认的级联风格,默认为none;
default-access:设置默认属性访问策略,默认值为property;
default-lazy:设置默认延时加载策略,默认值为true;
auto-import:是否允许使用非全限定的类名,默认为true;
package:指定一个包,对于映射文件中非全限定的类名,默认在该包下;

 

②:

<generator>元素的class属性指定了如下策略的主键生成器:
increment:自动获取数据表中所有主键中的最大值,在最大值基础上+1,为最新记录的主键;
indentity:自动增长。MS SQL Server、MySQL、DB2等数据库中可以设置表的某个字段(列)的数值自动增长。此种方式生成主键的数据类型可以是long、short、int及其对应的封装类的类型;
sequence:序列。Oracle、DB2等数据库可以创建一个序列,然后从序列中获取当前序号作为主键值;
hilo:“高/低位”搞笑算法产生主键值。此种方法生成主键的数据类型可以是long、short、int及其对应的封装类的类型;
seqhilo:与hilo类似,但使用指定的sequence获取高位值;
uuid:采用128位UUID算法生成一个字符串类型的主键;
guid:采用GUID字符串产生的主键值;
native:由Hibernate根据所使用的数据库支持能力从identity、sequence或者hilo中选择一种,例如Oracle中使用sequence,MySQL中使用identity;
assigned:指派值;
foerign:通过关联持久化对象为主键赋值

你可能感兴趣的:(Hibernate)