2025/01 3

JPA Entity Timestamp 관리 전략: DB Level vs Application Level

JPA Entity에서 생성 시간(created_at)과 수정 시간(updated_at)을 관리하는 방식은 크게 두 가지로, 데이터베이스 레벨(columnDefinition)과 애플리케이션 레벨(@CreationTimestamp/@UpdateTimestamp)입니다. 각 방식의 특징과 적합한 사용 환경에 대해 알아보겠습니다.1. 데이터베이스 레벨 관리 (columnDefinition)1.1 구현 방식@Column(name = "created_at", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")@Generated(event = EventType.INSERT)private Instant createdAt;@Column(name = "updated_a..

DB/JPA 2025.01.20

Java Pattern 클래스 사용 시 반드시 알아야 할 주의점

Java에서 정규 표현식을 다룰 때 Pattern 클래스는 매우 중요한 역할을 한다. 하지만 Pattern을 잘못 사용하면 성능 저하나 예상치 못한 동작이 발생할 수 있다. 나는 실제로 프로젝트에서 정규식을 사용할 때 이러한 문제로 지적을 받은 경험이 있었고, 이를 해결하기 위해 Pattern 사용 시의 몇 가지 주의사항을 정리하게 되었다.   Pattern 클래스란 무엇인가?Pattern 클래스는 Java에서 정규 표현식을 다루기 위한 클래스이다. 주로 Pattern.compile(String regex) 메서드를 통해 정규식을 컴파일하고, 이를 기반으로 생성된 Matcher 객체를 사용해 문자열 매칭 작업을 수행한다. 예를 들어, 다음과 같은 코드로 정규식을 사용할 수 있다.Pattern patter..

Java 2025.01.13

효율적인 테스트 코드를 위한 도구 선택: AssertJ와 JUnit의 차이

테스트 코드를 작성할 때 사용하는 AssertJ와 JUnit의 기본 assert 메서드는 모두 검증 로직을 작성하기 위한 도구지만, 그 사용 방식과 기능, 제공하는 개발 경험에서 차이가 있다. 이 두 가지를 디테일하게 비교하여 설명하면 아래와 같다. AssertJAssertJ는 플루언트 API 스타일과 체이닝 방식으로 구성된 검증 라이브러리로, 테스트 코드의 가독성을 높이고, 복잡한 데이터 타입 검증을 쉽게 처리할 수 있도록 설계되었다. 1-1. 주요 특징플루언트 인터페이스: 메서드를 체이닝으로 연결하여 가독성이 높다. 테스트 코드의 의도를 자연스럽게 드러낼 수 있어 읽기 쉽다.데이터 타입 지원: 기본 데이터 타입뿐만 아니라 리스트, 맵, 배열, 날짜, 예외 등 다양한 데이터 타입을 위한 검증 메서드를 ..

Java 2025.01.10