inblog logo
|
백엔드블로그-dohyeong
    JPA

    [JPA] 02. JPA 시작

    Aug 18, 2023
    [JPA] 02. JPA 시작
    Contents
    메이븐 소개JPA 설정 - persistence.xml데이터 베이스 방언(Dialect)JPA 구동 방식JPQL 소개

    메이븐 소개

    • 자바 라이브러리, 빌드 관리
    • 라이브러리 자동 다운로드 및 의존성 관리
    • 최근 Gradle 이 점점 유명해짐

    JPA 설정 - persistence.xml

    • JPA 설정 파일
    • /META-INF/persistence.xml에 위치
    • pesrsistence-unit name 으로 이름 지정
     

    데이터 베이스 방언(Dialect)

    JPA는 특정 데이터베이스에 종속하지 않는다
    💡
    각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다르기 때문에 맞춰 주는 것 Dialect → SQL 표준을 지키지 않는 특정 데이터베이스만의 고유 기능
     
    notion image
    → 약 40가지 이상의 데이터베이스 방언 지원
     

     

    JPA 구동 방식

    notion image
     

    주의할 점

    • EntityMangerFactory 는 하나만 생성해서 애플리케이션 전체에 공유
    • 엔티티 매니저는 쓰레드간에 공유는 하면 안됨
    • JPA 의 모든 데이터 변경은 트랜잭션 안에서 실행해야함
     

    JPQL 소개

    나이가 18살 이상인 회원을 모두 검색하고 싶다면?
    • 가장 단순한 조회 방법
      • EntityManager.find()
      • 객체 그래프 탐색
     
    • JPA를 사용하면 엔티티 객체를 중심으로 개발
    • 문제는 검색 쿼리 → 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색
    • 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능하다
    • 애플리케이션이 필요한 데이터만 DB에서 불려오려면 결국 검색조건이 포함된 SQL 이 필요
     
    JPQL
    • JPA는 SQL을 추상화한 JPQL 이라는 객체 지향 쿼리 언어 제공
    • SQL 과 문법 유사, select from, where, group by, having , join 지원
    • JPQL 은 엔티티 객체를 대상으로 쿼리
    • SQL은 데이터베이스 테이블을 대상으로 쿼리
     
    • 테이블이 아닌 객체를 대상으로 검색하는 객체 지향 쿼리
    • SQL 을 추상화해서 특정 데이터베이스 SQL에 의존하지 않음
    • JPQL은 한마디로 객체지향 SQL
     
    Share article

    백엔드블로그-dohyeong

    RSS·Powered by Inblog