Spring3 Setter 없이 Jackson 역직렬화가 가능할까? 문제 상황 DTO 설계 중 이런 고민이 생겼다. @Getter@NoArgsConstructorpublic class GameRequest { @NotNull(message = "총 베팅액은 필수입니다.") private Long totalBetAmount; // Setter가 없는데... Jackson이 어떻게 값을 넣지?}DTO는 Entity의 구조를 외부로부터 노출시키지 않기 위해 사용하는데, 그 과정에서 Request와 Response를 다르게 설계한다. Response DTO: 불변성이 필요 → @Getter + Builder 패턴Request DTO: 외부에서 들어온 데이터를 받아 Entity에 전달 → GC에 의해 금방 수거되는 일회용 객체그렇다면, Setter 없이도 .. 2025. 11. 16. JPA 엔티티, 생성자는 자동으로 둘까 직접 쓸까? 강의를 듣다가 문득 생성자를 직접 코드로 작성하는 이유가 궁금했다. 평소에는 @AllArgsConstructor를 써서 편리함을 챙겼었는데, 튜터님께 직접 생성자를 작성하는 방식과의 차이에 대해 질문했다. @AllArgsConstructor를 사용한 이유편리함: 직접 코드를 작성하지 않아도 자동으로 생성자가 생성되기 때문에 편리해서 사용했다.코드의 간결성 및 가독성: 다른 로직에 집중할 수 있고, 생성자가 많아질수록 가독성이 높아지기 때문이다. 그럼에도 직접 생성자를 작성하는 이유1. 필수 필드와 중요성 명확하게 표현직접 생성자 코드를 작성하면, 어떤 필드가 필수적인지, 그 필드의 중요성을 명확하게 표현할 수 있다. 예를 들어, Product 엔티티에서 name과 price는 필수적인 값일 수 있는데,.. 2025. 2. 12. 트랜잭션 처리 및 체제 전환에서의 문제점과 교훈 문제점이전 프로젝트에서 트랜잭션 처리가 정상적으로 동작하지 않아 문제를 파악하던 중, 튜터님께 몇 가지 조언을 받은 후 문제를 파악해 보았고, 그 과정에서 중요한 두 가지 포인트를 알게 되었다 Spring Legacy와 Spring Boot에서 @Transactional의 생성 방식 차이.MyBatis와 JPA를 혼용하는 상황에서 JpaTransactionManager가 제대로 작동하는지 확인. 이 두 가지를 중점적으로 확인하기 위해 시도한 방법들을 정리해보려고 한다. 시도해본 방법들 1. Proxy 객체 생성 확인 @Transactional이 정상적으로 작동하려면 프록시 객체가 생성되어야 한다. 프록시 객체의 생성 여부와 생성된 프록시의 종류에 따라 트랜잭션이 제대로 실행되는지 확인할 수 있다.로그에.. 2025. 2. 11. 이전 1 다음