在Hibernate中设置更新和插入属性

时间:2012-03-09 18:33:05

标签: hibernate properties insert

在hibernate HBM文件中,设置以下属性的目的是什么?

update = "false"
insert = "false"

他们的目的是什么?它们对性能有何不同?我们什么时候应该使用它们?

2 个答案:

答案 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)

来自the documentation

  

update,insert(可选 - 默认为true):指定   映射列应包含在SQL UPDATE和/或INSERT中   声明。将两者都设置为false允许纯粹的“派生”属性   其值是从映射到的其他属性初始化的   相同的列,或通过触发器或其他应用程序。