백엔드 개발/플젝 리팩토링 (5) 썸네일형 리스트형 05. [Mybatis에서 JPA로] 기능 목록 정리 및 엔티티 설계 기능 목록 회원 기능 회원 가입 회원 로그인 / 로그아웃 회원 조회 호텔 예약 기능 호텔 예약 주문 호텔 예약 조회 호텔 예약 취소 공지사항 공지사항 글 등록 공지사항 글 조회 공지사항 글 수정 공지사항 글 삭제 기타 요구사항 호텔 객실 잔여 객실(재고) 관리 필요 호텔의 종류는 서울 지역으로 국한됨 호텔을 카테고리로 구분 할 수 있다 (카테고리 고민..어떤 카테고리로 묶을것인가..) 도메인 모델과 테이블 재설계 회원은 여러 호텔 예약을 할 수 있다. 그리고 한 번 주문할 때 여러 호텔(상품)을 선택할 수 있다. (장바구니에 담아서 한꺼번에 결제 가능) 회원 : 주문의 관계는 '1 : 多 관계' 주문 : 호텔(상품)의 관계는 '多 : 多 관계' -> ERD DB에서나 엔티티에서도 다대다 관계는 거의 사용.. 04. [Mybatis에서 JPA로] 프로젝트 환경설정 목차 프로젝트 생성 의존성 추가 sources 파일 추가 프로젝트 생성 기존의 프로젝트는 이런 구조로 폴더가 구성되어 있어서, 새롭게 Spring Initializr에서 생성할 때도 이와 같은 구조로 프로젝트를 생성하고 싶었다. 일단, Gradle - Groovy, Language - Java, SpringBoot - 3.2.2, Package - Jar, Java - 17로 세팅해주었다. 그리고 Project MetaData를 설정해야하는데, 기존의 프로젝트와 폴더 조직 순서가 같았어야 했기 때문에 이 부분을 굉장히 신중하게 설정했다. Group : com.boot Artifact : hotel Name : hotel Package name : com.boot.hotel이 되도록 이렇게 세팅했다. 의존.. 03. [Mybatis에서 JPA로] JPA를 쓰고싶은 이유 & 목표 김영한 강사님의 스프링부트 + JPA 조합 강의를 듣다보니, 신세계가 열린 기분이었다. 뭐랄까.. 한 줄 한 줄 코딩을 배운 느낌이 아니라, 전반적인 큰 그림을 보게 된 기분이었다. 그렇게 느끼게 된 게 JPA와의 조합으로서 열리는 무한대의 응용세계였다. 나는 팀프로젝트에서나 실무에서 테스트 코드를 적어본 적이 없었고, 도메인 단위의 설계를 생각하면서 개발에 임해본 적이 없는 것 같다. 그리고 성능 개선에 너무 관심이 많았는데, 이를 어떻게 실현해야할지 감이 안잡혔었다. JPA를 배우다보니, 영속성 컨텍스트, 영속성 컨텍스트 관리, @Transactional, 1차 캐시 등등을 알게 되고, 성능 개선을 어떠한 방법으로 하면 되겠구나!가 감이 잡혀서 JPA를 직접 나의 프로젝트에 적용하여 마이그레이션을 하.. 02. [Mybatis에서 JPA로] 내가 Mybatis를 쓴 이유 내가 개발한 프로젝트마다 Mybatis가 쓰였던 이유? 내가 개발한 프로젝트는 교육기관에서 팀원들과 함께 개발한 웹 어플리케이션, 전자정부프레임워크를 활용한 공공 SI 프로젝트정도였다. 공통점이 한 가지 있는데, 세 개의 프로젝트 다 Mybatis를 사용했다는 것이다. Mybatis를 왜 주로 썼던걸까? 사실 생각해보면 그냥 "마이바티스 쓰자~" , "세팅은 마이바티스로 하신다는데요?" 해서 썼던 기억이 난다. 다시 돌아보니 개발하는 데에 있어서 하나하나 왜 이걸 쓰게됐고, 이걸 사용함에 따라 어떠한 제약이 있었고, 그로 인해서 어떠한 것을 깨달았는지가 매우 중요하다는 걸 알게 되었다. 그리고 다년간 우리나라에서 Mybatis가 수요되어 온 어떠한 구체적인 사유도 있을 것 같아서 그 이유를 알아보고 싶어.. 01. [Mybatis에서 JPA로] 마이그레이션을 맘먹은 계기 1. 파이널 프로젝트 마이그레이션하기로 맘먹다. Mybatis로 만들어진 프로젝트를 JPA로 마이그레이션하는 과정 1. 계기 Spring DATA JPA에 대해서 배우고, 이를 활용해 프로젝트를 만들면서 이해하곤 했지만 실제로 내가 원하는 서비스를 JPA로 개발해본 경험은 아직까지는 없다. 내가 다녔던 구)회사 에서는 Mybatis만 취급해서, JPA와 더 멀어졌었다. 하지만 개인적으로 개발에 대해서 공부를 하다보니, 내 최종 목표인 내 아이디어를 구상하고 개발로서 구체화하여 서비스를 론칭하는 데에 있어서는 JPA가 압도적으로 많이 쓰인다는 걸 알게 됐다. 또한, JPA가 Mybatis보다 클린 코딩에 가깝기 때문에 (내부는 복잡할지언정, 이거는 내가 더 열심히 공부하면 된다.) 리팩토링하기에도 적합하다.. 이전 1 다음