프로그래밍언어/자바. 스프링
[Spring] ORM, JPA, Hibernate
함디
2020. 9. 11. 15:11
1. JPA (Java Persistent API)와 ORM (Object Relational Mapping)
1) JPA
- 자바 ORM 기술에 대한 API 표준 명세를 의미합니다.
- ORM을 사용하기 위한 인터페이스를 모아둔 것이며, JPA를 사용하기 위해서는 JPA를 구현한 Hibernate, EclipseLink,
DataNucleus 같은 ORM 프레임워크를 사용해야 합니다.
2) ORM
- 객체와 DB의 테이블이 매핑을 이루는 것을 말합니다. 즉 객체가 테이블이 되도록 매핑 시켜주는 것을 말합니다.
- ORM을 이용하면 SQL Query가 아닌 직관적인 코드(메서드)로서 데이터를 조작할 수 있습니다.
- 예를들자면, Member라는 이름을 가진 테이블의 데이터를 출력하기 위해서 보통 Select * from Member; 라는 쿼
리를 실행해야 하지만, ORM을 사용하면 Member 테이블과 매핑된 객체를 callMember 라고 할때,
callMember.findAll() 라는 메서드 호출로 데이터 조회가 가능합니다.
- Query를 직접 작성하지 않고 메서드 호출만으로 Query가 수행되다 보니, ORM을 사용하면 생산성이 매우 높아집
니다. 하지만 Query가 복잡해지면 ORM으로 표현하는데는 한계가 있고, 성능이 raw query에 비해 느리다는 단점
이 있습니다.
2. Mybatis vs Hibernate
- JPA를 구현할 수 있는 여러 프레임워크가 존재하지만 주로 Hibernate가 JPA를 주도하고 있습니다.
- 동아시아를 제외하고 대부분 나라에서는 Hibernate를 압도적으로 많이 사용합니다.