안녕하세요 코드짜는헬창입니다.
이번엔 제목과 같이 ORM, JPA, Hibernate에 대하여 알아보겠습니다
# ORM 이란 무엇일까?
ORM은 Object Relational Mapping 즉, 객체-관계 매핑의 뜻을 가지고 있습니다.
OOP에서 쓰이는 객체라는 개념을 구현한 클래스와 테이블이 맵핑을 이루는것을 이루는 것을 말합니다.
따라서 ORM을 이용하면 Query를 작성하지 않고 자바 코드로 데이터를 관리가 가능합니다.
예를들어 Item 이란 테이블에 데이터를 출력하기 위해선 SELECT * FROM Item 이라는
Query를 실행해야 했지만 ORM을 사용하면 item.findAll() 라는 메소드를 호출하면 데이터를 가져옵니다.
하지만 복잡한 구조에 대해서는 ORM으로 표현하는데 한계가 있습니다.
Mybatis를 이용하여 데이터를 관리를 하는것 보단 코드가 간결해지긴 하지만 위 와 같이 문제점이 있습니다.
그래서 한 프로젝트에 둘다 사용하는 경우도 있다고 합니다.
# JPA(Java Persistence API) / Hibernate란 무엇인가?
JPA란 자바 ORM 기술에 대한 API 표준 명세를 의미합니다.
ORM을 사용하기 위한 인터페이스를 모아뒀다고 보시면 됩니다.
- 장점
- SQL를 직접 사용하지 않고 메소드를 호출한다.
- Mybatis 사용할땐 테이블 필드 추가 시 관련 파라미터, 결과 query 등 수정했지만 JPA는 이런 일들을 알아서 해줌 유지보수 용이
- 특정 DB의 종속적인 관리가 필요없기에 DB를 바꾸는데 문제가 없음 -
단점
- 어렵다....복잡한 구조에서 사용하기 위해선 많은 지식이 필요한듯 하다.
- 직접 SQL을 호출하는것 보단 성능이 떨어진다. 속도 측면에서 느리다
- 복잡한 통계 분석을 메소드 호출로 처리하기란 어렵다.
그래서 Hibernate란 무엇일까 ?
JPA를 사용하기 위한 ORM 프레임워크라 생각하시면 됩니다.
이상 오늘의 포스팅은 이만 마치도록 하겠습니다.
기회가 되면 JPA 설정 하는 방법에 대해서 포스팅 하도록 하겠습니다!
감사합니다.
'이론' 카테고리의 다른 글
DevOps 란 무엇일까? (0) | 2020.07.28 |
---|---|
Load Blancer란 무엇일까??? (0) | 2020.07.27 |
WAS 와 웹 서버(Web server) 차이 (0) | 2020.07.15 |
Maven vs Gradle 메이븐과 그래들의 차이! (0) | 2020.07.08 |
OAuth 2.0 이란 (0) | 2020.07.06 |