티스토리 뷰

반응형

패러다임 불일치 문제

  • 관계형 데이터베이스: 어떻게 데이터를 저장할지에 초점
  • 객체지향 프로그래밍 언어: 기능과 속성을 한곳에서 관리
관계형 데이터베이스와 객체지향 프로그래밍 언어의 패러다임이 서로 다르기 때문에, 객체를 데이터베이스에 저장할 때 문제가 발생

 

ORM

데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법

 

JPA

자바 표준 ORM
인터페이스로서 자바 표준 명세서

 

  • 객체지향 프로그래밍언어와 관계형 데이터베이스의 중간에서 패러다임을 일치시켜 줌
  • 개발자가 객체지향적으로 프로그래밍하면 JPA가 관계형 데이터베이스에 맞춰서 SQL을 대신 생성해서 실행
  • SQL에 종속적인 개발을 하지 않을 수 있음

 

객체 중심의 개발을 하게 되었을 때 장점

  • 유지보수성 향상
  • 생산성 향상
💡 MyBatis, iBatis는 ORM이 아니라 SQL Mapper이다. ORM은 객체를 매핑하는 것이고, SQL Mapper는 쿼리를 매핑한다.
💡 JPA를 사용하기 위해서는 구현체가 필요 (ex) Hibernate, Eclipse Link...
    Spring에서 JPA를 사용할 때 Spring Data JPA라는 모듈을 사용
    Spring Data JPA → Hibernate → JPA

스프링 진영에서는 Spring Data JPA를 사용하는 것을 권장

 

Spring Data JPA의 장점

  • 구현체 교체가 용이
    • Spring Data JPA 내부에서 구현체 매핑을 지원해 주기 때문에 Hibernate 외에 다른 구현체로 쉽게 교체 가능
  • 저장소 교체가 용이
    • 관계형 데이터 베이스 외에 다른 저장소로 교체가 용이
    • 관계형 데이터 베이스에서 다른 DB로 교체할 때 의존성만 교체

 

JPA를 사용하기 위해서는 객체지향 프로그래밍관계형 데이터베이스를 이해해야 하기 때문에 러닝 커브가 높다.

러닝 커브
특정 기술 또는 지식을 실제 필요한 업무와 같은 환경에서 효율적으로 사용(활용)하기 위해 드는 학습 비용(시간)
출처: 위키 백과

 

러닝커브가 높음에도, JPA를 사용했을 때의 장점도 있다.

  • CRUD(CREATE-READ-UPDATE-DELETE) 쿼리를 직접 작성할 필요가 없다.
  • 객체 지향 프그래밍을 쉽게 할 수 있다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
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
글 보관함