为什么休眠不设置默认@DynamicInsert
任何人都可以向我解释为什么Hibernate默认情况下不设置注释,并允许实体根据当前设置的属性生成INSERT?@DynamicInsert
默认情况下不使用并因此包含所有实体属性的原因是什么?@DynamicInsert
任何人都可以向我解释为什么Hibernate默认情况下不设置注释,并允许实体根据当前设置的属性生成INSERT?@DynamicInsert
默认情况下不使用并因此包含所有实体属性的原因是什么?@DynamicInsert
@jb-尼泽特说。
另外,在我的书中也是一个坏主意。dynamic-insert="true"
从生成的SQL中跳过空字段,很快你会发现自己将声明列,这实际上会导致持久性数据与休眠所知道的实体数据不同。这将导致挫败感,并可能使您求助于昂贵的电话。not null default
session.refresh()
例如,假设列
MESSAGE varchar(64) not null default ''
,然后保存映射到此列的属性的空值实体。
使用动态插入,您最终会得到一个实体,该实体对内存中的属性消息具有空值,同时相应的数据库行具有“”。
我希望我是有道理的。特别是如果您正在考虑这种情况的动态插入(以避免必须为非空列设置所有属性并依赖于默认约束),请再想一想。
动态插入和更新非常有用,原因有两个:
OptimisticLockException
但是,动态插入/更新也有缺点:
所以,没有好的方法或坏的方法。它只取决于你的数据访问模式,以确定这两者中哪一个对给定实体有意义。