현대화 프로젝트를 진행하면서 기존에 사용하던 MyBatis 기반의 시스템을 JPA 기반으로 전환하게 되었다. 이 과정에서 가장 먼저 발생한 문제는 Entity 클래스의 대량 생성이다.기존 시스템은 테이블 정보가 Dataware에 잘 명시되어 있었지만, 이를 기반으로 매번 수작업으로 Java Entity 클래스를 생성하는 것은 비효율적이라고 생각했다. 수천 개에 이르는 테이블 정보를 일일이 열람하고, 이에 맞는 Java 클래스를 작성한다는 것은 단순 반복 작업일 뿐만 아니라 많은 비용이 소모된다고 생각했다. 게다가 Oracle의 데이터 타입과 Java의 데이터 타입 간 매핑 기준이 명확하지 않아, 매번 다음과 같은 고민이 뒤따랐다.Number(10)은 Integer로 두는게 맞을까? Long 로 두는게 맞..
회사의 업무에 도움이 되고자 데이터 마이그레이션 프로그램을 구현하면서 다중 데이터소스 구성을 적용했다.MySQL과 PostgreSQL 등 서로 다른 DB 간의 데이터를 이전해야 했기 때문에, 각 데이터소스에 대한 분리 설정이 필요했고, 이를 위해 Spring Boot 환경에서 @Configuration 기반의 다중 데이터소스 구성을 적용했다.그런데 단순히 쿼리를 날려 직접 DB에 접근할 때는 문제가 없었지만, Controller를 통해 데이터를 요청할 때는 응답 속도가 눈에 띄게 느려지는 현상이 발생했다.처음에는 단순히 데이터양이나 네트워크 지연 문제일 수 있겠다고 생각했지만, 실제 디버깅을 진행하면서 Datasource 설정 자체에서 매 요청마다 커넥션 비용이 크게 발생하는 것을 발견하게 되었다. 이 ..
🌱 스프링이란? 🌱 엔터프라이즈용 Java 애플리케이션 개발을 편하게 할 수 있게 해주는 오픈소스 경량급 애플리케이션 프레임워크 정확한 표현으로는 '스프링 프레임워크(Spring Framwork)' 스프링 프레임워크(Spring Framwork)는 자바에서 가장 많이 사용되는 프레임워크 이다. 의존성 주입(DI, Dependency Injection)과 제어역전(IOC, Inversion Of Control), 관점 지향 프로그래밍(AOP)이 가장 중요한 요소라고 말할 수 있다. 위 요소들을 통해 느슨한 결합을 달성할 수 있으며 개발한 어플리케이션은 단위 테스트를 수행하기 용이하다. 👉 제어역전 (IOC, Inversion Of Control) 👈 우리가 프레임워크 없이 개발할 때에는 객체의 생성, 설정..
스프링부트 프로젝트를 설정하다보면 application.properties 또는 application.yml 혹은 둘 다 만날때가 있다. 이 둘의 외부 속성을 설정하는 파일입니다. application.properties -Key - Value 형식을 사용하여 외부 구성의 속성을 설정 application.yml -YAML기반으로 외부 구성의 속성을 설정할 수 있다. -반복되는 접두사가 없어 가독성이 좋다. #결론 application.yml이 계층적으로 잘 표현할 수 있어 편리하다.