ORM(Object Relational Mapping)이란?
객체지향 프로그래밍 언어를 활용한 어플리케이션에서는 객체를 통해 엔티티간의 관계를 나타내는 반면 데이터베이스는 FK, 즉 다른 엔티티의 PK만을 활용해 관계를 나타낸다. 이 때, 어플리케이션과 DB사이에서 불일치가 발생하게 되는데 이를 해소하고자 해당 데이터베이스 데이터에 해당하는 객체를 자동으로 매핑해주어 객체를 통해 간접적으로 데이터베이스에 접근할 수 있게 해주는 것을 의미한다. ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하므로써 불일치를 해결할 수 있다.
ORM의 장점
- 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와준다.
(내부적으로는 쿼리를 생성하여 DB를 조작하지만 개발자가 이를 신경 쓰지 않아도 된다.)
- 재사용 및 유지보수의 편리성이 증가한다.
- DBMS에 대한 종속성이 줄어든다.
ORM의 단점
- 완전히 ORM만을 이용하여 하나의 어플리케이션을 구현하기는 어렵다.
- 프로시저가 많은 시스템의 경우 ORM의 객체지향적인 장점을 이용하기 어렵다.
JPA(Java Persistance API)란?
- Java 진영에서 채택한 ORM 기술 표준으로 사용하는 인터페이스 모음
- 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스
- 인터페이스이기 때문에 Hibernate, OpenJPA 등을 통해 구현된다.
Spring Data JPA
- 인터페이스 기반으로 간편하고 효율적으로 사용할 수 있는 모듈
- Repository 인터페이스를 작성해 놓으면 Application이 실행될 때, 구현체를 만들어서 DI
- Repository의 메소드를 통해 쿼리를 날릴 수 있음.