【文档摘要】J2EE Persistence - Introduction to the Java Persistence API【Querying Entities】

来源:互联网 发布:网络借钱平台 编辑:程序博客网 时间:2024/05/21 13:25

JPQL (Java Persistence Query Language):JPQL并非类型安全,需要做类型转换,但是JPQL更加类似SQL,比起Criteria API来说,它更加可读。

JPQL Dynamic Query?(这个和J2EE文档解释是否相符?)

@PersistenceContext(unitName="dq") 
EntityManager em; 

    public long queryFinancialRecordsOfDept(String deptName, String companyName) { 
        String query = "SELECT d.records " + 
                       "FROM Department d " + 
                       "WHERE d.name = '" + deptName +  
                       "' AND " + 
                       "      d.company.name = '" + companyName + "'"; 
        return em.createQuery(query, Long.class).getSingleResult(); 
    } 


因为Query是每次生成,每次都可可能不一样,所以很难做cache。效率相对比较低。


Criteria API(typesafe):Criteria API比起Dynamic JPQL来说,性能更好。因为Dynamic JPQL每次都需要做解析。同时Criteria API是类型安全的,不需要做类型转换。但是比起JPQL来说使用起来更加繁琐。


参考资料:

http://www.kumaranuj.com/2013/06/jpa-2-dynamic-queries-vs-named-queries.html

https://docs.oracle.com/javaee/7/tutorial/doc/persistence-intro004.htm#GJISE

0 0
原创粉丝点击