我正在编写一个无状态EJB。 我有类似的方法:
public String getXxx(final String userId) throws ... {
final Query query = em.createNativeQuery(...);
query.setParameter(1, userId);
return (String)query.getSingleResult();
}
我可以缓存Query对象在加载时实例化它并在多线程环境中使用它吗?
private static final Query query = em.createNativeQuery(...);
public String getXxx(final String userId) throws ... {
query.setParameter(1, userId);
return (String)query.getSingleResult();
}
感谢。
答案 0 :(得分:1)
Query
由(和引用)特定EntityManager
实例创建,该实例为:
答案 1 :(得分:1)
我认为ChssPly76是对的。但你应该看看NamedQueries。也许这是你想要的方向。
答案 2 :(得分:0)
但是,您可以使查询String本身进行类实例化。这将在这里和那里为你节省一纳秒。
这是一个非常简化的示例(我为任何语法或其他错误道歉):
private static final String sqlMyQuery =
"SELECT stu FROM Student stu " +
"WHERE stu.zipCode = ?1 " +
"AND stu.status = ?2";
public static Student getStudentByZipAndStatus(String zip, int status) {
Student student = em.createNativeQuery(sqlMyQuery)
.setParameter(1, zip)
.setParameter(2, status)
.getSingleResult();
return (student);
}