要使用的Hibernate或JPA注释
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了要使用的Hibernate或JPA注释相关的知识,希望对你有一定的参考价值。
我在Hibernate Domain Pojo Objects的项目和基于注释的配置中使用Hibernate。对于基于注释的配置,我们有两个选项
- 使用
javax.persistence.*
的基于JPA的注释 - 使用Hibernate Native Annotations
org.hibernate.annotations.*
目前,我们为POJO文件和Hibernate本机API(如SessionFactory,Session等)使用基于JPA的注释配置来打开会话并执行数据库操作。
我有这些问题:
- 混合JPA注释和使用Hibernate本机API有什么问题吗?
- 这个link解释了一个这样的问题(cascade-jpa-hibernate-annotation-common-wrong)
- 请提供您的专业知识,使用哪种注释 JPA Hibernate原生 混合他们两个?
Hibernate提供了一个JPA实现。如果您在代码中使用纯粹的JPA,则可以在需要时自由更改为其他实现。例如,EclipseLink/TopLink和OpenJPA是不同客户可能需要的实现。完整的实现列表是here。
如果您被迫使用hibernate提供的任何不在JPA规范中的异乎寻常的功能,您应该在代码库中使用特定于hibernate的API。来自hibernate论坛here的相关讨论。
我们混合了其中一些注释,因为当时我们正在使用hibernate的版本,当时JPA规范上没有一些功能。例如,要将一个布尔值存储为数据库中的“Y”或“N”,您可以使用休眠类型。但当时JPA规范没有提供此类功能。我现在不知道现状。同样对于孤儿删除也是那些日子JPA没有这个功能,但现在我相信他们在你的级联选项上提供了一个名为orphanRemoval的属性。此外,您还拥有某些功能,例如@BatchSize,以提高相关行李的抓取性能。我不知道JPA规范上是否有这样的功能。
根据我的经验,混合和匹配以及两者的加分都是有益的,因为您无需从一个ORM切换到另一个ORM。
以上是关于要使用的Hibernate或JPA注释的主要内容,如果未能解决你的问题,请参考以下文章
Hibernate @LazyToOne 注释的 JPA 等价物是啥?
JPA 或 Hibernate 生成(非主键)列值,不是从 1 开始
如何将继承策略与 JPA 注释和 Hibernate 混合使用?