spring 11

[Spring] Composite id class must implement Serializable 오류 해결

안녕하세요 세기무민입니다. 오랜만에 오류 해결 포스팅으로 찾아왔습니다. 오류 현상Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Composite id class must implement Serializable: ~~~ 위의 오류가 발생하는 원인은 기본키를 복수로 지정했을 때 직렬화를 해야한다는 의미입니다. 보통 키를 복수로 지정할 경우 복합키를 사용하게 되는데 복합키의 경우도 직렬화가 필요하다. JPA는 엔티티를 영속성 컨텍스트와 2차 캐시에 저장하여 관리하는데 복합키를 전송하거나 저장하려면 직렬화가 필요 분산 처리 시스템(클러스터링 환경)에서 활용이 가능한..

[Spring] Utility Class에 대해서는 Static Method로 구성하는 것이 좋을까?

안녕하세요 세기무민입니다. 이번 포스팅은 Utility Class에 대해서 Static Method vs @Component 중 어떻게 구성하는 것이 조금 더 효율적인지에 대해 의견을 정리해보려고 합니다. 서론회사에서 오프라인 코드 리뷰 중 Utility Class에 대해 Static Method가 효율적일지, @Component가 조금 더 효율적일 지 검토를 해보기로 하였고 이에 따라 개인적인 궁금증에 따라 서치를 시작했다. Static Method 말 그대로 정적 매서드로 인스턴스 생성 없이 호출이 가능하다. 주로 Utiility Class와 같이 재사용이 가능한 매서드를 제공하기 위해 사용된다. @Componet 비즈니스, 서비스 로직과 같이 어플리케이션 로직 구현 시 사용되는 어노테이션이며 의존성..

exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type 오류 해결하기.

안녕하세요 세기무민입니다. 이번 포스팅은 실무에서 역직렬화 관련하여 발생한 오류 해결과 관련하여 포스팅 해보려고 합니다. 실제 현업에서 사용하는 코드는 사용하지 못하기 때문에 예시 코드와 예시 내용으로 작성되는 포스팅입니다. 1. 문제 상황 설명 및 원인 파악 현재 제가 개발하고 있는 A라는 서비스에서 B라는 서비스를 호출하여 특정 맴버 값을 받아와야 하는 API라고 가정합시다. // A가 B에게 전달하려는 API Reqeust { memberSeq : Int, memberName : String, memberType : String } // A가 B에게 전달받은 API Response 값 { // Int memberSeq : 100112, // String memberName : "sg-moomin" ..

[Spring] Scheduling LockProvider 사용 목적과 사용 시 고려할 사항 정리

최근에 업무를 하다가 Scheduling 변경 사항이 존재하여 LockProivder에 대해 알아봤는데 내가 알아본 내용과 업무 시 고려해야 할 사항에 대해 간략하게 정리를 해보려고 한다. 1. LockProvider 사용 목적 및 의미 LockProvider를 사용하는 목적은 아래와 같다. - 스케줄러의 중복 실행 방지 - 실무에서 하나의 어플리케이션을 이중화 및 N중화를 한 경우가 대부분이다. 서버가 많으면 많을 수록 스케줄러의 Lock은 중요한 사항이 되며 이를 하지 않는 경우 어떤 서버가 배치를 처리해야 할 지 모르기 때문에 중복 실행이 될 수 있고 이는 큰 문제가 될 수 있다.(예를 들어 결제 시스템 새벽 배치인 경우 결제가 여러번 될 수 있다는 의미) - 따라서 순서와 관계 없이 1개의 서버가..

maven resources compiler : Maven Project Configuration for Module isn't~ 오류 해결하기

업무를 하다가 오랜만에 킨 프로젝트를 실행했더니 Maven 컴파일 오류가 떠서 오류 해결한 방법을 기록하려고 합니다. (요즘 포스팅을 못해서 쓸겸....그리고 나중에 내가 확인해야 할 사항이 될수 있기 때문...) 우선 프로젝트가 현재 메이븐 파일을 컴파일 못한다면 2가지 사항을 검토해봐야 한다. 1. 메이븐 설정이 정상적으로 되었는지 -> 나는 메이븐 설정과 conf 파일까지 매우 완벽하게 잘 설정되어 있었음으로 해당 문제는 X 2. 현재 프로젝트의 JDK/JRE 설정이 정상적으로 작동하는지? -> 내 생각에는 JDK 문제로 보였던게 메이븐에 알맞는 JDK로 빌드를 해야하는 케이스가 있는데 메이븐에서 요구하는 JDK 버전과 달라서 컴파일이 발생한 것으로 생각했다. 따라서 나의 처리 방안은 아래와 같다...