은로그
[JPA] Entity를 Dto로 변환(리턴)의 중요성
서론 엔티티를 Dto로 리턴해야 하는 이유는 무엇일까? 하나의 엔티티에서 여러 개의 Dto를 만들면 이름 짓기도 애매해지고 Dto가 여러 개여서 유지보수도 힘들어 보일 수 있다. 하지만 왜 Dto를 만들어서 코드를 작성하는 것이 더 좋은 것일까? 에 대해 이번 포스팅에서 그 이유를 정리해 보도록 하자. Entity 우선 Entity를 자세히 모르는 분은 JPA 도메인 설계, 엔티티에 관한 포스팅을 읽어보는 것을 추천드린다. https://cobi-98.tistory.com/57 [JPA] 도메인 설계, 엔티티 매핑 요구사항 분석 기능목록 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고 관리가 필요하다. ..
[Java] 함수 파라미터의 final 키워드를 사용하는 이유
요청 데이터를 담고 있는 객체(requestDto) 인프런 jpa 강의에서 Entity를 dto로 변환하여 리턴하는 방식의 중요성을 배웠다. 이후 Dto를 요청 및 응답에 필요한 데이터만 포함시키도록 request, response로 구분하여 프로젝트를 진행하였다. 여기서 Dto를 관리하는 방식을 찾던 도중, Dto를 관리하는 클래스에서 변수명에 final을 사용하는 부분을 볼 수 있었다. 함수의 파라미터에 final을 사용하는 것은 이전 프로젝트를 하면서도 본적이 있지만 넘어갔던 부분이라 Dto에 대해 알아보는 김에 같이 알아보기로 하였다 ! final 키워드란? final 키워드를 사용하면 해당 변수는 값을 변경할 수 없다. 따라서 함수 내부에서 실수로 변수의 값을 변경하는 것을 방지할 수 있다. 또..
[Git] Git Hooks, git commit 전 코드를 수정해보자.
프로젝트 효율성 높이기 위한 방안 탐색 프로젝트의 스파게티 코드 리팩토링을 진행하는 도중, 코드의 서식이 맞지 않아 가독성이 떨어지는 것 과 사용되지 않는 import문이 늘어나면서 프로젝트의 코드가 효율적으로 관리되지 못한다는 사실을 깨달았다. 현재 나는 이를 위해 인텔리제이의 단축키 ctrl + alt + l (코드 서식 수정) ctrl + alt + o (사용하지 않는 import 문 제거) 를 사용하여 내 코드를 수정하며 git에 저장하고 있었다. 하지만 이 부분을 자동으로 git commit 명령 이전에 내 코드를 보고 수정해 주는 자동화 기능은 없을까? 라는 생각을 가지고 방안을 탐색하였고, git hook을 발견했다. 그래서 commit이나 push 등의 git 명령어 동작 전에 코드 품질을..
[JPA] 도메인 설계, 엔티티 매핑
요구사항 분석 기능목록 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고 관리가 필요하다. 상품의 종류는 도서, 음반, 영화가 있다. 상품 카테고리로 구분할 수 있다. 상품 주문 시 배송 정보를 입력할 수 있다. 도메인 분석 설계 JPA 는 도메인 모델을 다루는 데에 있어서 Mybatis 보다 상당한 강점이 있다. 그 예시를 도메인과 테이블 분석, 엔티티설계로 순차적으로 요구사항을 적용시켜 보자. 회원은 여러 상품을 주문할 수 있다. 그리고 한 번 주문할 때 여러 상품을 선택할 수 있으므로 주문과 상품은 N:M 관계다. 하지만 이런 N:M 관계는 관계형 데이터베이스는 물론이고 엔티티에서도 거의 사용하지 않..
[JPA] JPA를 사용하는 이유와 JPA에 대하여
1. JPA 배경 JPA(Jakarta Persistence API)가 나타난 배경은 자바 기반의 애플리케이션 개발에서 객체-관계 매핑을 처리하는 과정에서 발생하는 문제들을 해결하고자 함에 있다. 기존에는 RDBS와 상호작용하기 위해 JDBC(Java Database Connectivity)를 사용했다. 하지만, JDBC를 사용하는 과정에서 생기는 문제가 있었다. 1. 반복적인 코드 : 직접 SQL 쿼리(CRUD)를 작성하며 객체-관계 매핑 2. 패러다임의 불일치 : 객체와 관계형 DB의 차이 -> 객체에서 필드 수정 시 SQL도 수정 필요 DB 패러다임의 불일치란? 더보기 객체 지향 프로그래밍 추상화, 캡슐화, 정보은닉, 상속, 다형성 등 시스템의 복잡성을 제어할 수 있는 다양한 장치들을 제공한다. 필..