본문 바로가기
728x90

Java30

[Java] 공통 적용 JsonDeserializer 만들어 보기 개요외부 api와 통신하여 작동하는 기능 개발 시, 외부에서 리턴되는 상태 코드 등을 애플리케이션 내부에서 사용하려고 하면 해당 코드를 활용하는데 어려움을 겪고는 한다. 아래는 카카오톡 비즈메시지 센터 API 중, 알림톡 템플릿 정보 조회 결과에 대한 리턴값 중 일부이다.  위와 같이 검수 결과가 REG, REQ 등과 같은 한 눈에 의미를 알 수 없는 약어로 축약되어 리턴되는데, 이를 애플리케이션 내부에서 원활하게 사용하기 위해서는 Enum을 선언하고 외부 api 결과값을 해당 Enum에 매핑하여 사용할 수 있다. public interface KakaoCommonType { T getCode(); String getTitle();}@RequiredArgsConstructorpublic en.. 2024. 9. 23.
[Java] UUID를 이용한 고유 식별자 생성 개요개발 프로젝트에서 데이터베이스의 각 레코드를 고유하게 식별해야 하는 경우가 많다. 일반적으로는 자동 증가하는 숫자형 ID를 사용하는 경우가 많지만, 분산 시스템이나 여러 서비스가 동시에 데이터베이스에 접근하는 환경에서는 고유성이 보장되는 UUID(Universally Unique Identifier)가 더 적합한 경우가 많다. 이번 프로젝트에서도 여러 서버에서 고유한 식별자를 생성해야 했기에, UUID를 사용하는 방법을 찾아보게 되었다.  UUID란 무엇인가? UUID는 Universally Unique Identifier의 약자로, 전 세계적으로 고유한 식별자를 생성하는 데 사용된다. UUID는 128비트 길이의 숫자로 이루어져 있으며, 36자리의 문자열로 표현된다. 아래는 UUID의 일반적인 형식.. 2024. 9. 22.
[Java] BigDecimal을 이용한 정확한 소수 계산 개요개발을 하다 보면 소수 계산이 필요한 경우가 자주 있다. 처음에는 double이나 float 같은 기본 자료형을 사용했었는데, 이러한 자료형은 금액대가 커질수록 오차가 나는 것을 체감할 수 있다. 가격 계산이나 금액과 관련된 도메인을 다룰 때, 이러한 오차는 치명적일 수 있으므로 자바에서 제공하는 BigDecimal이라는 클래스를 사용하고 있는데 이 클래스가 기존에 사용하던 클래스와 어떤 부분이 다른지 정리하고자 한다.  BigDecimal의 필요성 자바의 double과 float는 부동소수점 연산을 사용해 실수를 처리한다. 이는 빠른 계산을 가능하게 하지만, 미세한 소수점 이하 자리에서 오차가 발생할 수 있다. 특히 금융 관련 애플리케이션에서는 이런 작은 오차도 큰 문제가 될 수 있다. 따라서 정확.. 2024. 9. 22.
자바 객체의 equals()와 hashCode() 오버라이드 시 주의할 점 개요개발을 하다 보면 객체를 비교하는 상황이 자주 발생한다. 최근 프로젝트에서 HashSet을 사용해 중복을 제거하는 기능을 구현하면서, equals()와 hashCode()의 오버라이드가 제대로 이루어지지 않아 의도치 않은 결과를 경험했다. 이 문제를 해결하면서 객체 비교와 해시 테이블 기반 컬렉션(HashSet, HashMap 등)의 동작 원리를 이해하는 것이 중요하다는 것을 깨달았다. 이번 글에서는 자바에서 객체의 equals()와 hashCode()를 올바르게 오버라이드하는 방법과 그 과정에서 주의할 점을 중점적으로 설명하려 한다.  객체 비교에서 equals()와 hashCode()의 역할 자바에서 객체를 비교할 때 가장 기본적인 메서드가 equals()와 hashCode()다. equals().. 2024. 9. 22.