포스트

ORM

ORM

💫 ORM


  • ORM (Object-Relational Mapping)
  • 어플리케이션의 객체(데이터 클래스)와 관계형 DB의 테이블 사이의 매핑을 지원하는 프레임워크
  • 객체지향 프로그래밍과 관계형 DB의 차이로 발생하는 제약사항을 해결해주는 역할을 수행
  • i.e. JPA, Hibernate (Persistent API)

🫧 장점

  • SQL 쿼리가 아닌 직관적인 코드로 데이터를 조작할 수 있음
    • 개발자가 보다 비즈니스 로직에 집중할 수 있음
  • 재사용 및 유지보수가 편리
    • ORM은 독립적으로 작성되어 있어 재사용이 가능
    • 매핑정보를 명확하게 설계하기 때문에 따로 DB를 볼 필요가 없음
  • DBMS에 대한 종속성이 줄어둠
    • DBMS를 교체하는 작업을 비교적 적은 리스크로 수행 가능

🫧 단점

  • 복잡성이 커질 경우 ORM만으로 구현하기 어려움
    • 직접 쿼리를 구현하지 않아 복잡한 설계가 어려움
  • 잘못 구현할 경우 속도 저하 발생
  • 대형 쿼리는 별도의 튜닝이 필요할 수 있음

💫 JPA


  • Java Persistence API, ORM과 관련된 인터페이스의 모음
  • Java 진영에서 표준 ORM으로 채택되어 있음 = 신뢰성이 높다
  • ORM이 큰 개념이라고 하면, JPA는 더 구체화 시킨 스펙을 포함하고 있음

  • JPA 구현체, ORM Framework
    • Hibernate (가장 많이 사용됨)
    • EclipseLink
    • DataNucleus

🫧 Spring Data JPA

  • Spring에서 JPA를 편리하게 사용할 수 있도록 도와주는 라이브러리
    • CRUD 처리용 인터페이스 제공
    • Repository 개발 시 인터페이스만 작성하면 구현 객체를 동적으로 생성해서 주입
    • 데이터 접근 계층 개발시 인터페이스만 작성해도 됨
  • Hibernate에서 자주 사용되는 기능을 좀 더 쉽게 사용할 수 있게 구현

  • SpringBootApplication -(JPA : Hibernate[SpringDataJPA])-> DB
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.