在hibernate HBM文件中,设置以下属性的目的是什么?
update = "false"
insert = "false"
他们的目的是什么?它们对性能有何不同?我们什么时候应该使用它们?
答案 0 :(得分:11)
在计算/派生属性时,或者数据库或触发器负责插入/或更新值时,使用update =“false”,insert =“false”。
例如,如果数据库会自动生成您要使用的INSERT上的值,则指定insert =“false”,以便Hibernate不会在INSERT语句中包含该属性。
另一个例子是,通过SQL公式计算/派生属性:例如,您可以检索每个客户的订单总数。例如:
<property name="totalOrders" insert="false" update="false">
<formula>(select sum(ORDER.TOTAL) from ORDER where ORDER.FK_CUSTOMER=ID)</formula>
</property>
在这种情况下,我们设置insert =“false”,update =“false”,因为这显然是派生结果,我们无法直接更新。
性能?这不是关于性能 - 而是关于数据库映射需要什么。
答案 1 :(得分:7)
update,insert(可选 - 默认为true):指定 映射列应包含在SQL UPDATE和/或INSERT中 声明。将两者都设置为false允许纯粹的“派生”属性 其值是从映射到的其他属性初始化的 相同的列,或通过触发器或其他应用程序。