1. 🔍 DB 3개를 사용하는 프로젝트에서 발생한 문제와 해결 방법이번 프로젝트에서는 3개의 데이터베이스(DB)를 사용하면서 몇 가지 문제가 발생했습니다. 그중 하나는 내부 DB와 외부 DB에서 서로 다른 설정을 사용하는 부분에서 생긴 문제였습니다.🔹 프로젝트 구조프로젝트는 총 3개의 포털로 이루어져 있으며, 각 포털마다 3개의 DB를 사용합니다.서비스는 하나의 공통된 로직을 사용하며, 각 포털의 controller를 통해 필요한 서비스를 호출하는 방식으로 이루어집니다.🔹 DB 연결 방식각 DB를 연결하기 위해, Mapper 설정 시 3가지의 커스텀 어노테이션을 사용하여 각 포털에 맞는 DB 연결을 설정했습니다. 구체적으로는 아래와 같은 방식으로 @MapperScan을 사용해 각 포털에 맞는 map..
Java
Spring Boot를 사용하면서 파일 다운로드는 많이 구현해 봤지만 zip으로 압축 후 다운받는 프로세스는 구현은 해보지 않아 이번에 정리해 보려고 한다. 개발환경 JDK 11Spring Boot 2.6.7 CommonController.java- CrossOrigin는 현재 view를 nuxt.js로 개발하고 있어 CORS문제가 발생하기 때문에 테스트 환경에서 예외처리해주기위서 사용한 어노테이션이다.- 2개의 메서드가 있는데 fileDownload는 단일 파일 다운로드에 대한 기능이고 zipFileDownload는 다중 파일을 zip으로 압축 후 다운받는 기능이다. @CrossOrigin(origins = "http://127.0.0.1:3000") // 추가 @RestController public..
JAVA Generic(제네릭)에대해 알아보던 중 Generic에 넣을 수 있는 타입과 그렇지 못한 타입이 있다는것을 알게되어 정리를 해보려고 한다. Generic에대해 궁금하다면 아래의 링크 클릭 Primative Type는 말 그대로 자바에서 기본으로 제공해 주고있는 타입이다. 기본형 타입(Primitive type) 총 8가지의 기본형 타입(Primitive type)을 미리 정의하여 제공한다. 기본값이 있기 때문에 Null이 존재하지 않는다. 만약 기본형 타입에 Null을 넣고 싶다면 래퍼 클래스를 활용한다. 실제 값을 저장하는 공간으로 스택(Stack)메모리에 저장된다. 만약 컴파일 시점에 담을 수 있는 크기를 벗어나면 에러를 발생시키는 컴파일 에러가 발생한다. 주로 문법상의 에러가 많다. 예를..
1. 🌐 스프링에서 비동기 처리와 @RequestBody, @ResponseBody 사용 이유이번 포스팅에서는 스프링에서 비동기 처리를 어떻게 하는지, 그리고 @RequestBody와 @ResponseBody를 사용하는 이유에 대해 알아보겠습니다.🔹 클라이언트와 서버의 비동기 통신 처리웹에서 이루어지는 데이터 통신은 클라이언트(Client)와 서버(Server) 간에서 이루어집니다. 예를 들어, 로그인 버튼을 누르면 입력한 아이디와 비밀번호가 서버로 넘어가 요청(Request)을 하게 됩니다. 서버는 이를 판단해 로그인 여부를 결정한 후 클라이언트에 응답(Response)을 보내죠.🔹 요청(Request)과 응답(Response)의 중요성클라이언트가 서버로 보내는 메시지를 요청 메시지라고 하며, 서..
DTO란?DTO(Data Transfer Object) 는 계층간 데이터 교환을 위한 자바빈즈를 의미합니다. 여기서 말하는 계층간의 의미는 Controller, View, Business Layer, Persistent Layer 등을 말하며 각 계층간 데이터 교환을 위한 객체를 의미한다. DTO는 로직을 가지지 않는 순수한 데이터 객체이고 getter, setter 메소드만 가진 클래스를 의미한다. VO란?VO(Value Object) 는 DTO와 혼용해서 쓰이긴 하지만 미묘한 차이가 있다. VO는 값 오브젝트로써 값을 위해 쓰인다. 자바는 값 타입을 표현하기 위해 불변 클래스를 만들어서 사용하는데, 불변이라는 것은 readOnly 특징을 가진다.이러한 클래스는 중간에 값을 바꿀 수 없고 새로 만들어..
Mapper란?Mybatis 매핑XML에 기재된 SQL을 호출하기 위한 인터페이스이다. Mybatis3.0부터 생겼다. DAO란?Data Access Object의 약어로 실질적으로 DB에 접근하여 데이터를 조회하거나 조작하는 기능을 전담하는 객체를 말한다. DAO의 사용 이유는 효율적인 커넥션 관리와 보안성 때문이다. DAO는 저수준의 Logic과 고급 비즈니스 Logic을 분리하고 domain logic으로부터 DB관련 mechanism을 숨기기 위해 사용한다. Mapper vs DAODAO를 사용하는 방법SqlSession을 등록해줘야 한다.DAO인터페이스와 인터페이스를 구현한 DAO클래스를 생성해줘야한다.Mapper인터페이스를 사용하지 않았을 때는 네임스페이스 + “.” + SQL ID로 지정해서..