[JPA] JPA 시작하기

2021. 7. 23. 20:51JPA

maven project를 생성하고 아래의 의존성을 추가합니다.

 

persistence.xml은 JPA 설정 파일입니다.

콘솔창에 어떻게 SQL문을 작성했는지 어떤 쿼리문을 DB에 날렸는지 등의 옵션을 부여할 수 있습니다.

JPA에는 데이터베이스 방언이라는 개념이 존재합니다.

데이터베이스 방언이란 논리적으로 동일한 기능이지만 데이터베이스의 종류에 따라 그 표현 방법이 조금씩 다른 것을 말합니다.

예를 들면, 가변 문자 타입을 MySQL에선 VARCHAR로 나타내고 Oracle에선 VARCHAR2로 나타냅니다.

문자열 자르기는 MySQL에선 SUBSTRING(), Oracle에선 SUBSTR()로 나타내고 페이징은 MySQL은 LIMIT, Oracle은 ROWNUM으로 나타냅니다.

어떤 데이터베이스 방언을 쓰겠다는 것을 JPA에게 알려주는 속성이 hibernate.dialect 입니다.

 

 

Member.java는 DB Table의 멤버와 동일하게 작성한 Entity 클래스입니다.

  • @Entity: JPA에서 관리하는 객체라고 선언
  • @Id: primary key 선언
  • @Table(name = "테이블 이름"): 테이블 이름 명시
  • @Column(name = "컬럼 이름"): 컬럼 이름 명시

 

JpaMain.java는 프로그램이 실행되는 메인 클래스입니다.

  • EntityManagerFactory
    • DB하나당 하나 선언
    • was가 올라오면 같이 올라오고 was가 내려가면 같이 내려감
  • EntityManager
    • DB 커넥션(쿼리, 고객의 요청)이 발생할 때마다 생성
    • 여러 스레드끼리 공유하면 안됨
  • EntityTransaction
    • 모든 쿼리는 트랜잭션 내부에서 실행되어야 함
  • 자원을 다쓰면 close()로 전부 회수해야함

Spring framework를 사용하면 EntityManagerFactory, EntityManager, EntityTransaction 을 알아서 내부적으로 처리하는 것 같습니다.

 

다음은 데이터베이스 CRUD 동작을 수행할 때 jpa에서 지원하는 메서드입니다.

앞에서 설명한 것처럼 해당 메서드를 호출하는 것으로 SQL문을 작성할 필요 없이 CRUD 동작을 수행합니다.

조회

em.find(Entity.class, PK);

삭제

em.remove(PK);

추가

em.persist(참조변수);

변경

em.find(Entity.class, PK);
참조변수.set(~);

JPA가 관리하는 객체는 컬렉션을 다루는 것처럼 값을 변경하면 따로 update() 메서드를 호출할 필요 없이, JPA가 알아서 변화를 감지하여 update 쿼리를 날립니다.

 

JPQL

SQL은 데이터베이스 테이블을 대상으로한 쿼리이고,

JPQL은 테이블이 아닌 엔티티 객체를 대상으로 사용하는 객체 지향 쿼리 언어입니다.

데이터베이스 방언에 종속되지 않는다는 특징을 가집니다.

 

 

Ref.

https://www.inflearn.com/course/ORM-JPA-Basic

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의

JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., 본 강의는 자바 백엔

www.inflearn.com

 

'JPA' 카테고리의 다른 글

[JPA] 엔티티 매핑  (0) 2021.07.30
[JPA] 영속성 관리 - 내부 동작 방식  (0) 2021.07.24
[JPA] JPA란?  (0) 2021.07.22