-
JPA JPA의 기초DBMS/JPA 2024. 8. 9. 19:25728x90반응형
JPA 기초
1. 데이터베이스 방언
• 방언: SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능
JPA는 특정 데이터베이스에 종속적이지 않다.
각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다르다.
• 가변 문자: MySQL은 VARCHAR, Oracle은 VARCHAR2
• 문자열을 자르는 함수: SQL 표준은 SUBSTRING(), Oracle은 SUBSTR()
• 페이징: MySQL은 LIMIT , Oracle은 ROWNUM
hibernate.dialect 속성에 값을 지정하면 자동으로 해당 DB에 알맞은 방언으로 교체해서 실행한다.
• H2 : org.hibernate.dialect.H2Dialect
• Oracle 10g : org.hibernate.dialect.Oracle10gDialect
• MySQL : org.hibernate.dialect.MySQL5InnoDBDialect
하이버네이트는 40가지 이상의 데이터베이스 방언 지원한다.
2. JPA 구동 방식
설정 정보를 조회하고, 그에 따라 EntityManagerFactory를 생성하고, EntityManager가 생성된다.
엔티티 매니저 팩토리는 하나만 생성해서 애플리케이션 전체에서 공유된다.
엔티티 매니저는 쓰레드간에 공유되지 않는다. (사용하고 버려야 한다).
JPA의 모든 데이터 변경은 트랜잭션 안에서 실행된다.
3. JPQL
JPQL을 한마디로 정의하면 객체 지향 SQL이다.
JPA를 사용하면 엔티티 객체를 중심으로 개발한다. 하지만 검색 쿼리에서 문제가 생기는 경우가 있다.
검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색하는데, 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능하다. 애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요하다.
JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공한다.
따라서 특정 데이터베이스 SQL에 의존하지 않는다.
SQL과 문법 유사하고, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN도 전부 지원한다.
JPQL과 SQL이 차이점
JPQL은 엔티티 객체를 대상으로 쿼리
SQL은 데이터베이스 테이블을 대상으로 쿼리
728x90반응형'DBMS > JPA' 카테고리의 다른 글
JPA 상속관계 매핑 (0) 2024.08.09 JPA 연관관계 매핑 (0) 2024.08.09 JPA 엔티티 매핑 (0) 2024.08.09 JPA 영속성 (0) 2024.08.09 JPA JPA(Java Persistence API)란? (0) 2024.08.09