具有应用程序管理持久性的 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 生命周期管理

具有资源前提条件的 Quarkus 资源测试

Quarkus IBM MQ集成

设计具有数据持久性的 Web 应用程序的更好方法

是否有具有多个命名 Oidc 客户端的示例 quarkus 项目来调用多个服务调用?

在 IIS 上托管的 ASP.NET Core WebApp 上提供持久配置