学習ログ--2019 / 8月20日

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/weixin_44757417/article/details/99873884

カスケード操作の多くは

削除カスケード

  • カスケード削除します:
    • 一方、他のデータも削除することができながら、時に削除します。
顧客の連絡先を削除カスケード削除
	 <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();
	}

おすすめ

転載: blog.csdn.net/weixin_44757417/article/details/99873884