본문 바로가기

Web Development/Application4

[Java / SpringBoot] Exception Class 설계 및 Exception Handler 적용해보기 0. 들어가며 이번 포스팅에서는 최근 경험했던 Spring Boot 에서의 Exception Class 설계와 Exception handling 에 대해 다뤄보고자 합니다. 처음에 Exception Class 를 만들어야 한다는 요구사항을 받았을 때 단순히 개발이 어렵기보다는 어떤 식으로 설계해야 좋은 어플리케이션이 될 수 있을지 고민을 많이 했었는데요, 그 문제해결의 과정을 공유드리도록 하겠습니다. 1. Exception Class 를 사용하는 이유 1-1. 표준 예외를 사용하라 Exception Class 를 정의해야 한다는 이야기를 듣고 가장 먼저 찾아본 자료는 Effective Java 였습니다. 사전에 정의되어 있는 예외를 사용하는 것이 아니라, 직접 예외 클래스를 정의해야하는 상황에서는 무엇을.. 2022. 12. 11.
[JPA / Hibernate] 복합키(Composite Key)를 갖는 객체(Entity) 간의 연관관계 매핑 보통의 JPA 예제에서는 단일 컬럼을 PK로 갖는 엔티티 간의 연관관계 매핑을 주로 다룹니다. 그러나 실제로 Legacy System을 JPA 기반의 어플리케이션으로 개발하다보면 기존의 데이터 모델이 복합키를 갖고, 식별관계로 매핑된 경우를 경우를 쉽게 볼 수 있습니다. 이번 글을 통해 이런 경우 어떻게 JPA를 활용할 수 있는지 다뤄보고자 합니다. 목차 기본적인 1:N 연관관계 매핑 @IdClass를 통한 복합키(Composite Key) 설정 DB에서 식별관계를 갖는 객체의 연관관계 매핑 요약 기본적인 1:N 연관관계 매핑 아래의 이미지는 이번 포스팅에서 예시를 들기 위해 설계한 1:N 관계의 엔티티 입니다. 회원을 의미하는 Member 와 회원별 주문내역을 다루는 MemberOrderHistory .. 2022. 12. 7.
[Spring] @SLF4J (Simple Logging Facade for Java) 란 무엇인가 사실 로깅은 개발자가 신경써야 할 매우 중요한 파트라고 생각해왔고, 그래서 이번 기회에 Spring Boot 어플리케이션의 로깅에 대한 내용을 한 번 정리해보고자 한다. 정리하기 전에 왜 수많은 자바 서적에서 다루는 java.util.logging 을 실제 웹 어플리케이션에서는 사용하지 않는지 의문이 생겼는데, Why not use java.util.logging? 을 보고 대략적인 이유를 알 수 있었다. @ SLF4J 를 사용했을 때 생기는 일 @Slf4j 는 Lombok에서 제공하는 어노테이션으로, Lombok의 다른 기능들과 마찬가지로 개발자로 하여금 SLF4J를 사용하기 위해 작성해야 하는 코드(Boilerplate code)를 생략할 수 있게끔 해준다. 실제로 어노테이션 내부를 살펴보면, @Sl.. 2022. 10. 10.
[JAVA] Atomic 변수와 동시성 제어 (AtomicInteger, AtomicLong, AtomicBoolean, AtomicReference) 얼마 전 코드에서 AtomicInteger 타입으로 선언된 변수를 발견했고, 관련 내용들을 찾아보게 되었다. 이번 글에서는 synchronized에 비해 적은 비용으로 동시성을 제어할 수 있는 Atomic 변수의 특성에 대해 알아보고자 한다. 목차 Atomic 변수란? Java에서 동시성을 제어하기 위한 세 가지 방법 Atomic 변수의 장점 : Compare-and-swap(CAS) Atomic 변수의 주요 메서드와 사용예시 Atomic 변수란? Atomic 변수는 멀티쓰레드 환경에서 동시성을 보장해준다. 흔하게 사용되는 Atomic 변수 클래스로는 AtomicInteger, AtomicLong, AtomicBoolean, AtomicReference 등이 있고, 이들은 atomic하게(동시성을 보장받.. 2022. 9. 19.
반응형