任何人都可以请解释我JPA的EntityManager的以下方法之间的差异:createQuery(),createNamedQuery()和createNativeQuery()并解释我在哪些情况下你应该使用哪种方法?
小智 38
createQuery方法用于创建动态查询,这些查询是直接在应用程序的业务逻辑中定义的查询.例:
public List findWithName(String name) {
return em.createQuery(
"SELECT c FROM Customer c WHERE c.name LIKE :custName")
.setParameter("custName", name)
.setMaxResults(10)
.getResultList();
}
Run Code Online (Sandbox Code Playgroud)createNamedQuery方法用于创建静态查询,或使用javax.persistence.NamedQuery批注在元数据中定义的查询.@NamedQuery的name元素指定将与createNamedQuery方法一起使用的查询的名称.@NamedQuery的查询元素是查询:
@NamedQuery(
name="findAllCustomersWithName",
query="SELECT c FROM Customer c WHERE c.name LIKE :custName"
)
Run Code Online (Sandbox Code Playgroud)这是createNamedQuery的一个例子,它使用@NamedQuery:
@PersistenceContext
public EntityManager em;
...
customers = em.createNamedQuery("findAllCustomersWithName")
.setParameter("custName", "Smith")
.getResultList();
Run Code Online (Sandbox Code Playgroud)
createNativeQuery创建Query实例以执行本机SQL语句.以下是选择createNativeQuery的一些原因:
有关详细信息,请访问以下链接
| 归档时间: |
|
| 查看次数: |
69150 次 |
| 最近记录: |