Object Relational Mapping, 객체 - 관계 맵핑
객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다.
객체 모델과 관계형 모델가의 불일치가 존재하는데,
ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.
객체를 통해 간접적으로 데이터베이스 데이터를 다룬다.
JPA, Hibernate 등
JPA는 반복적인 CRUD SQL을 처리해준다. JPA는 매핑된 관계를 이용해서 SQL을 생성하고 실행하는데, 개발자는 어떤 SQL이 실행될지 생각만하면 되고, 예측도 쉽게 할 수 있다. 추가적으로 JPA는 네이티브 SQL이란 기능을 제공해주는데 관계 매핑이 어렵거나 성능에 대한 이슈가 우려되는 경우 SQL을 직접 작성하여 사용할 수 있다.
JPA를 사용하여 얻을 수 있는 가장 큰 것은 SQL아닌 객체 중심으로 개발할 수 있다는 것이다. 이에 따라 당연히 생산성이 좋아지고 유지보수도 수월하다. 또한 JPA는 패러다임의 불일치도해결하였다.
Repository
라는 인터페이스를 제공한다.Repository
는 정해진 규칙으로 인터페이스를 선언하기만 해도 자동으로 내부에서 구현체를 만들어 동작시켜준다.Repository
인터페이스의 기본 구현체인 SimpleJpaRepository
의 내부를 보면 EntityManager
를 사용하고 있습니다. 이를 통해 Spring Data JPA는 JPA를 추상화 시켰다는 것을 알 수 있습니다.
좋은정보 감사합니다~