컴공댕이 공부일지
[JPA] 2장 - JPA 시작 본문
본 글은 도서 '자바 ORM 표준 JPA 프로그래밍'의 2장 요약 정리본입니다.
📖 라이브러리와 프로젝트 구조
하이버네이트 핵심 라이브러리
- hibernate-core : 하이버네이트 라이브러리
- hibernate-jpa-2.1-api : JPA 2.1 표준 API를 모아둔 라이브러리
- hibernate-entitymanager : 하이버네이트가 JPA 구현체로 동작하도록 JPA 표준을 구현한 라이브러리
메이븐
라이브러릴를 관리해주는 도구. pom.xml에 사용할 라이브러리 작성하면 라이브러리 자동으로 내려받아 관리
📚 객체 매핑
매핑 어노테이션
어노테이션 | 설명 |
@Entity | 이 클래스를 테이블과 매핑한다고 JPA에 알려줌 @Entity가 사용된 클래스=엔티티 클래스 |
@Table | 엔티티 클래스에 매핑할 테이블 정보를 알려줌 |
@Id | 필드를 Primary Key에 매핑 @Id가 사용된 필드=식별자 필드 |
@Column | 필드를 컬럼에 매핑함 |
매핑 정보가 없는 필드 | 매핑 어노테이션을 생략하면 필드명을 사용해서 컬럼명으로 매핑 |
- 연결할 데이터베이스당 하나의 영속성 유닛을 등록
JPA 표준 속성 (특정 구현체에 종속되지 않음)
- javax.persistence.jdbc.driver : JDBC 드라이버
- javax.persistence.jdbc.user : 데이터베이스 접속 아이디
- javax.persistence.jdbc.password : 데이터베이스 접속 비밀번호
- javax.persistence.jdbc.url : 데이터베이스 접속 UR
하이버네이트 속성
- hibernate.dialect : 데이터베이스 방언 설정
- hibernate.show_sql : 하이버네이트가 실행한 SQL 출력
- hibernate.format_sql : 하이버네이트가 실행한 SQL을 보기 좋게 정렬
- hibernate.use_sql_comments : 쿼리를 출력할 때 주석도 함께 출력
- hibernate.id.new_generator_mappings : JPA 표준에 맞춘 새로운 키 생성 전략 사용
📚 데이터베이스 방언
SQL 표준을 지키지 않거나 특정 데이터베이스만의 고유한 기능
- 대부분의 JPA 구현체들은 다양한 데이터베이스 방언 클래스를 제공
- 개발자는 JPA가 제공하는 표준 문법에 맞추어 JPA를 사용하면 되고, 특정 데이터베이스에 의존적인 SQL은 데이터베이스 방언이 알아서 처리해줌
- 데이터베이스가 변경되면 데이터베이스 방언만 교체하면 됨
- 하이버네이트에서 제공하는 대표적인 데이터베이스 방언
- H2 : org.hibernate.dialect.H2Dialect
- 오라클 10g : org.hibernate.dialect.Oracle10gDialect
- MySQL : org.hibernate.dialect.MySQL5InnoDBDialect
📚 엔티티 매니저 설정
Persistence 클래스:
persistence.xml 설정 정보를 읽어서 EntityManagerFactory 생성함.
JPA 동작시키기 위한 기본 객체.
EntityManagerFactory:
데이터베이스 커넥션 풀 생성할 수 있음.
애플리케이션 전체에서 한 번만 생성되고 공유됨.
여러 스레드 안전하게 접근 가능.
EntityManager:
EntityManagerFactory에서 생성됨.
JPA 주요 기능(등록, 수정, 삭제, 조회) 제공함.
데이터베이스와 통신 위해 내부에 데이터소스 유지함.
스레드 간 공유나 재사용 금지.
종료:
EntityManager 사용 후 종료해야 함.
애플리케이션 종료 시 EntityManagerFactory도 종료됨.
트랜잭션 관리
JPA에서 데이터 변경은 항상 트랜잭션 안에서 수행됨.
EntityManager에서 EntityTransaction 받아와서 start(), commit(), rollback() 사용함.
비즈니스 로직
등록: persist()
수정: update() 메서드 없음, 엔티티 속성 직접 변경
삭제: remove()
조회: find(), 엔티티 타입과 기본키로 조회
JPQL (Java Persistence Query Language)
JPA는 엔티티 객체를 중심으로 설계
검색 시 데이터베이스 테이블이 아니라 엔티티 객체를 대상으로 쿼리해야 함
모든 데이터를 애플리케이션에 불러와 엔티티로 변환한 후 검색하는 것은 불가능 !
JPQL(Java Persistence Query Language)은 객체 지향 쿼리 언어
SQL과 비슷. 데이터베이스 테이블이 아닌 엔티티 객체를 대상으로 쿼리
SQL은 데이터베이스 테이블을 직접 쿼리하는 방식이다.
2장
JPA 사용 개발 환경 설정 진행함.
객체 하나를 테이블에 등록/수정/삭제/조회 하는 애플리케이션 제작
JPA가 반복적인 JDBC API와 결과 값 매핑 처리 -> 코드 줄고, sql 작성할 필요 x
실습이 많은 파트라 간단히만 정리 !
'study > 웹개발 스터디 백엔드 EFUB 💻' 카테고리의 다른 글
[JPA] 1장 - JPA 소개 (0) | 2025.03.16 |
---|