⭐ Programming/Backend

관계형 데이터 베이스와 객체 지향 프로그래밍의 패러다임(feat.JPA)

김 진 하 2022. 7. 31. 23:57

지금까지 회사서 프로젝트를 진행하면 Mybatis + Spring 을 사용하였다.

대표님도 자바 프로그래밍보다는 SQL문을 중심으로 개발하는 것을 선호하셨고, 첫회사인만큼 그런 점을 배웠다.

그래서 SQL로 줄줄이 짜는 걸 굉장히 재밌어 해서 DBA를 꿈꿔볼까 싶기도 했다.

 

근데 지금 보는 책에서 관계형 디비로 인해 객체 지향 프로그래밍을 하면서도 객체를 중점으로 개발하지 않고 SQL 테이블로 객체를 관리하는 것에 의문을 가지고 있다고 했다.

이 부분을 보는 순간 나는 한 번도 생각지도 못했던 부분이라 너무 흥미로웠다.

책에서 나온 말처럼 지금까진 객체 지향보단 디비 모델링을 중심을 둔 종속 개발이며, 데이터의 저장이 중점인 관계형 디비와 기능과 속성을 관리하는 객체 지향의 패러다임이 불일치하는 상황이었다.

 

그리고 이를 타파하기 위해 나타난 것이 ORM(Object Relational Mapping) 등장하였는데, 저번 장고 프로젝트를 해보면서 경험해보았는데 꽤나 어색했다.

ORM은 객체를 매핑하는 것이고 MyBatis의 SQL Mapper는 쿼리를 매핑하는 것으로 차이가 있다.

그래서 뭔가 sql을 대신 생성해서 실행해주는게 뭔가 편리하면서도 이게 맞게 하고있는거 ? 하는 어색함.

 

??????되고있는거야????하는 걱정을 해소시켜주기 위해 쿼리를 로깅하는 방법이 있다.

resources에 application.properties 파일을 생성하고, shpring.jpa.show_sql=true 를 작성하면 콘솔에서 쿼리를 볼 수 있다!

 

* JPA: 인터페이스로서 자바 표준명세서

- 인터페이스를 사용하기 위해 필요한 구현체: Hibernate, Eclipse Link 등

- 보고 있는 책에서는 추상화시킨 Spring Data JPA 모듈을 사용

(JPA <- Hibernate <- Spring Data JPA)

'⭐ Programming > Backend' 카테고리의 다른 글

Spring 웹 계층  (0) 2023.02.04
작업 스케줄러 종류  (0) 2022.08.04
Gradle 이란?  (0) 2022.07.18
[Java] JVM / JRE / JDK  (0) 2022.07.15
[Spring]Connection pool  (0) 2022.06.27