Search this documentation
No labels match these criteria.
Recently Updated Pages
JPA-SQL is a domain-specific, database-independent language (DSL). The syntax is deliberately similar to SQL so that JPA-SQL is easy to learn. However, JPA-SQL is not to be confused with native SQL. Queries formulated in JPA-SQL are never sent to a database. Instead, they are converted to Java code based on the JPA Criteria API. Thus, you can access all the benefits of the JPA Criteria API without having to write the JPA Criteria code.
At runtime, the JPA provider generates the native SQL statements from the generated JPA Criteria code to match the connected database, and these are sent to the database. Thus JPA-SQL combines the simplicity of SQL with the numerous advantages of JPA Criteria API.
JPQL and native SQL
Many JPA developers use JPQL instead of JPA Criteria API, because JPQL code is much clearlier than Criteria code. JPA allows us to use native SQL as well. However, JPQL contains SQL strings, which have lots of disadvantages.
Benefits with JPA-SQL compared to JPQL and native SQL
- Clearer code structure
- Type safe
- Any order of statements
- IDE support
- Code Completion - detection of keywords, operators, and entities
- Syntax highlighting
- Code folding
Inline refactoring and refactoring participants for JDT member renames and moves
Error/warning markers with quick fixes
Integration in Eclipse build process
- Debuggable (JPA Criteria Code is generated)
- Query method is automatically generated in DAO
- Database independent
Benefits with JPA-SQL compared to JPA Criteria API
Why not using JPA Criteria API directly?
- SQL-like syntax and code structure
- Significantly lower complexity
- Cleaner code
- Easy to learn