2017-10-08 12 views
0

JPAを使用する場合は、1がクエリを記述するためにJPQLまたは "ネイティブSQL" を使用することができますどちらかですはJPA基礎となるDBMSの "ネイティブSQL" 独立

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方言(MySQL方言など)に変換される「中立」SQLの形式ですか?

答えて

0

JPA「ネイティブ・クエリ」はSQLです。 SQLは、RDBMSごとに異なります。あなたは完全にデータベース依存 "ネイティブクエリ"を使用しています。したがって、可能な限りJPQLを常に使用するよう努めなければなりません。

ベンダーニュートラルフォームはありません。明らかに、すべてのRDBMSベンダーがANSI SQLを計画して同じ構文をサポートしていれば、すべて単純になるでしょうが、そうではありません。

関連する問題