当前位置: 首页 > 面试题库 >

为什么默认情况下Hibernate不设置@DynamicInsert

壤驷承
2023-03-14
问题内容

谁能向我解释为什么Hibernate @DynamicInsert默认情况下不设置注释,而是允许实体根据当前设置的属性生成INSERT?

什么是不使用的原因@DynamicInsert,因此默认情况下包括所有实体属性?


问题答案:

@ jb-nizet说了什么。

另外,dynamic-insert="true"在我的书中是个坏主意。

从生成的SQL跳过空字段,很快您将发现自己处于声明列的情况,not null default这实际上导致持久数据与休眠知道的实体数据不同。这会造成挫败感,并可能使您诉诸昂贵的session.refresh()电话。

例如假设列

MESSAGE varchar(64) not null default ''

并且您为映射到此列的属性保存了一个具有空值的实体。

使用dynamic-insert,您将得到一个实体,该实体的内存中属性消息的值为空,而相应的数据库行则带有’‘。

我希望我有道理。特别是如果您正在考虑针对这种情况进行动态插入(以摆脱不必为非null列设置所有属性并依赖默认约束的情况),请再考虑一下。



 类似资料:
  • 问题内容: 谁能向我解释为什么Hibernate 默认将 Dynamic insert = false 设置为10,这是什么原因? 问题答案: @ jb-nizet说了什么。 另外,在我的书中是个坏主意。 从生成的SQL中跳过空字段,很快您将发现自己处于声明列的情况,这实际上导致持久数据与hibernate知道的实体数据不同。这会造成挫败感,并可能使您诉诸昂贵的电话。 例如假设列 并且您为映射到此

  • 问题内容: 作为ASP.NET MVC 2 Beta 2更新的一部分,默认情况下不允许JSON GET请求。看来您需要将字段设置为从控制器返回对象之前。 这背后的原因是什么?如果我正在使用JSON GET尝试进行一些远程验证,那么我应该使用其他技术吗? 问题答案: DenyGet默认的原因是在MSDN上,该链接提供了Phil Haack的博客 的详细信息。看起来像跨站点脚本漏洞。

  • 问题内容: 试图了解熊猫某些功能背后的设计原理。 如果我有一个3560行18列的DataFrame,那么 是3560,但是 是18。 也许对于来自R的人来说这很自然;对我来说,感觉不太“ Pythonic”。是否在某处介绍了熊猫的基本设计原理? 问题答案: DataFrame主要是基于列的数据结构。在后台,DataFrame内部的数据存储在块中。大致来说,每个dtype都有一个块。 每列都有一个d

  • 我正在windows(7.3版)上安装gvim。启动后,我希望设置变量MYVIMRC,但它没有设置。有没有理由不设定。 有一个vimrc文件,因为许多设置与默认设置不同。 我用检查了MYVIMRC的值 gvim可执行文件位于c:\workarea\Vim\vim73中,c:\workare\Vim中的*\u vimrc*(在gvim启动时读取)。启动gvim后,我可以使用 对于版本:我发现系统vi

  • 我有一个关于Hibernate中乐观锁定的问题。我正试图深入乐观地锁定Hibernate,但我有一个疑问。Hibernate使用版本方法(整数或时间戳)来实现乐观锁定。要进行配置,可以使用@Version注释(或xml配置)并创建版本属性。另一个选项是在不使用乐观lock=“all”属性进行版本控制的情况下进行配置。 我的问题是,如果你没有定义任何版本属性,也没有指定乐观锁属性,在这种情况下,哪种

  • 问题内容: 为何默认禁用hibernate批处理/ hibernate.order_updates / hibernate.order_inserts?启用批量大小为50时有什么缺点吗?与order_updates / order_inserts参数相同。有没有不启用此功能的用例?使用此功能是否会对性能产生影响? 我只能看到这些设置在需要减少查询数量时很有用,这在应用程序和数据库服务器之间的延迟很