是JPA"原生SQL"独立于底层DBMS

时间:2017-10-08 00:26:37

标签: sql database jpa jpql

使用JPA时,可以使用JPQL或" native SQL"写查询:

JPQL示例:

interface TodoRepository extends Repository<Todo, Long> {

    @Query("SELECT t FROM Todo t WHERE t.title = 'title'")
    public List<Todo> findByTitle();
}

SQL示例:

interface TodoRepository extends Repository<Todo, Long> {

    @Query(value = "SELECT * FROM todos t WHERE t.title = 'title'", 
    nativeQuery=true)
    public List<Todo> findByTitle();
}

JPQL显然独立于底层数据库(Oracle,MySQL等) 我的问题是:SQL是否也独立于底层数据库?也就是说,这个SQL是某种形式的&#34;中性&#34; SQL然后被翻译成特定的SQL方言(如MySQL方言)?

1 个答案:

答案 0 :(得分:0)

JPA“本机查询”是SQL。 SQL从一个RDBMS到另一个不同。使用“本机查询”时,您完全依赖于数据库。所以你应该尽可能地努力使用JPQL。

没有供应商中立形式。显然,如果所有RDBMS供应商坚持计划ANSI SQL并支持相同的语法,那么一切都会很简单,但它们不会,而且它不是