1. 程式人生 > >hibernate 多表維護

hibernate 多表維護

1、一對多(SysUser 對 Customer)

  • 一對多關係對映(在實體類中宣告包含的集合)
    在Customer中有:private Set linkmans = new HashSet();
    在LinkMan中有:Customer customer;

  • 一: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="com.itheima.domain"> <class name="Customer" table="cst_customer"> <id name="custId" column="cust_id"> <generator class="native"></generator> </id> <property name="custName" column="cust_name">
</property> <!-- 一對多關係對映 涉及的標籤 set:用於對映set集合屬性 屬性: name:指定集合屬性的名稱 table:在一對多的時候寫不寫都可以。 它指定的是集合元素所對應的表 one-to-many:用於指定當前對映配置檔案所對應的實體和集合元素所對應的實體是一對多關係。 屬性: class:指定集合元素所對應的實體類名稱。 key:用於對映外來鍵欄位的。 屬性: column:指定從表中的外來鍵欄位名稱 -->
<set name="linkmans" table="cst_linkman"> <key column="lkm_cust_id"></key> <one-to-many class="LinkMan"/> </set> </class> </hibernate-mapping>
  • 多: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="com.itheima.domain">
    <class name="LinkMan" table="cst_linkman">
        <id name="lkmId" column="lkm_id">
            <generator class="native"></generator>
        </id>
        <property name="lkmName" column="lkm_name"></property>
        <!-- 多對一關係對映 
            涉及的標籤:
                many-to-one:用於建立多對一的關係對映配置
                    屬性:
                      name:指定的實體類中屬性的名稱
                      class:該屬性所對應的實體類名稱。如果在hibernate-mapping上沒有導包,則需要寫全限定類名
                      column:指定從表中的外來鍵欄位名稱
        -->
        <many-to-one name="customer" class="Customer" column="lkm_cust_id" />   </class>

2、多對多

兩個表都是set集合。

3、程式碼注意點

  • 解決多一條update語句的問題:
<set name="linkmans" table="cst_linkman" inverse="true">
        <key column="lkm_cust_id"></key>
        <one-to-many class="LinkMan"/>
</set>