我正在嘗試使用Wildfly 10.0應用程序服務器和Querydsl。我的問題是Querydsl需要一個連接來消除SQL查詢。此代碼片段中顯示了我可以獲得連接的唯一方法。有沒有辦法從野蠅連接池中獲得連接?
@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:無法獲取java:jboss/datasources/postgresDS異常的託管連接。
有什麼辦法可以訪問Wildfly連接池來獲得連接嗎?並在SQL運行後返回到連接池?如果Wildfly有一個連接池機制,我不想實現連接池機制。
不,我想嘗試新的東西。我使用了約兩年的JPA。 – goku91
謝謝你的回答@BususC。我理解你的意見,但我尋找替代解決方案,而不是使用Hibernate或EclipseLink的JPA,並且Querydsl看起來不錯。這樣我仍然需要Hibernate和實體管理器。 – goku91
也許我錯過了它的一點,我的腦子也錯過了它。但是在過去,我們在JPA和Hibernate方面遇到了很多問題(例如:難以理解的查詢,查詢問題等)。 – goku91