鲜花网站项目(二)————数据持久化层的搭建(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>
上面的三种关系除了第一种,一对一主键关联映射不能正常配置以外,其他两种都不需要做任何的修改