Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
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
Tags
more
Archives
Today
Total
관리 메뉴

코드와이

JPA란 본문

JPA란

코드와이 2021. 11. 30. 14:53

JPA

ORM(Object-relational Mapping)

  • 개념
    • 객체를 RDB 테이블에 자동으로 영속화 해주는 것
  • 장점
    • SQL문이 아닌 Method를 통해 DB를 조작할 수 있다.
    • 객체지향적 접근만 고려하면 되기 때문에 생산성 증가
  • 단점
    • 프로젝트 규모가 크고 복잡하여 설계가 잘못된 경우 속도 저하 및 일관성을 무너뜨리는 문제점이 생길 수 있음
  • ORM vs SQL Mapper
    • ORM
      • DB 데이터 <- mapping -> Object 필드
      • 객체를 통해 간접적으로 DB 데이터를 다룬다.
      • 객체와 DB의 데이터를 자동으로 매핑해준다.
      • JPA, Hibernate
    • SQL Mapper
      • SQL <- mapping -> Object 필드
      • SQL문으로 직접 DB를 조작한다.
      • MyBatis, jdbcTemplate

JPA(Java Persistence API)

  • Java 진영에서 ORM 기술 표준으로 사용하는 인터페이스 모음
  • 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스
  • 동작과정
    출처 : https://livenow14.tistory.com/70
    • JPA는 애플리케이션과 JDBC 사이에서 동작한다.
      • 개발자가 JPA를 사용하면 JPA 내부에서 JDBC API를 사용하여 SQL을 호출하여 DB와 통신한다.
      • 즉 개발자가 직접 JDBC API를 사용하는 것이 아니다.
  • 왜 사용하는가?
    1. SQL 중심적인 개발에서 객체 중심으로 개발
    2. 생산성
      • JPA를 사용하는 것은 마치 Java Collection에 데이터를 추가/삭제하는 것처럼 사용할 수 있게 만든 것이다.
      • 간단한 CRUD
        • 저장 : jpa.persist(member)
        • 조회 : Member member = jpa.find(memberId)
        • 수정 : member.setName("AAA")
        • 삭제 : jpa.remove(member)
      • 수정이 굉장히 간단하다
        • 객체를 변경하면 자동으로 DB에 UPDATE된다.
    3. 유지보수
      • 기존엔 필드 변경 시 모든 SQL을 수정해야 했다면 JPA를 사용함으로써 필드만 추가하면 된다.

Hibernate

  • JPA의 구현체의 한 종류
  • JPA 인터페이스를 구현하고 내부적으로 JDBC API를 사용한다.

JPA(Spring data jpa)

  • Spring framework에서 jpa를 편리하게 사용할 수 있도록 지원하는 것
  • Repository라는 인터페이스를 작성하면 실행 시점에 구현 객체를 동적으로 생성해서 주입
  • 이 Repository는 정해진 규칙을 인터페이스를 선언하기만 해도 자동으로 내부에서 구현체를 만들어 동작시켜준다.
  • findAll(), save(), delete()

Reference

'' 카테고리의 다른 글

[웹] 스프링 프레임워크  (0) 2021.11.29
[웹] Elasticsearch 보안 설정 및 적용  (0) 2021.10.09
[웹] Elasticsearch 기본 예제  (0) 2021.09.29
[웹] JPA  (0) 2021.08.08
[웹] Spring(3) Interceptor  (0) 2021.08.07