응애개발자
article thumbnail
Published 2023. 7. 7. 11:00
JPA 소개 Spring/JPA
728x90

자바 ORM 표준 프로그래밍

들어가기 앞서 JPA 게시글은 위의 책을 정리하여 만들었다.

 

1. JPA 소개

 

JPA를 쓰는 이유

  • 지루하고 반복적인 CRUD SQL을 알아서 처리
  • 객체 모델링과 관계형 DB 사이의 차이점도 해결
  • JPA는 실행 시점에 자동으로 SQL을 만들어 실행(개발자는 SQL을 직접 작성하는 것이 아닌 어떤 SQL이 실행될지 생각만 하면 됨)

JPA의 장점

  • 애플리케이션을 객체 중심으로 개발하니 생산성, 유지보수 상승
  • 코드 수가 줄어들어 가독성 향상
  • 테스트가 편리
  • 데이터베이스 변경시 손쉽게 수정 가능

 SQL을 직접 다룰 때 발생하는 문제점

1. 반복, 반복 그리고 반복

  • 객체를 DB에 CRUD하려면 많은 SQL과 JDBC API를 코드로 작성해야 한다는 점
  • 테이블마다 비슷한 일을 반복해야 하는데, 개발하려는 애플리케이션에서 사용하는 DB 테이블이 100개면 무수히 많은 SQL을 작성해야 함(지루함의 연속)

2. SQL에 의존적인 개발

  • JPA를 쓰지 않고 기능을 추가한다면 SQL에 의존해야 함
  • 진정한 의미의 계층 분할이 어렵다.
  • 엔터티를 신뢰할 수 없다.
  • SQL에 의존적인 개발을 피하기 어렵다.

3. JPA와 문제 해결

JPA를 사용하면 객체를 DB에 저장하고 관리할 때, 개발자가 직접 SQL을 작성하는 것이 아닌 JPA가 제공하는 API를 사용하면 된다. 그러면 JPA가 개발자 대신 적절한 SQL을 생성해서 DB에 전달한다.

 

  • 저장기능
    jpa.persist(member); //저장
    persist() 메소드를 호출하면 JPA 객체와 매핑정보를 보고 적절한 INSERT SQL을 생성해서 DB에 전달
  • 조회기능
    String memberId = "helloId";
    Member member = jpa.find(Member.class, memberId); //조회
    find() 메소드는 객체 하나를 DB에서 조회한다. JPA는 객체와 매핑정보를 보고 적절하게 Member 객체를 생성후 반환
  • 수정기능
    Member member = jpa.find(Member.class, memberId);
    member.setName("이름변경") //수정
    JPA는 별도의 수정 메소드를 제공하지 X, 대신 객체를 조회후 값을 변경하면 커밋할때 DB에 적절한 UPDATE SQL이 전달된다.
  • 연관된 객체 조회
    Member member = jpa.find(Member.class, memberId);
    Team team = member.getTeam(); //연관된 객체 조회

다음 게시글은 객체와 관계형 DB의 패러다임 차이 때문에 발생하는 문제를 살펴보고 JPA는 어떻게 해결하는지 알아보자.

 

'Spring > JPA' 카테고리의 다른 글

엔티티 매핑  (0) 2023.07.11
영속성 관리  (0) 2023.07.10
JPA 시작  (0) 2023.07.09
JPA란 무엇인가?  (0) 2023.07.09
JPA 패러다임의 불일치  (0) 2023.07.09
profile

응애개발자

@Eungae-D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!