Dev/SpringBoot

34. [JPA] 02. JPA 시작

VIPeveloper 2021. 11. 7. 16:49
728x90
반응형

계속 이어서 강의 듣는 중입니다.

 

내용

JPA 실습 환경 구성

jpa를 실습하기 위한 환경을 구성하는 파트입니다.

강의에서는 다음과 같은 구성환경을 따르도록 권고하였습니다.

  • h2 설치
  • 메이븐
  • 자바8 이상
  • persistence.xml 설정
    • 저는 따로 persistence.xml을 설정해주지 않았습니다. 
    • 자바 스프링 부트에서는 starter-data-jpa를 로드하면 별도의 persistence.xml을 사용할 필요가 없기 때문입니다.
      출처: https://wedul.site/511 [wedul]

데이터베이스 방언

  • JPA는 특정 데이터베이스에 종속되지 않습니다.
  • 방언을 설정해주면, 그 방언을 기본으로 만들어서 SQL을 생성하는 방식입니다.

  • application.properties에 설정해주면 됩니다.
driverClassName=org.h2.Driver
url=jdbc:h2:tcp://localhost/~/ex-hello-jpa
username=sa
password=

흐름

  • emf는 하나만 생성되서 앱 전체에 공유한다.
  • em은 쓰레드간 1개만 생성되고, 바로 버려야한다.(다른 유저랑 꼬일 수 있음)
  • JPA의 모든 데이터 변경은 트랜잭션 내부에서 실행되어야 한다.(그래야 롤백 제대로 할 수 있음)
    public static void main(String[] args) {

        //엔티티 매니저 팩토리 생성
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook");
        EntityManager em = emf.createEntityManager(); //엔티티 매니저 생성

        EntityTransaction tx = em.getTransaction(); //트랜잭션 기능 획득

        try {

            tx.begin(); //트랜잭션 시작
            logic(em);  //비즈니스 로직
            tx.commit();//트랜잭션 커밋

        } catch (Exception e) {
            e.printStackTrace();
            tx.rollback(); //트랜잭션 롤백
        } finally {
            em.close(); //엔티티 매니저 종료
        }

        emf.close(); //엔티티 매니저 팩토리 종료
    }

JPQL

  • 테이블이 아닌 객체를 대상으로 검색하는 객체지향 쿼리이다.
  • 조인 문법을 쓰면서도 테이블에 종속적이지 않을 수 있다.
  • 객체지향 SQL이다.

 

테이블에 의존적이지 않기 위해 많이 노력한 것이 보였습니다. 계속 강의 수강하면서 배워나가야겠습니다.

728x90
반응형