티스토리 뷰

Spring

[ 스프링 DB ] JPA

GiHoo 2023. 9. 1. 22:54

맛보기 수육

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의 등장

JPA의 동작

객체는 객체대로, RDB는 RDB대로 설계하고 ORM 프레임워크가 중간에서 매핑해준다.

 

 

JPA는 인터페이스의 모음 ( 대부분 Hibernate 사용 )

 

JPA를 사용해야 하는 이유??

  • 일단 자바 표준이다.
  • SQL 중심적인 개발에서 객체 중심 개발
  • 패러다임 불일치 해결

JPA의 CRUD

  • 저장: jpa.persist(member)
  • 조회: Member member = jpa.find(memberId)
  • 수정: member.setName(“변경할 이름”)
    삭제: jpa.remove(member)

활용

1. 객체와 테이블 매핑

Item 객체

  • @Entity : JPA가사용하는 객체, 해당 객체를 JPA가 인식한다.
  • @Id : 테이블의 PK와 해당 필드를 매핑 (PK라 생각)
  • @GeneratedValue : PK 생성 값을 선택하는 방식 (여기서는 자동 증가)
  • @Column : 객체의 필드를 테이블의 컬럼과 매핑(필드의 이름과 테이블 컬럼 이름이 같다면 생략)
  • public, protected 기반의 기본 생성자를 필수로 사용한다.

스프링을 통해 EntityManager를 주입받는다. (JPA의 모든 동작은 엔티티 매니저를 통해 이루어진다.)

@Transactional : JPA의 모든 데이터 변경은 트랜잭션 안에서 이루어진다. (비즈니스 로직이 있는 서비스 계층에 걸어주자)

 

 

 

 

 

 

 

 

 

본 포스팅은 인프런 강의 김영한님의

[ 스프링 DB 2편 - 데이터 접근 활용 기술 ] 을 수강하며 작성한 내용입니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30