Posted on 2009-04-08 08:46
landor 阅读(492)
评论(0) 编辑 收藏 所属分类:
hibernate
是否这样设置了一对多,比如父类是Customer
<set name="orderses" lazy="true" cascade="all" inverse="true">
其实很简单,当子类要进行保存操作的时候,要先到数据库里面去查询是否已经存在了,如果存在了就调用update,否则就是insert,这就产生了那条select
如果是多条Order的话,就会产生多个sql语句
也不能说影响性能,正常写jdbc的时候也需要这么判断的
如果想去掉这个查询语句,那只有麻烦点了,就是去掉
<set name="orderses" lazy="true" cascade="all" inverse="true">
中的cascade="all"
变为
<set name="orderses" lazy="true" inverse="true">
,默认的cascade是null的
然后手工保存子类(Orders),比如:
session.save(cust)
session.save(orders1)
session.save(orders2)
一堆多余的sql了,但是增加了代码的工作量