주의할 것
- H2 실행 시 h2.bat을 실행시킨 뒤 Server 설정으로 바꿔서 들어갈 것
어노테이션
@Entity
테이블이라고 생각하면 된다. 이 클래스를 테이블과 매핑한다고 JPA에게 알려준다.
이를 엔티티 클래스라고 한다.
@Table(name="~~~")
엔티티 클래스에 매핑할 테이블 정보를 알려준다.
이 어노테이션을 생략하면 클래스 이름을 테이블 이름으로 매핑한다.
@Id
엔티티 클래스의 필드를 테이블의 PK에 매핑한다. 이를 식별자 필드라고 부른다.
@Column(name="~~~")
필드를 컬럼에 매핑한다.
매핑 어노테이션이 없으면 필드를 컬럼명으로 매핑한다.
데이터베이스 방언
JPA는 특정 데이터베이스에 종속적이지 않은 기술이다.
하지만, 데이터베이스마다 문법이 조금씩 다르다는 문제점이 있다.
이를 위해 하이버네이트를 포함한 대부분의 JPA 구현체들은 다양한 데이터베이스 방언 클래스를 제공한다.
따라서 데이터베이스가 변경되어도 Dialect만 변경하면 된다.
어플리케이션 개발
1. 엔티티 매니저 설정
1) 엔티티 매니저 팩토리 생성
엔티티 매니저 팩토리를 만들 때에는, JPA를 동작시키기 위한 기반 객체를 만들고 경우에 따라서 데이터베이스 커넥션 풀도 생성하므로 엔티티 매니저 팩토리를 생성하는 비용은 매우 크다.
따라서, 엔티티 매니저 팩토리는 어플리케이션 전체에서 딱 한 번만 생성하고 공유해서 사용해야 한다.
2) 엔티티 매니저 생성
JPA의 기능 대부분은 엔티티 매니저가 제공한다.(CRUD)
엔티티 매니저는 내부에 데이터베이스를 유지하면서 데이터베이스와 통신한다. 즉, 가상의 데이터베이스라고 생각하면 된다.
데이터베이스 커넥션과 밀접한 관계가 있으므로 스레드 간에 공유하거나 재사용하면 안된다.
3) 종료
사용이 끝난 엔티티 매니저를 종료한 후, 마지막으로 어플리케이션을 종료할 때 엔티티 매니저 팩토리를 종료해야 한다.
2. 트랜잭션 관리
비즈니스 로직이 정상 동작하면 commit, 예외가 발생하면 rollback 해야 한다.
3. 비즈니스 로직
1) 등록
em.persist(memer);
2) 수정
JPA는 엔티티가 변경되었는지 추적하는 기능을 갖고 있으므로 값을 변경하기만 하면 자동으로 갱신값이 반영된다.
즉, update를 해줄 필요도 없을 뿐만 아니라 이런 함수는 존재하지 않는다.
3) 삭제
em.remove(member);
4) 한 건 조회
find() 메소드는 기본적으로 테이블의 PK를 이용해서 값을 조회한다.
즉, 한 건만 조회된다.
5) JPQL
select m from Member m
엔티티 객체를 대상으로 쿼리한다.
JPQL은 데이터베이스 테이블을 전혀 알지 못한다.
'자바 ORM 표준 JPA 프로그래밍' 카테고리의 다른 글
6장_다양한 연관관계 매핑 (0) | 2022.01.10 |
---|---|
5장_연관관계 매핑 기초 (0) | 2022.01.10 |
4장_엔티티 매핑 (0) | 2022.01.06 |
3장_영속성 관리 (0) | 2022.01.05 |
1장_JPA 소개 (0) | 2022.01.03 |