본문 바로가기

자바개발3

[Java] 자바에서 Optional의 올바른 사용법 개요개발을 하면서 가장 많이 만나는 예외 중 하나가 NullPointerException(NPE)이다. 특히 객체가 null일 때 이를 처리하지 않고 사용하면 프로그램이 예기치 않게 종료될 수 있다. 최근에 내가 작업하던 프로젝트에서도 이런 상황을 여러 번 마주쳤다. 이를 해결하기 위해 Optional을 활용해 NPE를 방지하고자 했지만, Optional의 잘못된 사용법을 보고 오히려 코드가 복잡해지는 경우도 경험했다. 그래서 이번 글에서는 자바의 Optional을 올바르게 사용하는 방법과 피해야 할 안티패턴을 설명하고자 한다. Optional이란 무엇인가? Optional은 자바 8에서 추가된 클래스다. 이 클래스는 값이 있을 수도 없을 수도 있는 객체를 감싸서 NPE를 방지하는 역할을 한다. 기본적으.. 2024. 9. 24.
[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.