JPA를 경험하기 전 나의 경험

나는 국비과정을 통해 Spring을 처음 접했다. java, spring, oracle 등을 사용하여
웹을 구현하는 등의 프로젝트를 몇가지 진행한 적이 있다.

처음 웹을 만들었을 때는 "참 여러모로 해야할 것이 많네~ "라고 생각했다.
왜냐하면 spring으로 Controller Service Dao 등을 전부 구현하고 나서는 XML에서
DB를 연결해주기 위해 쿼리문을 작성하고 jsp에서는 받은 데이터들을 활용하여 보여주어야 하는
그 시간이 매우 길게 느껴졌다.

분명 길게 느껴졌다.

SI에 취업을 하고 난 후에도 기능을 구현하고 DB에서 쿼리를 작성하여 XML 매퍼파일에 필요한
데이터들을 뽑아오기위해 매우 애를 썼다.
처음 간 회사인지라 테이블 이름 조차도 파악할 수 없는 신입이었음에도 불구하고 몇가지 테이블을 알려주시면서 이런이런 정보가 있어요 라는 설명을 듣고 물어가면서 데이터를 뽑아 값이 제대로 들어오는지 확인을 했었다.

물론 SQL이 중요한 것은 알지만, 기능을 구현하는 개발하는 시간보다는 쿼리문을 작성하고 있는 시간이 개인적으로는 비효율적이라는 생각을 했었다.

자바 ORM 표준 JPA 프로그래밍 _김영한

이번에 항해99를 하면서 미리 선행학습을 하기위해 SpringBoot 강의를 들어보았다.
강의 중 JPA를 사용하여 쿼리를 작성하는데 그게 그렇게 편하게 느껴졌었다.
물론, 인x런에 김영한님 강의도 이전에 국비과정에서 들어는 보았지만, 국비과정에서는 JPA를 사용하지 않을 뿐더러, 김영한님의 커리큘럼이 국비과정과 맞지 않아서 그때는 이렇게 깊게 공부할 생각을 해보진 않았는데, 단순히 여기저기 들려오는 내용을 들었을 때 JPA가 매우 편리하고
개발자의 생산성에 있어 많은 도움을 준다고 하여 깊이있게 공부해보고자 책을 구매하게 되었다.

워낙 두꺼운 책이다보니 베개가 되지 않았으면 하는 바람인데, 읽어보니 생각보다 꽤 재미도 있고,
흥미가 생겼다. 중요한 내용인 것 같은 내용들은 형광펜으로 표시해가면서 첫 1회독을 편안하게 한번 읽어보고 앞으로 velog에 정리해보고자 한다.

JPA 정리

먼저 객체 모델과 관계형 데이터베이스 모델은 지향하는 패러다임이 서로 다르다.
이 패러다임의 차이를 극복하려고 개발자가 너무 많은 시간과 코드를 소비한다고 한다.
앞서 내 경험만을 봐도 그렇게 생각하던 때가 있었는데, 나만 이렇게 생각하는 것만은 아니었구나
생각했다.

더 어려운 것은 객체지향 애플리케이션답게 정교한 객체 모델링을 할수록 패러다임의
불일치 문제가 더 커진다는 점이다.

이 틈을 메우기 위해 개발자가 소모해야 하는 비용도 점점 더 많아진다.
이 부분에서 말하는 비용이라는 것이 개발자 나 사업주 입장에서 공통적으로 "시간" 이라고 생각했다. 좀 더 빠르고, 중간에 데이터 베이스가 변경되더라도 그것을 JPA에 알려만 준다면, 비교적 쉽게 변경할 수 있다고도 했다.

JPA는 패러다임의 불일치 문제를 해결해주고 정교한 객체 모델링을 유지하게 도와준다.

JPA 장점

  • CRUD SQL을 작성할 필요가 없다.
  • 조회된 결과를 객체로 매핑하는 작업도 대부분 자동으로 처리한다.
  • 데이터 저장 계층에 작성해야할 코드가 1/3로 줄어든다.
  • 애플리케이션을 SQL이 아닌 객체중심으로 개발하니 생산성과 유지보수가 확연이 좋아진다.
  • 테스트를 작성하기도 편리해진다. 동시에 버그도 많이 줄어들었다.
  • JPA를 사용하면 데이터베이스를 변경하더라도 코드를 거의 수정하지 않아도 된다.

JPA를 사용해야하는 이유

  • 생산성

  • 유지보수

  • 패러다임의 불일치 해결

  • 성능

  • 데이터 접근 추상화와 벤더 독립성

profile
#공부중 #협업 #소통중시 #백엔드개발자 #능동적 #워커홀릭 #스파르타코딩 #항해99 #미니튜터 #Nudge #ENTJ #브레인스토밍 #아이디어뱅크

0개의 댓글