"객체지향 프로그래밍"을 배웠는데 왜 객체지향 프로그래밍을 못하지?
- 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
웹 서비스를 운영하다보면 DB를 다루는 것을 피할 수 없다고 합니다.
MyBatis같은 SQL Mapper를 이용한 쿼리 작성에는 다음과 같은 문제가 있었다고 합니다.
ORM은 위와같은 문제를 해결하기에 좋은 기술이였고, JAVA에서는 JPA라는 자바 표준 ORM이 등장했다고 합니다.
// 객체지향의 경우
User user = findUser();
Group group = user.getGroup();
// 관계형 데이터베이스가 추가될 경우
// User, Group을 따로 조회하게 되고, 두 객체의 관계를 알기 힘들어진다.
User user = userDao.findUser();
Group group = GroupDao.findGroup(user.getGroupId());
따라서 개발자는 객체지향적으로 프로그래밍을 하고, JPA는 대신 SQL을 생성해서 실행하여 SQL에 종속적인 개발을 하지 않도록합니다.
JPA는 인터페이스입니다.
따라서 사용하기 위해서는 구현체가 필요하며 대표적으로 'Hibernate, EclipseLink'등이 있지만 크게 2가지 이유로 Spring에서는 위 구현체들을 추상화시킨 Spring Data JPA라는 모듈을 이용합니다.