- Published on
CampU 기록 #1
- Authors
- Name
- 신주용
세 번째 프로젝트 회고 - 다른 위치에서 다른 관점으로
SSAFY에서의 세 번째이자 마지막, 자율 프로젝트가 시작됐다. 이번엔 자바 백엔드 역할을 맡게 되었다. 지난 팀 백엔드 세 명이 그대로 뭉쳤고, 두 명이 자바 백엔드를 하며 지난 프로젝트 때 컨벤션을 맞췄기 때문에 거기에 맞춰 가기로 했다. 마치 지난 번 Scavenger에 기능 구현하고 PR 올릴 때의 느낌이 살짝 든다. 이번 프로젝트 목표는 이미 어느 정도 잡힌 컨벤션을 왜 그렇게 정했는지 내가 따라가면서 이해하고 고민하면서 내 것으로 만드는 것이다. 차이점이 있다면 이번엔 같은 팀이니 엄청 사소한 거라도 물어보기가 편하다는 것.
팀장을 두 번이나 해서 그런지 원래 성향이 그런지는 모르겠지만, 나는 프로젝트를 조금 넓은 범위에서 보는 편인 것 같다. 팀원 중 한 명이 자바 백엔드에 정말 깊게 파고 드는 스타일이라 그 친구와 이야기를 하다 보면 특히 더 그렇게 느껴지는 것 같다. 그 친구와 얘기하다 보면 어떻게 단기간에 그렇게 깊이 공부하고 이해할 수 있는지 대단하다는 생각이 계속 든다. 하지만 한 편으로는 프로젝트 진행에 관련한 얘기를 할 때도 백엔드 입장에서 바라보는 것 같아 옆에 앉아 있는 프론트 팀원들 의견을 내가 물어보곤 한다. 6명 팀 프로젝트인데 팀장이든 아니든 누구 한 명은 조율을 맡아야 되지 않겠나. 😂
JPA
이번 프로젝트에서 JPA를 처음 사용하게 됐다. JPA에 대해 인터넷 강의를 보면서 공부하던 중 JPA의 '우연적 복잡성'에 관해 논하는 글1을 읽게 됐는데, 흥미로운 관점이라 생각되어 팀원들에게도 공유했다. 긴 대화 끝에 내가 생각하는 우리 프로젝트에서 JPA를 사용하는 이유를 다음과 같이 정리해봤다.
- Google Trends 기준 전 세계적으로는 항상 JPA가 더 인기있었고, 한국에서도 최근 몇 년은 JPA가 더 인기있는 기술이 됨.
테이블 컬럼이나 구조가 바뀌면 MyBatis는 모든 SQL문을 다 찾아가며 바꿔줘야 하지만, JPA는 테이블에 매핑되는 Entity 클래스만 수정하면 됨.
- 이는 DB 설계에 익숙치 않기도 하고 요구사항이 바뀌기도 해서 테이블 변경이 종종 일어나는 교육생 수준의 프로젝트 특성상 컬럼 누락 등의 실수를 방지하는 데 도움이 된다고 생각.
DB 벤더에 독립적. 6주간의 프로젝트 도중에 DB를 바꿀 일은 없겠지만
(없어야 하겠지만...), DB에 종속적이라 DB가 바뀌면 위에서 말했던 것과 같이 모든 SQL문을 다시 짜야 하는 MyBatis에 비해서 장점이라 생각.
JPA는 처음 사용해보는 것이지만, ORM은 기존에도 써본 경험이 있다. JPA에 대해 공부하는 것도 좋지만 JPA는 도구일 뿐이라고 생각한다. JPA의 영속성 컨텍스트는 어떤 기능을 제공하는지, 객체와 데이터 간의 관계를 JPA에서는 어떻게 풀어내는지와 같이 더 근본이 되는 지식을 이해하는 데 노력해야겠다.
Footnotes
simplify-len. "Hibernate, JPA, Querydsl는 과연 좋은 도구일까?" 심플랜의 백문이불여일타. https://happy-coding-day.tistory.com/entry/Hibernate-JPA-Querydsl는-과연-좋은-도구일까 (accessed Apr. 28, 2024). ↩