Hibernate 一对多& 多对一& 多对多 配置及使用
一、一对多中,多方的外键指向一方的主键。
例:
一方实体类:
Customer.java
private Long cust_id;//主键 private String cust_name; private String cust_source; private String cust_industry; private String cust_level; private String cust_linkman; private String cust_phone; private String cust_mobile; //使用set集合,表达一对多关系 private Set<LinkMan> linkMens = new HashSet<LinkMan>();
多方实体类 一般hibernate操作的表都是要有主键的。
private Long lkm_id;//主键
private Character lkm_gender; private String lkm_name; private String lkm_phone; private String lkm_email; private String lkm_qq; private String lkm_mobile; private String lkm_memo; private String lkm_position; //表达多对一关系 相当于外键字段 private Customer customer ;
一方配置文件一对多配置
Customer.hbm.xml
<!-- inverse属性: 配置关系是否维护. true: customer不维护关系 false(默认值): customer维护关系 inverse属性: 性能优化.提高关系维护的性能. 原则: 无论怎么放弃,总有一方必须要维护关系. 一对多关系中: 一的一方放弃.也只能一的一方放弃.多的一方不能放弃. --> <set name="linkMens" inverse="true" cascade="delete" > <key column="lkm_cust_id" ></key> <one-to-many class="LinkMan" /> </set>
多方配置文件多对一配置
LinkMan.hbm.xml
<!-- 多对一 --> <!-- name属性:引用属性名 column属性: 外键列名 class属性: 与我关联的对象完整类名 --> <!-- 级联操作: cascade save-update: 级联保存更新 delete:级联删除 all:save-update+delete 级联操作: 简化操作.目的就是为了少些两行代码. --> <!-- 多的一方: 不能放弃维护关系的.外键字段就在多的一方. --> <many-to-one name="customer" column="lkm_cust_id" class="Customer" > </many-to-one>
学习记录,网上找的,自己写的都记录下来。如有雷同并且侵犯到您的权益,请联系本人修改。
浙公网安备 33010602011771号