具有应用程序管理持久性的 quarkus
Posted
技术标签:
【中文标题】具有应用程序管理持久性的 quarkus【英文标题】:quarkus with application managed persistence 【发布时间】:2020-03-18 06:05:16 【问题描述】:实际上,我使用 WildFly JEE Server 并考虑切换到 Quarkus。我有以下关于 quarkus 的问题:
1.持久性.xml
我看到 quarkus 使用自己的application.properties
来设置数据库。我可以改用persistence.xml
吗?
2。容器管理的持久性
quarkus 是否提供类似的东西,还是我必须自己管理持久性?
【问题讨论】:
【参考方案1】:关于您关于Container Manager Persistence的问题;
您可以使用标准的@Transactional
注释标记任何 bean 方法。
事务管理器会自动设置并配置合理的默认值;请参阅Transactions Guide 进行重新配置。
数据源(连接池)与事务管理器集成在一起,并且可以选择允许 XA。见Datasource Guide
Hibernate ORM 自动与上述所有功能集成 - 它在“JTA 模式”下有效运行
您可以使用 CDI 的标准 @Inject
获取 EntityManager
或者您可以使用 Hibernate ORM with Panache 甚至不需要 EntityManager :-) 它仍然会绑定到事务组件。
如果您不喜欢它的集成方式,或者只是喜欢旧式配置,您可以使用 configuration via persistence.xml
作为替代方案。
【讨论】:
将EntityManager注入不同线程的行为是否和Java EE中的一样?在 Java EE 中,注入 entityManager 是一个代理,它被解析为连接池中的一个空闲实例。 quarkus 是否对不同的线程使用不同的 entityManager? 任何以 WildFly 服务器闻名的人都可以看看这个问题***.com/questions/59006162/… @nimo23 这是 CDI 的标准注入,所以是的,在不同的线程中,默认情况下您将拥有不同的 EntityManager;您可以使用自定义生产者自定义范围:您还可以注入EntityManagerFactory
。【参考方案2】:
支持persistence.xml,见this
【讨论】:
以上是关于具有应用程序管理持久性的 quarkus的主要内容,如果未能解决你的问题,请参考以下文章
具有持久 HTTP 连接的 IDbConnection 生命周期管理