Posted on 2009-04-08 08:46
landor 閱讀(503)
評論(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了,但是增加了代碼的工作量