免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
カスケード操作の多くは
削除カスケード
- カスケード削除します:
- 一方、他のデータも削除することができながら、時に削除します。
顧客の連絡先を削除カスケード削除
<set name="linkMans" cascade="save-update,delete">
@Test
/**
* * 级联删除:
* * 删除客户联系人,删除的主体是客户,需要在Customer.hbm.xml中配置
* * <Set name ="LinkMans" cascade="delete">
*/
public void demo5() {
Session session=HibernateUtils.getCurrentSession();
Transaction tx = session.beginTransaction();
/*
* //没有设置级联删除,默认情况:修改联系人的外健,删除客户 Customer customer=session.get(Customer.class,
* 1l); session.delete(customer);
*/
//先查询再删除
Customer customer =session.get(Customer.class, 2l);
session.delete(customer);
tx.commit();
}
連絡先のカスケードは、クライアント(基本的な必要性を)削除削除
<many-to-one name="Customer" cascade="save-update,delete" class="HibernateDemo01.Customer" column="lkm_cust_id"></many-to-one>
@Test
/**
* * 级联删除:
* * 删除联系人删除客户,删除的主体是客户,需要在Customer.hbm.xml中配置
* * <Set name ="LinkMans" cascade="delete">
*/
public void demo6() {
Session session=HibernateUtils.getCurrentSession();
Transaction tx = session.beginTransaction();
/*
* //没有设置级联删除,默认情况:修改联系人的外健,删除客户 Customer customer=session.get(Customer.class,
* 1l); session.delete(customer);
*/
//先查询再删除
//删除客户,同时删除联系人
LinkMan linkMan=session.get(LinkMan.class, 3l);//查询
session.delete(linkMan);
tx.commit();
}
余分なSQL文を生成するように設定多くの双方向関連
@Test
/**
* * 将2号联系人原来归1号用户,现在改为2号用户
*/
public void demo07() {
Session session=HibernateUtils.getCurrentSession();
Transaction tx = session.beginTransaction();
//查询2号联系人
LinkMan linkMan = session.get(LinkMan.class, 2l);
//查询2号联系人
Customer customer=session.get(Customer.class, 2l);
//双向关联、
linkMan.setCustomer(customer);
customer.getLinkMans().add(linkMan);
tx.commit();
}
- 余分なSQL文を解きます
- 片道のメンテナンス:
- 外部キーを維持する権利を放棄する当事者:
- パーティーは放棄します。=「true」を逆セット内に配置されました
- クエリの多くに関連する時間を変更します。(CRM実践 - )
<set name="linkMans" cascade="save-update,delete" inverse="true">
カスケードと逆を区別する
@Test
/**
* *区分cascade和inverse的区别
*/
public void demo08() {
Session session = HibernateUtils.getCurrentSession();
Transaction tx = session.beginTransaction();
Customer customer=new Customer();
customer.setCust_name("张三");
LinkMan linkMan=new LinkMan();
linkMan.setLkm_name("陈七");
customer.getLinkMans().add(linkMan);
//条件在Customer.hbm.xml上的set中配置cascade="save-update" inverse="true"
session.save(customer);//客户会插入到数据库,联系人也会插入到数据库,但是外键为null
tx.commit();
}