【发布时间】:2017-04-27 10:14:00
【问题描述】:
我正在尝试使用 Wildfly 10.0 应用程序服务器和 Querydsl。我的问题是 Querydsl 需要一个连接来评估 SQL 查询。这段代码 sn-p 显示了我可以获得连接的唯一方法。
@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
@Singleton
public class ServiceTest {
@Resource(lookup = "java:jboss/datasources/postgresDS")
private DataSource ds;
public Memeber getMemeberById(final int id) {
try {
Connection connection = ds.getConnection();
Memeber member = new SQLQuery<Memeber>(new Configuration(new PostgreSQLTemplates()))
.select(Projections.bean(Memeber.class, QMember.member.id.as(Memeber.ID),
QMember.member.name.as(Memeber.NAME)))
.from(QMember.member).where(QMember.member.id.eq(id)).fetchOne();
connection.close();
return member;
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
此解决方案可行,但会产生一些问题。如果所有连接都在使用中,ds.getConnection() 会抛出 javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/datasources/postgresDS 异常。
有什么方法可以访问 Wildfly 连接池来获取连接? SQL 运行后返回连接池?如果 Wildfly 有,我不想实现连接池机制。
【问题讨论】:
-
不,我想尝试一些新的东西。我使用 JPA 大约有两年时间。
-
感谢您的回答@BalusC。我理解你的意见,但我正在寻找一个替代解决方案,而不是 JPA 与 Hibernate 或 EclipseLink 和 Querydsl 看起来很棒。这样我还是需要Hibernate和实体管理器。
-
也许我错过了重点,我的老板也错过了。但是过去我们在使用 JPA 和 Hibernate 时遇到了很多问题(例如:难以阅读的查询、chaching 问题等)。
标签: jakarta-ee wildfly querydsl