hibernate面试题 --- Hibernate中最重要的属性cascade和inverse


 

                                                                                           Hibernate中最重要的属性cascade和inverse

一  cascade的介绍

(1)casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似的操作,常用的cascade:

none,all,

save-update ,delete, lock,refresh,evict,replicate,persist,

merge,delete-orphan(one-to-many)

一般对many-to-one,many-to-many不设置级联,在<one-to-one>和<one-to-many>中设置级联。

(2)cascade  对主对象进行操作时是否对从对象也进行操作,体现的是级联的思想

(3)cascade是最好把多的一方设置为主对象,当查询的时候即是更新order时,更新customers

(4)当把cascade设置到多的一方的时候,就会先去保存一的一方,再保存多的一方。执行的sql语句为:

Hibernate: insert into customers (realName, pass, sex, petName, email, rdate) values (?, ?, ?, ?, ?, ?)

Hibernate: insert into orders (number, address, phone, odate, sum, status, cid) values (?, ?, ?, ?, ?, ?, ?)

Hibernate: insert into orders (number, address, phone, odate, sum, status, cid) values (?, ?, ?, ?, ?, ?, ?)

Hibernate: insert into orders (number, address, phone, odate, sum, status, cid) values (?, ?, ?, ?, ?, ?, ?)

Hibernate: insert into orders (number, address, phone, odate, sum, status, cid) values (?, ?, ?, ?, ?, ?, ?)

Hibernate: insert into orders (number, address, phone, odate, sum, status, cid) values (?, ?, ?, ?, ?, ?, ?)

Hibernate: insert into orders (number, address, phone, odate, sum, status, cid) values (?, ?, ?, ?, ?, ?, ?)

Hibernate: insert into orders (number, address, phone, odate, sum, status, cid) values (?, ?, ?, ?, ?, ?, ?)

Hibernate: insert into orders (number, address, phone, odate, sum, status, cid) values (?, ?, ?, ?, ?, ?, ?)

Hibernate: insert into orders (number, address, phone, odate, sum, status, cid) values (?, ?, ?, ?, ?, ?, ?)

 

(5)当把cascade设置到一的一方的时候,会先保存多的一方,因为当保存了多的一方的时候,没有外键,所以当在插入一的一方的时候就会更新多的一方,执行的结果为:

    Hibernate: insert into orders (number, address, phone, odate, sum, status, cid) values (?, ?, ?, ?, ?, ?, ?)

Hibernate: insert into orders (number, address, phone, odate, sum, status, cid) values (?, ?, ?, ?, ?, ?, ?)

Hibernate: insert into orders (number, address, phone, odate, sum, status, cid) values (?, ?, ?, ?, ?, ?, ?)

Hibernate: insert into orders (number, address, phone, odate, sum, status, cid) values (?, ?, ?, ?, ?, ?, ?)

Hibernate: insert into orders (number, address, phone, odate, sum, status, cid) values (?, ?, ?, ?, ?, ?, ?)

Hibernate: insert into orders (number, address, phone, odate, sum, status, cid) values (?, ?, ?, ?, ?, ?, ?)

Hibernate: insert into orders (number, address, phone, odate, sum, status, cid) values (?, ?, ?, ?, ?, ?, ?)

Hibernate: insert into orders (number, address, phone, odate, sum, status, cid) values (?, ?, ?, ?, ?, ?, ?)

Hibernate: insert into orders (number, address, phone, odate, sum, status, cid) values (?, ?, ?, ?, ?, ?, ?)

Hibernate: insert into customers (realName, pass, sex, petName, email, rdate) values (?, ?, ?, ?, ?, ?)

Hibernate: update orders set number=?, address=?, phone=?, odate=?, sum=?, status=?, cid=? where id=?

Hibernate: update orders set number=?, address=?, phone=?, odate=?, sum=?, status=?, cid=? where id=?

Hibernate: update orders set number=?, address=?, phone=?, odate=?, sum=?, status=?, cid=? where id=?

Hibernate: update orders set number=?, address=?, phone=?, odate=?, sum=?, status=?, cid=? where id=?

Hibernate: update orders set number=?, address=?, phone=?, odate=?, sum=?, status=?, cid=? where id=?

Hibernate: update orders set number=?, address=?, phone=?, odate=?, sum=?, status=?, cid=? where id=?

Hibernate: update orders set number=?, address=?, phone=?, odate=?, sum=?, status=?, cid=? where id=?

Hibernate: update orders set number=?, address=?, phone=?, odate=?, sum=?, status=?, cid=? where id=?

Hibernate: update orders set number=?, address=?, phone=?, odate=?, sum=?, status=?, cid=? where id=?

 

这是说服为什么把cascade放到多的一方的最好的证据,所以规范的写法就是 :

在多的一方加cascade=”save-update” 等参数

 

  二   inverse   表示是否放弃维护权

1.inverse是决定的双向关联中哪一方来维护为表与表的关系,在没有设定的情况下,两端都维护,设置的参数为:

true  表示放弃维护权   会提高效率

false  表示是不放弃维护权

2.设置原则是:

    在一对多的关系中,将在一的一方设置为主动方,在一的一方放弃维护的权利

在多的一方加cascade=”save-update”

在一的一方加 inverse=”true”

3.Inverse表示是否维护两者的关联关系,inverse的默认值是f

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值