鲜花网站项目(二)————数据持久化层的搭建(hibernate4.1)

打开MyEclipse的database Explorer找到表然后反转工程(reverse Engineering),得到entity类 AND mapping映射文件。

找到因为user表和userdetail表示一对一主键双向关联映射,userdetail表的主键也是user表的外键。所以在User.hbm.xml文件中

      <id name="userId" type="java.lang.Integer">
            <column name="user_id" />
            <generator class="native" />
        </id>     
      
     <one-to-one name="userDetails" class="com.jikexueyuan.entity.UserDetail" cascade="all"></one-to-one>

而在Userdetail.hbm.xml中对于这段关系的描述是这样的

     <id name="userdetailId" column="userdetail_id">
              <generator class="foreign">
                  <param name="property">user</param>
              </generator>
          </id>
       <one-to-one name="user" class="com.jikexueyuan.entity.User" constrained="true"></one-to-one>   

 

我们知道(user与shopping_cart)、(user与shopping_order)、(user与consume_record)、(consume_record与consumerecord_detail)、(flower与shopping_cart)、(flower与shopping_order)、(flower与consumerecord_detail)都是是双向一对多的关系,这个前面已经说过了,所以这里的配置文件就以(user与shopping_cart)为例

User.hbm.xml

<set name="shoppingCarts" inverse="true" lazy="false" cascade="all">
            
            <key>
                <column name="user_id" />
            </key>
               
            <one-to-many class="com.jikexueyuan.entity.ShoppingCart" />
</set>     

ShoppingCart.hbm.xml

   <many-to-one name="user" class="com.jikexueyuan.entity.User" fetch="select">
         <column name="user_id" />
   </many-to-one>

上面说完了一对一主键关联映射,一对多外键关联映射,下面我们表中还有一种关系就是多对多外键关联映射flower表和catalog表

Catalog.hbm.xml

   <set name="flowers" inverse="true" table="catalog_flower" catalog="flower" lazy="false">
            <key>
                <column name="catalog_id" not-null="true" />
            </key>
            <many-to-many entity-name="com.jikexueyuan.entity.Flower">
                <column name="flower_id" not-null="true" />
            </many-to-many>
        </set>

Flower.hbm.xml

    <set name="catalogs" table="catalog_flower" catalog="flower">
            <key>
                <column name="flower_id" not-null="true" />
            </key>
            <many-to-many entity-name="com.jikexueyuan.entity.Catalog">
                <column name="catalog_id" not-null="true" />
            </many-to-many>
        </set>

上面的三种关系除了第一种,一对一主键关联映射不能正常配置以外,其他两种都不需要做任何的修改

posted @ 2017-03-12 16:22  我们不该这样的  阅读(127)  评论(0编辑  收藏  举报