hibernate的级联操作
在hibernate的操作中可以进行级联操作来避免对关联对象的重复操作。
hibernate中的持久化的操作都对应了相应的级联风格。
merge()-----merge
delete()----delete
saveOrUpdate()----save-update
refresh()---refresh
evict()---evict
在配置文件中默认的时none,即任何操作都不会被级联。
在配置文件中也可以指定为all此时时对所有的操作都进行相应的级联操作。
级联风格可以组合,如:<one-to-one name="person" cascade="delete,save-update">
注意:另一种级联风格为:delete-orphan,只应用于one-to-many关联,表明delete()操作应该被应用于所有从关联中删除的对象。
除非被标记为cascade="delete-orphan"(删除“孤儿”模式,此时不被任何一个父对象引用的子对象会被删除), 否则子对象失掉父对象对其的引用时,什么
事也不会发生。 如果有特殊需要,应用程序可通过显式调用delete()删除子对象。
save()操作是直接在数据库内持久化一个新的对象,
update()操作是将修改一个给定标识的持久化对象,如果当前session中存在一个相同标识的持久化对象,将会抛出异常。
saveOrUpdate()操作是当当前session存在一个持久化对象时就会修改此对象,如果不存在就会持久化一个新的对象,当你修改的对象中设置了标示符的值时但是
此标示符表示的对象在数据库中没有相应的记录时将会报错。
merge()操作是拷贝一个对象来改变和当前session关联的相同的标识的持久化对象,如果当前session中不存在相同标识的对象,就会重新加载一个相同标识的对
象,若被对象还没有被持久化,将会持久化被对象并返回持久化的对象。同时原来的对象将不会改变。
以上操作将会根据配置文件中配置的级联风格来相应的改变子类。