티스토리 뷰
맛보기 수육
JPA(Java Persistence API) - 자바 진영에서 ORM 기술 표준으로 사용되는 인터페이스의 모음이다.
ORM(Object-Relational Mapping) - Class와 RDB(Relational DataBase)의 테이블을 매핑(연결)한다는 뜻
JPA가 SQL Mapper(JdbcTemplate, MyBatis)보다 좋은 점
- SQL을 작성하지 않고 DB를 조작할 수 있다.
- 유지보수 측면에서 도움이 된다. ( 쿼리를 새로 작성하지 않음, 매핑 정보가 Class )
-> 추후 강의(JPA강의)에서 더욱 자세하게 정리
ORM의 존재 의의 - SQL 중심적인 개발의 문제점
RDB에 접근하기 위한 언어는 SQL, 우리는 CRUD를 무한 반복하며 쿼리를 작성한다.
매핑 작업을 할수록 연관 관계만 늘어날 뿐 명쾌하게 원하는 작업을 하기 어렵다.
JPA의 등장
객체는 객체대로, RDB는 RDB대로 설계하고 ORM 프레임워크가 중간에서 매핑해준다.
JPA는 인터페이스의 모음 ( 대부분 Hibernate 사용 )
JPA를 사용해야 하는 이유??
- 일단 자바 표준이다.
- SQL 중심적인 개발에서 객체 중심 개발
- 패러다임 불일치 해결
JPA의 CRUD
- 저장: jpa.persist(member)
- 조회: Member member = jpa.find(memberId)
- 수정: member.setName(“변경할 이름”)
삭제: jpa.remove(member)
활용
1. 객체와 테이블 매핑
- @Entity : JPA가사용하는 객체, 해당 객체를 JPA가 인식한다.
- @Id : 테이블의 PK와 해당 필드를 매핑 (PK라 생각)
- @GeneratedValue : PK 생성 값을 선택하는 방식 (여기서는 자동 증가)
- @Column : 객체의 필드를 테이블의 컬럼과 매핑(필드의 이름과 테이블 컬럼 이름이 같다면 생략)
- public, protected 기반의 기본 생성자를 필수로 사용한다.
스프링을 통해 EntityManager를 주입받는다. (JPA의 모든 동작은 엔티티 매니저를 통해 이루어진다.)
@Transactional : JPA의 모든 데이터 변경은 트랜잭션 안에서 이루어진다. (비즈니스 로직이 있는 서비스 계층에 걸어주자)
본 포스팅은 인프런 강의 김영한님의
[ 스프링 DB 2편 - 데이터 접근 활용 기술 ] 을 수강하며 작성한 내용입니다.