ToyProject/Health Community

1. 생성자보다 빌더를 써야하는 이유 생성자 파라미터가 많을 경우 가독성이 떨어짐 어떤 값을 먼저 설정하던 상관 없음 객체 필드중 일부만 초기화 가능 2. 빌더를 생성하는 방법 1) 클래스 빌더 클래스 계층에 @Builder를 선언한다. 해당 클래스에 선언된 필드를 기준으로 빌더 생성. import lombok.Builder; import lombok.Getter; import lombok.Setter; @Getter @Setter @Builder public class User { private String username; private String email; private int age; } 사용 User user = User.builder() .username("John") .email("joh..
개인 프로젝트를 진행하다 UnexpectedRollbackException에러가 발생했다. 해당 에러를 해결하기 위해서 먼저 UnexpectedRollbackException가 무엇인지 알아보자. 하지만 그전에 트랜잭션의 전파에 대해서 먼저 알아야한다. 1. 트랜잭션 전파 @Transactional에는 propogation필드가 있다. 해당 필드의 디폴트 값은 Propagation.REQUIRED이다. 이는 기존 트랜잭션이 없으면 트랜잭션을 새로 생성하고, 있으면 해당 트랜잭션을 이어서 사용하겠다는 의미이다. 기존의 트랜잭션에 참여하기 때문에 이를 트랜잭션 전파라고 한다. 2.UnexpectedRollbackException 아래의 코드를 살펴보자. // TrainerService /** * 트레이너 등..
개인 프로젝트를 진행하다 jdbcsqlsyntaxerrorexception에 직면했다. 바로 package project.healthcommunity.domain; import jakarta.persistence.*; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.ToString; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import static java.util.Arrays.*; @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROT..
@MappedSuperclass vs Embedded타입 개인 프로젝트를 진행하다 테이블마다 등록자, 등록일, 수정일, 수정자정보를 추가해주려 하는데 고민이 생겼다. @MappedSuperclass를 이용할지, 임베디드 타입을 이용할지에 대한 고민이다. @MappedSuperclass와 임베디드 타입의 차이는 결론적으로, 상속과 위임의 차이이다. 객체지향의 관점에서 보면, 상속은 부모클래스와의 의존성이 강하게 엮여있기 때문에 유연한 객체를 다루기 위해서는 위임이 더 났다. 보통 위임이 너 나은 선택이지만, 이경우 JPQL을 날릴때 다음과 같은 차이가 발생한다. 1. @MappedSuperclass member.createAt 2. 임베디드 타입 member.traceDateTime.createAt 임베디..
코드 미식가
'ToyProject/Health Community' 카테고리의 글 목록