ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 ORM 표준 JPA
    우아한테크캠프 2018. 7. 13. 01:08

    데이터베이스 방언

    SQL 표준을 따르지 않거나, 특정 데이터베이스만의 고유한 기능

    (각각의 데이터베이스가 제공하는 SQL문법과 함수는 조금씩 다르다.)



    JPA는 특정 데이터베이스에 종속적이지 않은 기술

    hibernate.dialect 속성을 지정하면 된다. 

    하이버네이트는 45가지 방언을 지원한다.



    데이터베이스 방언을 이용해서 데이터베이스에 맞는 적절한 쿼리문을 생성한다.


    애플리케이션 개발

    1. 엔티티 매니저 팩토리 생성

    2. 엔티티 매니저 생성

    3. 트랜잭션 생성

    4. 비지니스 로직(CRUD)


    엔티티 매니저 팩토리는 한개만 생성해서 애플리케이션 전체에서 공유한다.

    엔티티 매니저는 스레드간에 공유를하면 안된다. (사용하고 버려야 한다.)

    JPA의 모든 데이터 변경은 트랜잭션 안에서 실행된다.




    객체지향쿼리 JPQL

    JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공한다.

    JPQL은 엔티티 객체를 대상으로 쿼리문을 실행한다.

    SQL 문법과 유사하다.



    데이터베이스 스키마 자동 생성하기

    hibernate.hbm2ddl.auto


    create : 기존 테이블 삭제 후 다시 생성 (drop + create)

    create-drop : create와 같으나 종료시점에 테이블 drop

    update : 변경부분만 반영 

    validate : 엔티티와 테이블이 정상적으로 맵핑되었는지만 확인

    none : 사용하지 않음


    데이터베이스 스키마 자동 생성하기 주의

    ※ 스테이징과 운영 서버에서는 validate 또는 none을 사용한다.



    양방향 매핑시 규칙

    연관된 두 개의 객체 중에서 하나를 연관관계의 주인으로 정해야 한다.

    연관관계의 주인만이 외래키를 관리(등록, 수정)한다.

    주인이 아닌쪽은 읽기만 할 수 있다.

    주인이 아니면 mappedBy 속성을 사용해서 주인을 지정한다.


    누구를 주인으로?

    연관관계의 주인은 외래 키가 있는 곳이다.


    양방향 매핑 시 많이 하는 실수

    1. 연관관계의 주인에게 값을 넣지 않는 경우

    2. 순수한 객체들의 관계를 고려하면 항상 양쪽다 값을 입력해야 한다.



    양방향 매핑의 장점

    단방향 매핑으로 이미 연관관계 매핑은 끝난 것이다. 양방향은 반대 방향으로도 객체 그래프 탐색을 가능하게 해주는 것이다.

    JPQL에서는 반대 방향으로 탐색할 일이 많다.

    일단 단방향 매핑을 잘하고 양방향은 필요할 때 추가하면 된다.




    참고

    https://www.slideshare.net/zipkyh/ksug2015-jpa2-jpa

    '우아한테크캠프' 카테고리의 다른 글

    애노테이션  (0) 2018.07.15
    우아한테크캠프 Day10  (0) 2018.07.14
    우아한테크캠프 Day09  (0) 2018.07.12
    우아한테크캠프 Day08  (0) 2018.07.12
    우아한테크캠프 Day07  (0) 2018.07.11

    댓글

Designed by Tistory.