hibernate 映射配置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>
    <class name="com.jaeson.hibernatestudy.bean.Role" table="role" catalog="db4myeclipse">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native"></generator>
        </id>
        <property name="roleName" type="java.lang.String">
            <column name="roleName" length="32" not-null="true" />
        </property>
        <property name="roleDesc" type="java.lang.String">
            <column name="roleDesc" length="128" />
        </property>
        
        <!-- many2many双向关联 -->
        <set name="users" inverse="true" table="user_role" catalog="db4myeclipse">
            <key>
                <column name="role_id" not-null="true" />
            </key>
            <many-to-many entity-name="com.jaeson.hibernatestudy.bean.User">
                <column name="user_id" length="32" not-null="true" />
            </many-to-many>
        </set>
    </class>
</hibernate-mapping>
<?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>
    <class name="com.jaeson.hibernatestudy.bean.IdCard" table="idcard" catalog="db4myeclipse">
        <id name="id" type="java.lang.String">
            <column name="id" length="32" />
            <generator class="uuid"></generator>
        </id>
        <property name="cardNo" type="java.lang.String">
            <column name="cardNo" length="32" not-null="true" />
        </property>
        <property name="authDate" type="java.sql.Timestamp">
            <column name="authDate" length="19" not-null="true" />
        </property>
		<!-- one2one 默认是共享主键的加载方式,唯一外键关联必须在一端设置加载的连接属性,
				连接属性指的是外键所在表的对应的类的属性,hibernate根据类属性对应的字段加载
				连接类。IdCard根据主键id与关联表类User的idCard属性对应的列card_id进行加载
				User对象。这里如果不设置property-ref属性,则加载User时,默认会使用
				IdCard.id=User.id进行加载,这样就无法正确加载关联对象。
				 -->
		<one-to-one name="user" class="com.jaeson.hibernatestudy.bean.User" property-ref="idCard"></one-to-one>
    </class>
</hibernate-mapping>
<?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>
    <class name="com.jaeson.hibernatestudy.bean.User" table="user" catalog="db4myeclipse">
        <id name="id" type="java.lang.String">
            <column name="id" length="32" />
            <generator class="uuid"></generator>
        </id>
        
        <property name="userName" type="java.lang.String">
            <column name="userName" length="32" not-null="true" />
        </property>
        
        <!-- 组件映射 -->
		<component name="address" class="com.jaeson.hibernatestudy.bean.Address">  
	        <property name="address" type="java.lang.String">
	            <column name="address" length="128" />
	        </property>
	        <property name="zipCode" type="java.lang.Integer">
	            <column name="zipCode" />
	        </property>
	        <property name="phone" type="java.lang.String">
	            <column name="phone" length="32" />
	        </property>
	    </component>
		
		<!-- one2one外键关联,通过unique="true"实现 -->
        <many-to-one name="idCard" class="com.jaeson.hibernatestudy.bean.IdCard" cascade="all" fetch="select" unique="true">
            <column name="card_id" length="32" />
        </many-to-one>
        
        <!-- many2one关联 -->
        <many-to-one name="department" class="com.jaeson.hibernatestudy.bean.Department" fetch="select">
            <column name="dept_id" length="32" />
        </many-to-one>
       	
       	<!-- many2many关联 -->
       	<set name="roles" table="user_role" catalog="db4myeclipse">
            <key>
                <column name="user_id" length="32" not-null="true" />
            </key>
            <many-to-many entity-name="com.jaeson.hibernatestudy.bean.Role">
                <column name="role_id" not-null="true" />
            </many-to-many>
        </set>
    </class>
</hibernate-mapping>
<?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>
    <class name="com.jaeson.hibernatestudy.bean.Department" table="department" catalog="db4myeclipse">
        <id name="id" type="java.lang.String">
            <column name="id" length="32" />
            <generator class="assigned"></generator>
        </id>
        
        <property name="deptName" type="java.lang.String">
            <column name="deptName" length="32" not-null="true" />
        </property>
        
        <!-- 设置fetch="join"在查询department时会使用inner join进行表连接查询,lazy失效 -->
        <many-to-one name="parentDept" class="com.jaeson.hibernatestudy.bean.Department" fetch="join">
            <column name="parent_id" length="32" />
        </many-to-one>
        
        <set name="users" inverse="true">
            <key>
                <column name="dept_id" length="32" />
            </key>
            <one-to-many class="com.jaeson.hibernatestudy.bean.User" />
        </set>
        
        <set name="childDepts" inverse="true">
            <key>
                <column name="parent_id" length="32" />
            </key>
            <one-to-many class="com.jaeson.hibernatestudy.bean.Department" />
        </set>
    </class>
</hibernate-mapping>

  

<?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>
    <class name="com.jaeson.hibernatestudy.bean.Department" table="department" catalog="db4myeclipse">
        <id name="id" type="java.lang.String">
            <column name="id" length="32" />
            <generator class="assigned"></generator>
        </id>
        
        <property name="deptName" type="java.lang.String">
            <column name="deptName" length="32" not-null="true" />
        </property>
        
        <!-- 设置fetch="join"在查询department时会使用inner join进行表连接查询,lazy失效 -->
        <many-to-one name="parentDept" class="com.jaeson.hibernatestudy.bean.Department" fetch="join">
            <column name="parent_id" length="32" />
        </many-to-one>
        
        <set name="users" inverse="true">
            <key>
                <column name="dept_id" length="32" />
            </key>
            <one-to-many class="com.jaeson.hibernatestudy.bean.User" />
        </set>
        
        <set name="childDepts" inverse="true">
            <key>
                <column name="parent_id" length="32" />
            </key>
            <one-to-many class="com.jaeson.hibernatestudy.bean.Department" />
        </set>
    </class>
</hibernate-mapping>

  

猜你喜欢

转载自jaesonchen.iteye.com/blog/2286973
今日推荐