본문 바로가기

JPA/JPA 소개

#01 SQL을 직접 다룰 때 발생하는 문제점

Index

  • 반복 그리고 반복
  • SQL에 의존적인 개발
  • JPA와 문제 해결

반복 그리고 반복 

개발자는 당연히 단순하게 반복되는 일이 있다면 이를 자동화 하거나 반복되지 않아도 되는 일이라면 반복을 피하는 방법을 선택 할 것이다.  JPA뿐 아니라 우리는 매일매일 개발을 하면서 느끼고 있다. 더군다나 김영한님의 JPA책에서 이야기 하는 대형 SI프로젝트는 더더욱이 그럴 것 같다. 무수히 많은 화면을 개발하면서 수백개의 테이블에 해당하는 CRUD를 생성하고 혹시라도 설계가 변경되면 해당 테이블과 관계있는 소스를 모두 찾아서 변경을 해야만 하는 매우 귀찮은 일이 생기게 된다.

 

 

SQL에 의존적인 개발

하나 예를 들어보자! 고객의 요청으로 화면의 고객 정보를 추가해서 보여달라는 요청이 들어왔다. 하지만 고객정보가 새로 생긴 부분이 아닌 기존에 이미 존재하고 있는 데이터였다. 하지만 우리가 하는 개발 순서는 다음 단계와 비슷하지 않을까??? 

 

1. 해당 데이터를 이미 화면에서 가지고 있는데 사용하고 있지 않은 것 인지 혹시 모르니 개발자 모드로 대충 확인해 본다.

2. 데이터가 없다면 ??  > Controller > Service 를 찾아가서 return 해주는 데이터를 확인한다. 

3. 분명히 VO 또는 DTO에는 내가 사용하고 싶은 맴버변수가 들어 있는데... 데이터가 없다.

4. 왜 그런지 SQL문을 확인하고 실제로 SQL의 작성이 어떻게 되는지 확인한다.

 

이렇게 1~4번 사이를 확인하면서 꼭 SQL문을 확인하고 수정하는 일이 많이 발생을 한다.

 

이처럼 우리는 SQL을 꼭 확인하고 대부분의 로직이 SQL로 들어가게 되면서 해당 쿼리를 확인하지 않고서는 개발을 진행할 수 없어진게 된다.  실제로 내가 담당하는 솔루션에서 컬럼 하나를 추가 하거나 버그를 고치기 위해서는 

업무상 몇백줄이 넘는 쿼리문을 분석해서 버그 원인을 찾아야 한다.  그리고 나는 자연스럽게 개선 요청이 들어오면 해당 로직을 쿼리에서 해결하는 경우도 적지않다. 그 이유는 기존 로직도 대부분 쿼리문에 들어가 있기 때문에 ... 

뭐 이런저런 이유로 우리는 쿼리에 로직을 넣고 자바 코드에서는 데이터만 나르는 일을 많이 수행하게 된다.

 

JPA와 문제해결 

JPA는 개발자를 대신해서 SQL문을 생성해고 데이터베이스에 전달을 한다.  덕분에 위에서 언급한 단점들을 JPA가 해결 해준다. 다만 학습이 필요하다~!  정확하게 알지 못하고 사용 할 거라면 백기선님이 사용하지 말라고 했다. (정확하게는 youtube에서 문제를 주심 그리고 왜 이런현상이 일어 나는지 모르면 JPA쓰지 말고 공부를 더 하고 쓰라고 함!! ) 어쨋든 우리가 학습을 한다면 위에서 언급한 모든 단점을 고칠 수 있고 그 외에도 여러 장점들이 생겨나기 때문에 꼭~! 학습에 성공해서 사용하는 걸 목표로 한다~! 대충대충 말고!! 정확하게!

 

 

 

 

 

 

 

'JPA > JPA 소개' 카테고리의 다른 글

#03 JPA란 무엇인가?  (0) 2021.05.30
#02 패러다임의 불일치  (0) 2021.05.24