반응형 분류 전체보기145 [리팩토링] 코드 JPA Converter 회사에서 개발 중인 소스를 살펴보면서 리팩토링할 영역을 찾아보다가 JPA Converter를 활용하여서 변경할 포인트를 찾게 되어서 해당 내용을 공유하려고 합니다. 아래에서 공유하는 내용은 실제 회사에서 개발하는 내용은 아니며 재구성한 것입니다. 모든 소스는 GitHub를 통해서 확인하실 수 있습니다. - 링크 개발 환경 JDK 11 Spring Boot 2.6.4 IntelliJ IDEA 상황 사용자 도메인이 아래와 같이 존재합니다. 그 중 hobby 필드는 다음과 같이 Database에 저장됩니다. 기능 hobby 필드를 이용한 조회 기능은 다음과 같습니다. 취미를 입력 받는다. 입력 받은 취미로 해당 취미를 보유한 사용자를 조회한다. 사용자의 저장된 hobby 필드 중에 일치하는 취미가 하나라도 있.. 2022. 3. 5. [Spring] Injection 정리 [Spring] Injection 정리 Spring에서 제공하는 Injection 에 대해서 정리를 하고 추천하는 사용 방식에 대해서 말씀을 드리도록 하겠습니다. 아래에서 사용되는 소스는 모두 GitHub에서 확인할 수 있습니다. - 소스 Spirng에서 제공하는 Injection 은 여러가지 방법을 이용할 수 있습니다. 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 각각 하나씩 직접 생성해보면서 방법과 특징들에 대해서 정리를 해보도록 하겠습니다. 생성자 주입 이름과 동일하게 생성자를 통해서 의존관계를 주입합니다. 여기 서점을 관리하는 애플리케이션이 있다고 가정을 하고 소스를 살펴보도록 하겠습니다. Service의 소스를 보도록 하겠습니다. BookServiceImpl 은 Bo.. 2022. 2. 14. [Chaos Engineering] CM4SB 적용 내용 정리 Chaos Monkey for Spring Boot를 이용하여 사용하는 애플리케이션에 어떻게 적용하는지를 알아보도록 하겠습니다. 아래 소스는 모두 Github에사 확인할 수 있습니다. - 소스 설정 Spring Boot를 사용하고 있다면 쉽게 추가할 수 있습니다. 개발 환경 IDE : Intelij 2021.2.2 JDK : 1.8 Spring Boot : 2.5.8 Gradle 기존 사용하는 프로젝트안에 아래 2개의 라이브러리를 추가해주면 됩니다. dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'de.codecentric:chaos-monkey-spring-boo.. 2022. 2. 13. [Chaos Engineering] 개념 정리 최근에 회사에서 개발중인 시스템에서 아래와 같은 테스트 상황을 개발하게 되었습니다. 내용은 다음과 같습니다. 특정 사용자가 접속하여서 API를 호출하면 응답 지연을 할 수 있어야 한다. 해당 내용을 듣자 바로 AOP가 생각나서 그렇게 개발을 하였습니다. 그러다 Chaos Engineering이라는 내용을 알게 되었습니다. 그래서 기록하기 위해서 정리를 하게 되었습니다. Chaos Engineering 운영 환경에서도 갑작스러운 장애를 견딜 수 있는 시스템을 구축하기 위해 시스템을 실험하는 분야입니다. 시스템의 약점 서비스가 이용 불가능할때의 부적절한 대응 잘못 설정된 타임아웃 값으로 인한 지나친 재시도 뒷단의 시스템이 대규모 트래픽을 견디지 못해 발생한 장애 한 지점의 장애로 인해 연달아 발생하는 장애 .. 2022. 2. 13. [JPA] 상속 전략 정리 JPA에서 상속 관계 전략을 세우는 방법 정리 자바에서 상속의 대해서는 많이 접해보았지만 최근 JPA를 통해서 상속에 대해서 어떻게 대응을 해야되는지 공부를 하다가 관련 내용을 정리하려고 합니다. 자바 ORM 표준 JPA 프로그래밍에서는 다음과 같이 설명을 하고 있습니다. 관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없다. 대신에 슈퍼타입과 서브타입 관계라는 모델링 기법이 객체의 상속 개념과 가장 유사하다. ORM에서 이야기하는 상속 관계 매핑은 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것이다. 그렇다면 객체의 상속 관계 매핑을 위해서 어떻게 해야 할까요? 슈퍼타입 서브타입 논리 모델을 실제 물리 모델인 테이블로 구현하기 위해서는 3가지 방법을 선택할 수 .. 2022. 2. 6. [JPA] @Enumerated 사용법 자바의 enum 타입을 엔티티 클래스의 속성으로 사용할 수 있습니다. 예를 들어, 실무에서 사용하였을때 주문의 상태를 임시저장, 진행중, 완료, 취소 등으로 주문의 상태의 따라서 분리할 수 있습니다. 그래서 각 주문의 상태를 enum으로 생성을 하였고 해당 enum 타입을 엔티티 클래스의 속성으로 설정할 수 있습니다. 사용법과 주의할점에 대해서 알아보도록 하겠습니다. 해당 내용을 정리하기 위해서 사용한 소스는 Github에서 확인하실 수 있습니다. - 소스 종류 @Enumerated는 enum의 값을 Database의 저장하는 방법을 2가지 제공합니다. 아래는 클래스 파일의 내용입니다. public enum EnumType { /** Persist enumerated type property or fie.. 2022. 2. 4. 이전 1 ··· 12 13 14 15 16 17 18 ··· 25 다음 반응형