course/inflearn
[JPA 프로그래밍 기본편] JPA 시작하기
hjkim0502
2022. 8. 30. 10:18
1. 환경 세팅
- h2 database 사용
- maven 설정
- hibernate 버전은 사용하고자 하는 스프링 버전에 맞는 것으로 설정하면 좋다
- spring.io -> projects -> spring boot -> Learn -> 스프링 버전에 맞는 doc -> 'org.hibernate'로 검색해 버전 확인
- h2는 설치한 버전과 같아야 한다
- hibernate 버전은 사용하고자 하는 스프링 버전에 맞는 것으로 설정하면 좋다
- JPA 설정: /META-INF/persistence.xml
- persistance-unit에 name속성으로 이름 지정
- javax.persistence.~~ : JPA 표준 속성
- hibernate.~~ : hibernate 전용 속성
- DB 방언: DB마다 구문에 차이가 있기 때문에 어떤 방언을 사용할 것인지 알려주어야 한다
- hibernate는 40가지 이상의 DB 방언 지원
- 우리는 h2이기 때문에 org.hibernate.dialect.H2Dialect
2. 실습
- h2 console에 테이블 생성
create table Member (
id bigint not null,
name varchar(255),
primary key (id)
);
- 객체를 테이블과 매핑되게 생성
@Entity
public class Member {
@Id
private Long id;
private String name;
//Getter & Setter
- 회원 CRUD
public class JpaMain {
public static void main(String[] args) {
// 애플리케이션 로딩 시점에 팩토리 하나만 생성
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
// 트랜잭션 하나 당 매니저 하나 생성 (사용 후 버림)
EntityManager em = emf.createEntityManager();
// 트랜잭션 시작 (데이터 변경은 꼭 이 안에서 실행)
EntityTransaction tx = em.getTransaction();
tx.begin();
try {
//저장
Member member = new Member();
member.setId(1L);
member.setName("Hello");
em.persist(member);
//조회
Member findMember = em.find(Member.class, 1L);
//더 복잡한 쿼리로 조회 (JPQL)
//엔티티 대상(Member)으로 하는 객체 지향 쿼리
//설정 파일에서 다른 DB 방언으로 설정만 하면 코드 수정 불필요
List<Member> result = em.createQuery("select m from Member as m", Member.class)
.getResultList();
//수정
//커밋 시점에 JPA가 관리하는 엔티티에 변경된 것이 보이면 알아서 update 쿼리 날림
findMember.setName("HelloJpa");
//삭제
em.remove(findMember);
tx.commit(); //DB에 반영
} catch (Exception e) {
tx.rollback();
} finally { // 트랜잭션 종료 후 매니저 종료 중요!
em.close();
}
emf.close();
}
}
출차: 출처: 인프런 김영한님 JPA 프로그래밍 - 기본편