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

休眠-hibernate.hbm2ddl.auto =验证

林元明
2023-03-14
问题内容

我对hibernate.hbm2ddl.auto = validate的实际工作方式很感兴趣,并且正在努力寻找全面的文档。

我们最近发现生产系统受到http://opensource.atlassian.com/projects/hibernate/browse/HHH-3532的影响(hibernate匹配名称上的外键,而不是签名,因此将为您重新创建外键)并hibernate.hbm2ddl.auto
= update已从我们的下一个版本中删除。

我很高兴能完全摆脱hibernate.hbm2ddl.auto并自己管理我们的数据库。但是,并非我的所有同事都拥有这种世界观,有些人渴望在hibernate.hbm2ddl.auto
= validate中重新添加

我担心这会遇到相同的问题,并且我有兴趣查找有关此验证实际工作方式的更多文档。Hibernate社区文档(http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-
configuration.html)实际上只是引用了这些值。

有没有人有任何好的文档说明,或者在生产系统中使用validate的任何现实生活经验?


问题答案:

我担心这会遇到相同的问题,并且我有兴趣查找有关此验证实际工作方式的更多文档。

在我看来,最好的文档是源代码,您可以检查该源代码以确切地了解正在发生的事情。相关方法是org.hibernate.tool.hbm2ddl.SchemaValidator#validate()

我快速浏览了代码,但 认为SchemaValidator验证 数据库中的
外键不是:它检查表,列,id生成器的存在,但不检查外键。针对pet数据库的测试似乎证实了此行为:删除FK约束不会破坏架构验证(换句话说,验证器检查应用程序是否可以运行,而不是为了参照完整性)。

现在,HHH-3532被标记为固定,为什么不升级到较新版本的Hibernate,或者如果更改Hibernate的版本过于繁琐,为什么不自己为HHH-3532应用补丁?

综上所述, 不用hibernate.hbm2ddl.auto=update来更新生产数据库,而是使用更改脚本。但是
使用hibernate.hbm2ddl.auto=validate并且对此感到满意。



 类似资料:
  • 问题内容: 我有一个字段,例如,在表中应该是唯一的。 使用Spring / Hibernate验证进行验证的最佳方法是什么? 问题答案: 一种可能的解决方案是创建自定义约束(和相应的验证器)。并在数据库中查找现有记录,请提供(或Hibernate )to 的实例。 EntityManagerAwareValidator ConstraintValidatorFactoryImpl 唯一键 Uniq

  • 问题内容: 从Weblogic 11c切换到Weblogic 12c后,出现此异常: 我发现了有关该主题的其他问题,但是所有解决方案都是关于错误的库的(Vaadin 7-Bean Validation )。我认为我的hibernate-validator与bean验证器库匹配。这是我在WEB-INF / lib中拥有的: 可能是由其他依赖性引起的吗? 编辑 我目前在我的weblogic-appli

  • 问题内容: 我可以在Hibernate中使用MySQL视图,方法是将它们视为表-即。该实体与为表创建的实体相同。但是,当将Hibernate设置为验证模型时,我的应用程序将不会部署,因为它假设它是表就找不到视图。 是否可以在启用部署时间验证的情况下使用Hibernate实体(hibernate.hbm2ddl.auto = validate)? 谢谢。 问题答案: JIRA中对此有几个问题( HH

  • 问题内容: 我有一个hibernate映射,该映射一直工作到最近-尽管我确定这是我所做的某些更改的结果,但我似乎找不到它。 映射文件将字段定义为: 该类将该字段定义为: 运行此代码时,出现以下错误: 与此对应的数据库字段定义为: 我还有其他几个具有相似结构和定义的类,并且它们没有问题。但是,可能由于我最近所做的一些更改而导致,此特定映射将不再正常工作。 有什么建议么? 问题答案: 我不确定,但是您

  • 问题内容: 我收到了一个我无法解释的奇怪的Hibernate异常。告诉我我正在使用二级缓存,但是没有在哪里指定二级缓存。这是例外: 而我的: 有什么想法会触发此异常吗?提前致谢! 问题答案: Pau在hibernate.cfg.xml中写了hibernate.cache.region.factory_class: 唯一的例外是不言而喻的。您必须设置 属性。例如,使用ehcache将添加以下行: n

  • 问题内容: 有人可以透视一下JPA和Hibernate之间的区别吗?还是将这些互补的概念一起使用? 问题答案: 大致来说,JPA是java社区的一个标准,这里是specs,它是由Hibernate家伙实现(并扩展)的(此处提供一些信息)。作为规范,您将不会直接使用JPA,而是使用JPA实现。 请注意,如果要使用hibernateJPA扩展,将破坏与其他JPA实现的兼容性(尽管有些人会说“为什么要使