Spring Boot(14)
-
Spring Boot: JPA 적용기 - entity 구현
#0. 개요기존 mybatis 로 되어있는 코드를 JPA 로 점진적 변환간단한 CRUD 등 코드에 너무 많은 시간 소요하지 않기 위함.JDBC (Java Database Connectivity)DB에 접근하기 위한 자바 표준 인터페이스복잡함. 예외처리, connection 사용 후 반환을 개발자가 직접해야함SQL mapper, ORM 은 위 과정들을 추상화시켜 제공하는 방식.SQL mapper객체와 SQL 문 질의 결과를 매핑.SQL 문을 직접 작성ORM객체와 RDB 데이터 매핑JPAORM 기술에 대한 표준 API장점개발자의 SQL 중심 개발 → 객체 중심 개발JPQL (java persistence query language)테이블이 아닌 객체를 통해 쿼리 작성hibernateJPA의 구현체JPA 자체..
2024.09.24 -
Spring Boot: mongoDB → PostgreSQL 마이그레이션: Conversing 이슈 해결
#1. 개요영업보고 기능을 Java Spring Boot - PostgreSQL 환경에서 구현 완료함.기존 내부적으로 서비스하던 Node / MongoDB 환경에서 구현 된 영업보고 기능 내의 데이터를 PostgreSQL 환경으로 마이그레이션을 진행해야함.데이터가 너무 많아서, API 서버 상에서 데이터가 담긴 mongoDB 를 연결하여 PostgreSQL 로 로직을 통해 마이그레이션을 구현함.그 과정 속에서 Conversion 이슈가 아래와 같이 발생했고, 해결함.#2. 문제 및 해결Exception : org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:47)Conversion 이슈mo..
2024.09.24 -
99클럽 8일차 TIL: SpringBoot - Profile
#1. 오늘의 학습 키워드자바스프링부트에서 같은 소스 코드로 여러 다른 환경에서 실행시키려 할 때, 각 환경에 맞게 환경변수를 주입하고 싶으면 어떻게 해야할까? - ProfileLoki 서버로 API 호출하는 Util 클래스를 만들고 배포하였을 때, Profile 과 연관 된 오류가 있었다.Bean 등록과 @Profile 어노테이션 관련된 오류였다.컴파일 타임 및 기본 환경에서는 검출이 안 된 오류.해당 오류와 해결 과정은 따로 상세히 다뤄보겠다.과정에서 Profile 과 관련된 오류인 것을 깨닫고 다시 Profile에 대한 공부를 하였고, 다른 Profile로 로컬에서 실행을 해보았다.#2. 공부한 내용Profile환경에 따라 개발자가 의도한 설정파일을 소스코드가 바라보도록 도와주는 것이 Profile..
2024.04.11 -
99클럽 2일차 TIL: Spring Boot 에러 핸들링
#1. 오늘의 학습 키워드자바스프링부트에서 커스텀 된 에러 메시지를 controller 로 보내고 싶을 때 방법api 호출 → controller → service로 이어질 때, 일반적인 exception 이 아닌, 사용자 request 의 논리적 오류를 핸들하고 싶을 때:이런 상황에서의 Exception은 RuntimeException 을 상속한 커스텀 Exception 클래스인 ApiException으로 던져진다.실질적인 오류가 아닌 논리 오류로 validation fail에 해당하기 때문에 이렇게 처리를 하였다.프론트엔드 단과 합의된 반환 코드(사용자의 입력값 오류 (클라이언트 error 4xx))와, 커스텀된 메시지로 오류를 throw 한다.public int method(Boolean isErr..
2024.04.05 -
Java Spring - 공부 여정
HTML 삽입 미리보기할 수 없는 소스 #1. 스프링 / 스프링 부트란 스프링 자바 기반 웹 앱 프레임워크 스프링 구조 spring은 자바 객체와 라이브러리들을 관리해주며, 톰켓과 같은 WAS 가 내장되어 있어 자바 웹 앱을 구동할 수 있음 경량 컨테이너 (bean) 로 자바 객체를 spring 안에서 관리. 객체의 생성 및 소멸과 같은 생명 주기를 관리하며, spring 컨테이너에서 필요한 객체를 가져와 사용. spring의 특징 IOC / DI IOC - 제어의 역전 DI - 의존성 주입 어떤 객체를 사용하는 주체가 객체를 직접 생성하는 게 아니라 객체를 spring에서 생성해서 사용하려는 주체 객체에 주입시켜주는 방식. 직접 생성하는 것보다 외부에서 생성 관리하는 이 방식이 주체 객체와 대상 객체의..
2024.03.16 -
스웨거(Swagger) - @ExampleObject value 속 긴 String 분리 과정 정리
HTML 삽입 미리보기할 수 없는 소스 #0. 개요 controller에서 put / post method API 를 swagger 에 작성할 때, 스키마 뿐만 아니라, ExampleObject 코드로도 request body 가 어떤 모양이어야 하는 지 프론트엔드에게 설명을 해주고 싶다. 원할한 프론트 - 백 소통을 위해 그러나, controller의 코드가 swagger example value 문자열 때문에 너무 길어져서 백엔드 코드 가독성이 떨어졌다 심지어 exampleObject가 controller 마다 여러개 일 수도 있고, request Body Dto Class가 property 가 많으면 종잡을 수가 없다. @PostMapping("/item") @Operation(description..
2024.03.15