2017-10-08 45 views
0

的當使用JPA,一個既可以使用JPQL或 「天然SQL」 編寫查詢:是JPA 「本機SQL」 獨立於底層DBMS

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是一種「中性」SQL的形式,然後被轉換成特定的SQL方言(如MySQL方言)?

回答

0

JPA「本機查詢」是SQL。而且SQL從一個RDBMS變到另一個。當使用「原生查詢」時,您完全是數據庫相關的。所以你應該總是努力盡可能地使用JPQL。

沒有供應商中立表格。顯然,如果所有的RDBMS供應商堅持計劃ANSI SQL並支持相同的語法,那麼所有的RDBMS供應商都會很簡單,但他們不這樣做,而且這不是,而且它不是,而且它不是,而且它不是,而且它不是