ORM이란?
객체 <-> 데이터베이스 데이터 자동 매핑 ( Object Relational Mapping )
Persistence란?
데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터
Persistence Framework?
데이터베이스와의 연동되는 시스템을 빠르게 개발하고 안정적인 구동을 보장해주는 프레임워크
종류
- SQL Mapper : SQL문장으로 직접 데이터베이스 데이터를 다루는 SQL Helper ( Mybatis )
- ORM : 객체를 통해 간접적으로 데이터베이스를 다루는 ORM ( Hibernate, JPA )
Persistence Framework를 사용하면 좋은 점
- DBMS에 대한 종속성이 줄어든다.
- DBMS 교체작업 때 해야할 일이 줄어든다.
- 자바 객체에 매핑되어 있기 때문에 자바의 기능 ( equasl, hashcode )을 사용할 수 있다.
- 재사용 및 유지보수
- 데이터에 대한 객체를 별도로 관리하기 때문에 재활용할 수 있다.
- 직관적인 코드
- DBMS와 관련된 선언문,할당,종료와 같은 부수적인 코드가 사라진다.
- 객체 지향적인 코드
Persistence Framework를 사용하면 안좋은 점
단점은 ORM과 DBMS에 대한 이해도가 있어야지 제대로 보일 것 같다. ( 공부를 통해서 더 자세한 설명을 첨부하도록 하겠습니다 )
- ORM만으로는 완벽히 구현해낼 수 없다.
- 설계를 매우 신중하게 해야한다 => 복잡성이 커질 경우 난이도가 급격히 올라간다.
- 잘못 구현된 경우 속도 저하 및 일관성까지 무너진다.
- 일부 자주 사용되는 대형 쿼리는 SP(저장프로시저)를 써서 별도의 튜닝이 필요하다
- 프로시저가 많은 시스템에서는 ORM의 객체지향적인 장점을 활용하기 어렵다.
'Back-End > JPA' 카테고리의 다른 글
ObjectOptimisticLockingFailureException (0) | 2019.11.02 |
---|---|
N+1 문제 해결하기 ( fetch join, @EntityGraph ) (0) | 2019.08.14 |
JPA 1차 캐시 - Database와 동기화가 되지 않은 데이터를 읽는 문제 (0) | 2019.04.23 |
13장. 웹애플리케이션과 영속성 관리 (0) | 2019.04.17 |
JPA 3장. 영속성 관리 ( persistence ) (1) | 2018.07.25 |