데이터 베이스 연동 - ORM과 JPA

김하영·2023년 6월 4일
0

출처: 스프링 부트 핵심 가이드 - 장정우 지음
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=296591989

어플리케이션은 데이터를 주고 받는 것이 주 목적이므로 데이터베이스가 꼭 필요하다.

ORM

ORM

  • ORM(Object Relational Mapping)은 객체 관계매핑을 의미한다.
  • 자바와 같은 객체지향 언어에서 의미하는 객체와 RDB의 테이블을 자동으로 매핑하는 방법이다.
  • 객체(클래스)는 테이블과 매핑하기 위해 만들어지는 것이 아니므로 테이블과의 불일치가 존재할 수 있다. 이때 ORM은 이 둘의 불일치와 제약사항을 해결한다!
  • ORM을 이용하면 쿼리문이 아닌 코드(메소드)로 데이터를 조작할 수 있다.

ORM의 장점

  • 데이터 베이스 쿼리를 객체지향적으로 조작할 수 있다.
    • 쿼리문을 작성하는 양이 줄어 개발비용이 줄어든다
    • 객체지향적으로 DB에 접근할 수 있어 코드 가독성을 높인다.
  • 재사용 및 유지보수가 편하다.
    • ORM을 통해 매핑된 객체는 독립적으로 작성되어 있어 재사용이 용이하다.
    • 객체들은 각 클래스로 나뉘어 있어 유지보수가 편하다.
  • 데이터 베이스에 대한 종속성이 줄어든다
    • ORM을 통해 자동생성된 sql문은 객체를 기반으로 DB 테이블을 관리하기 때문에 DB에 종속적이지 않다.
    • DB를 교체하는 상황에서도 비교적 위험부담이 적다.(쿼리를 직접 작성하지 않으므로)

ORM의 단점

  • ORM만으로 온전한 서비스를 구현하기에는 한계존재
    • 복잡한 쿼리를 사용하려면 직접 쿼리문을 작성해야한다.
    • 복잡한 쿼리를 정확한 설계없이 ORM으로 구성하게 되면 속도 저하 드으이 성능 문제 발생가능
  • 어플리케이션의 객체 관점과 DB의 관계관점의 불일치가 발생한다.
    • 세분성 : 객체가 테이블의 수보다 많아질 수 있다.
    • 상속성: RDBMS에는 상속 개념이 없다.
    • 식별성 : RDBMS는 프라이머리키로 동일성을 정의하지만 자바는 두객체의 값이 같아도 다르다고 판단할 수 있다.
    • 연관성 : 객체지향 언어는 객체를 참조(방향성 존재)하므로서 연관성을 나타내는 반면, RDBMS는 외래키를 삽입함으로서 연관성을 나타낸다(양방향이므로 방향성 존재 X).
    • 탐색 : 자바는 객체 참조 방식으로 값에 접근하지만 RDBMS에서는 쿼리를 최소화 하고 join을 통해 여러 테이블을 로드하고 값을 추출하는 방식으로 접근한다.

JPA

JPA

  • JPA(java Persistence API)는 자바진영의 ORM기술 표준으로 체택된 인터페이스 모음. 표준명세로서, JPA의 역할이 ORM의 역할이라고 보면 된다.
  • 역할 : 개발자가 직접 JDBC를 구현하면 SQL에 의존하게 되는 문제등이 있어 개발의 효율성이 떨어지는데, JPA는 개발자 대신 적절한 SQL을 생성하고 데이터베이스를 조작해서 객체를 자동 매핑하는 역할을 한다.

스프링 부트 어플리케이션의 구조

profile
백엔드 개발자로 일하고 싶어요 제발

0개의 댓글