问题标签 [jpa]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 我应该使用哪个注释:@IdClass 或 @EmbeddedId
( JPA
Java Persistence API) 规范有 2 种不同的方式来指定实体复合键:@IdClass
和@EmbeddedId
.
我在我的映射实体上使用了这两个注释,但对于不太熟悉JPA
.
我只想采用一种方式来指定复合键。哪一个真的是最好的?为什么?
java - JPA 关系中列的自定义命名
当我使用 hibernate 与 JPA 建立关系时,会生成一些可怕的长且 ackward 的列名。
例如。我有以下内容actionPlan_actionPlanPK
,这意味着该列actionPlan
是指向的 FK actionPlanPK
。
为了使它在数据库中看起来更整洁一点,我希望我可以自己给它一个名称,最好只是它在拥有关系的实体类中的名称。
JPA可以做到这一点吗?
java - 我必须关闭()每个 EntityManager 吗?
我刚刚开始将我自己开发的持久性框架迁移到 JPA。
鉴于持久性框架隐藏了很多管道,我很想知道不关闭 EntityManagers 是否会造成资源泄漏,或者框架是否会为我收集并关闭它们。
我打算在所有地方关闭它们,但我必须这样做吗?
目前使用 TopLink,只是因为它很容易与 NetBeans 一起工作,但很高兴研究其他 JPA 提供程序。
java - Hibernate 使用复合键返回无效结果
我得到了最奇怪的结果。我有一个带有复合键的类。如果我执行以下查询:
来自 LOVEJB l order by l.canonicalId desc
我的结果不是按我要求的“ canonicalId ”列排序的。相反,规范的 id 结果如下:
823 823 822 823 ,,,
有人可以给我一些关于我应该如何尝试破解它的指示吗?我已经搞砸了hashcodes和equals,我尝试了一个新的类等,但无济于事。
java - JPA 复合键 + 序列
是否可以在普通 JPA 或 JPA+Hibernate 扩展中声明复合键,其中复合键的元素是序列?
这是我的复合类:
我已经提供了application
、entity
和nativeId
的值nativeKey
。我想构建一个如下所示的实体:
当我调用em.persist(i1
) 时,我希望canonicalId
生成并插入集成。
这可能吗?如果是这样,简单的方法是什么?(我不喜欢使用应用程序提供的密钥或本机 sql)。
java - 从数据库中获取对象时 JPA (Hibernate) 如何处理事务
我目前正在使用 Hibernate 作为持久性管理器和 JPA 作为持久性管理休眠的抽象在 java 中开发应用程序。
我想知道围绕事务包装结果查询的影响。我知道实体管理器必须为延迟获取的字段错误保持打开状态,这一切中的事务呢?
这是一个具有事务激活/停用能力的代码示例。
调用此函数时启用或禁用 withTransaction 有什么区别?
谢谢大家,弗雷德
java - EJB3 业务逻辑模式和实践
我正在使用 EJB3(Hibernate + Glassfish 用于应用程序和 Web 服务层,Lift on Glassfish 用于 Web UI)在 Java 中开发多层金融处理应用程序,我正在努力解决在哪里的问题把我的业务逻辑。
当这个项目开始时,我们的第一个想法是将大部分业务逻辑放入无状态会话 bean。然而,随着时间的推移,我们发现 EJB 框架提供的依赖注入过于局限,所以我们的很多业务逻辑最终都在由 Guice 在无状态会话 bean 的 @PostConstruct 方法中组装的 POJO 中. 这一进展导致我们在会话 bean 和 POJO 之间的业务逻辑碎片化,我正在尝试找出一种方法来纠正这个问题。
最初,我们尝试让 Web 层使用会话 bean 的远程接口来执行一些可以从 UI 和 Web 服务层访问的功能,这些功能由 @WebService 注释的无状态会话 bean 提供。从持久性和性能的角度来看,这被证明是一场噩梦,因为我们的实体图可能会变得非常大,并且将分离的实体图重新附加到持久性上下文中非常容易出错,所以我们的解决方案是从传递对象开始周围的标识符并在需要时从数据库中查找实体。
我的基本问题是:您可以建议哪些原则和指导方针来决定业务逻辑应该放在会话 bean 中还是 POJO 中?给定一个复杂的对象图,什么时候传递实体 bean 才有意义?
hibernate - JPA / Hibernate在加入时选择列子集
在 SQL 中,很容易进行连接,并且只从连接表中返回您想要的列。在 JPA / Hibernate 中映射它的最佳方法是什么?
例如,有一个文件夹实体映射到 EMAIL_FOLDER,一个电子邮件实体映射到 EMAIL 表。从文件夹到电子邮件是一对多的关系。Email 实体相当重,因为它包含文本、附件等的 CLOB。在某些情况下,我们需要取回整个电子邮件,而在其他情况下,我们只想带回 senderName、subject 和 sentDate 以及不希望引入 CLOB 数据的内存开销。在 SQL 中实现这一点很简单,但我不确定在 JPA / Hibernate 中最好的方法是什么。
我正在考虑创建一个仅映射到 senderName、subject 和 sentDate 的 LightEmail。这是处理此类事情的最佳方法吗?
更新:此时我想尽可能避免使用字节码检测。
hibernate - Spring & Hibernate EJB 事件
是否可以定义一个弹簧管理的 EJB3 休眠监听器?
我的persistence.xml中有这个定义:
但我想管理HibernateAuditInterceptor
和HibernateAuditTrailEventListener
使用 spring,所以我可以在这些类中做一些 bean 注入(例如:会话范围的 bean)。这可能吗?
performance - ORM 解决方案(JPA;Hibernate)与 JDBC
我需要能够在内存 HSQL 数据库中以每 5 秒至少 8000 个对象的一致速率插入/更新对象。
我在 Spring/Hibernate/JPA 和纯 JDBC 之间做了一些比较性能测试。我发现使用 HSQL 在性能上有显着差异。使用 Spring/Hib/JPA,我可以在 5 秒内插入 3000-4000 个 1.5 KB 对象(具有一对多和多对多关系),而直接JDBC 调用我可以插入 10,000-12,000 个相同的对象。
我无法弄清楚为什么会有如此巨大的差异。我已经调整了 Spring/Hib/JPA 设置很多,试图在没有运气的情况下接近性能。我想将 Spring/Hib/JPA 用于未来用途、可扩展性,并且因为外键关系(一对多和多对多)难以手动维护;但性能要求似乎指向使用纯 JDBC。
关于为什么会有如此巨大的差异的任何想法?