728x90
728x90

SpringBoot 를 배워보자 71

Nuxt.js와 Spring Boot로 Oracle 저장 프로시저 소스 및 파라미터 조회하기

Nuxt.js 프론트엔드와 Spring Boot 백엔드를 사용해 Oracle DB에서 특정 저장 프로시저의 소스 코드를 조회하고 화면에 표시하는 방법을 소개합니다. Spring Boot에서 저장 프로시저 소스 조회 API를 확장해서, 소스 코드와 함께 저장 프로시저의 파라미터 정보도 함께 반환하도록 수정하겠습니다. Oracle DB에서 파라미터 정보는 USER_ARGUMENTS 또는 ALL_ARGUMENTS 뷰를 통해 조회할 수 있습니다. 아래는 이를 반영한 코드입니다.  Spring Boot: 저장 프로시저 소스 + 파라미터 정보 조회1. 프로젝트 설정 (pom.xml)(이전과 동일, 변경 없음)xml  org.springframework.boot spring-boot-..

MyBatis의 mapUnderscoreToCamelCase 설정을 false로 변경하고 수동 매핑하는 방법

mapUnderscoreToCamelCase 설정을 false로 변경한 예제를 만들어보겠습니다. 이 예제에서는 MyBatis가 데이터베이스 컬럼명을 카멜 케이스로 자동 변환하지 않도록 설정하고, 수동으로 매핑하는 방법을 보여드리겠습니다.1. 환경 설정A. mybatis-config.xml 설정 B. Spring Boot에서 application.properties 설정mybatis.configuration.map-underscore-to-camel-case=false2. 데이터베이스 테이블 및 샘플 데이터예제를 위해 다음과 같은 users 테이블을 가정합니다.CREATE TABLE users ( user_id INT PRIMARY KEY, user_name VARCH..

스프링과 MyBatis를 활용한 데이터베이스 프로시저 개발 가이드: 효율적인 설계와 유지보수를 위한 종합적인 안내

스프링과 MyBatis에서 모든 데이터베이스 쿼리를 프로시져로 할때 주의 점스프링(Spring)과 MyBatis를 사용해 데이터베이스와 연동하고, 모든 데이터베이스 쿼리를 프로시저(Stored Procedure)로 처리하려는 경우, 효율적인 개발과 유지보수를 위해 신경 써야 할 몇 가지 중요한 사항이 있습니다. 이와 함께 예제를 통해 더 구체적으로 설명하겠습니다.프로시저 사용 시 주요 고려 사항1. 프로시저 설계명확한 목적 정의: 각 프로시저가 명확한 단일 책임을 가지도록 설계합니다. 프로시저가 한 가지 이상을 처리하려 하면 복잡도가 증가하고 유지보수도 어려워질 수 있습니다.예: get_user_info (사용자의 정보를 조회)와 update_user_status (사용자의 상태를 업데이트)를 별도의 프..

두 테이블에 공통된 대조 필드가 있을 때, 사용자가 원하는 필드들만 출력되도록 동적 쿼리를 작성

MyBatis에서 동적으로 조인하는 예제를 작성하려면, 조건에 따라 두 테이블 a와 b를 조인하는 방식입니다. 각 테이블에서 어떤 출력 필드를 포함할지 동적으로 결정하도록 설정할 수 있습니다.여기서는 두 테이블에 공통된 대조 필드가 있을 때, 사용자가 원하는 필드들만 출력되도록 동적 쿼리를 작성합니다. 예를 들어, 테이블 a와 b에는 id라는 공통 대조 필드가 있고, 출력 필드는 각 테이블에서 특정 컬럼만 선택할 수 있습니다.1. SQL Mapper 파일 (XML) SELECT a.${field} b.${field} FROM a JOIN b ON..

쿼리의 페이징을 옵션에 따라 포함시키거나 제외하는 동적 SQL

오라클에서 쿼리의 페이징을 옵션에 따라 포함시키거나 제외하는 동적 SQL을 작성하는 예를 살펴보겠습니다. MyBatis에서는 태그를 사용하여 쿼리 내에서 페이징 여부를 조건에 따라 다르게 처리할 수 있습니다.예제: 페이징을 조건에 따라 포함하거나 제외하는 동적 쿼리이 예제에서는 pageNum과 pageSize라는 페이징 조건이 주어졌을 때, 페이징을 적용한 SQL과 페이징을 적용하지 않은 SQL을 동적으로 생성하는 방법을 설명합니다. 1. SQL Mapper 파일 (XML) SELECT * FROM users WHERE 1=1 AND name = #{name} AND age = #{age} -- 오라클..

오라클 환경에서 MyBatis를 사용하여 SQL을 기능적으로 쪼개어 동적으로 조합하는 예

MyBatis에서 SQL 문을 기능적으로 쪼개어 필요에 따라 조합하는 방법은 주로 동적 SQL을 활용하여 구현할 수 있습니다. MyBatis는 , , , , 등의 태그를 제공하여 조건에 맞는 SQL을 동적으로 생성할 수 있게 합니다. 이를 통해 SQL을 조합하거나 조건에 따라 쪼갠 후, 필요에 맞게 결합할 수 있습니다.아래는 오라클 환경에서 MyBatis를 사용하여 SQL을 기능적으로 쪼개어 동적으로 조합하는 예입니다.예제: 동적 검색 조건을 활용한 SQL 쪼개기1. SQL Mapper 파일 (XML) SELECT * FROM users WHERE 1=1 AND name = #{name} AND age = #{age} ..

Spring Boot 프로젝트에 Swagger UI 적용하여 API 문서 자동 생성하기: 상세 가이드

Spring Boot 프로젝트에서 RESTful API를 개발할 때, API 문서를 작성하는 것은 필수적인 작업입니다. 잘 정돈된 API 문서는 개발팀 간의 협업을 원활하게 하고, API를 사용하는 다른 개발자들에게 명확한 정보를 제공하여 개발 생산성을 향상시킵니다. Swagger UI는 이러한 API 문서를 자동으로 생성하고 시각적으로 제공하는 강력한 도구입니다. 이 글에서는 Spring Boot 프로젝트에 Swagger UI를 적용하는 방법과, 각 코드의 의미를 상세히 설명하며 실제 예제를 통해 이해를 돕겠습니다. 아래는 위 Swagger 주석과 API 구현을 Spring Boot로 변환한 예제입니다. Spring Boot에서는 주로 Springdoc OpenAPI를 사용하여 Swagger 문서를 생..

MyBatis를 활용한 유연하고 효율적인 동적 SQL(Json&Pageing) 전략

수백 개의 동적 SQL 조각을 효율적으로 관리하려면, 디렉토리 구조를 기능별로 구성하고, 공통 부분은 상위 디렉토리에 두는 방식이 적합합니다. 이를 MyBatis의 XML Mapper와 디렉토리 구조를 활용하여 설계하는 방안을 아래와 같이 제안드립니다. 2024.11.30 - [오라클 데이터베이스 강좌] - Oracle에서 JSON 형태로 데이터 생성하기 Oracle에서 JSON 형태로 데이터 생성하기Oracle은 JSON 처리를 위한 다양한 내장 함수와 기능을 제공합니다. 비슷한 결과를 얻으려면 JSON_OBJECT, JSON_ARRAYAGG, 그리고 ROWNUM, OVER() 같은 SQL 기능을 활용할 수 있습니다. Oracle에서는 아래와 같은notion4570.tistory.com 0. 디렉토리 ..

AspectJ Pointcut Expression Language

AspectJ Pointcut Expression Language는 AspectJ에서 사용되는 강력한 도구로, 특정 시점이나 조건을 기준으로 프로그램의 실행 흐름에 끼어들기 위한 규칙을 정의하는 데 사용됩니다. 이 표현식 언어는 AOP(Aspect-Oriented Programming)의 핵심 요소 중 하나로, 개발자가 코드의 특정 부분(예: 메서드 호출, 객체 초기화 등)을 선택적으로 가로채고 로직을 삽입할 수 있도록 합니다.주요 개념Join Point (조인 포인트)프로그램 실행 중의 특정 지점, 예를 들어 메서드 호출, 객체 생성, 예외 처리 등.AspectJ는 다양한 종류의 조인 포인트를 지원합니다.Pointcut (포인트컷)조인 포인트를 선택하는 규칙을 정의하는 표현식.포인트컷은 프로그램의 어떤..

스프링 부트 AOP(Aspect Oriented Programming) 심층 분석: 예제와 함께하는 상세 가이드

스프링 부트는 개발 생산성을 높여주는 강력한 프레임워크로, AOP(Aspect Oriented Programming)는 이러한 생산성을 더욱 향상시키는 중요한 기능 중 하나입니다. AOP는 객체 지향 프로그래밍(OOP)의 한계를 보완하여 공통 관심사(예: 로깅, 트랜잭션, 보안 등)를 핵심 관심사(비즈니스 로직)로부터 분리하여 모듈화하는 기법입니다.AOP의 핵심 개념관점(Aspect): 공통 관심사를 모듈화한 클래스입니다. 로깅, 트랜잭션, 보안 등의 기능을 담당합니다.조인 포인트(Join Point): 어드바이스가 적용될 수 있는 프로그램 실행 시점을 의미합니다. 메서드 호출, 예외 발생 등이 대표적인 조인 포인트입니다.포인트컷(Pointcut): 조인 포인트 중 어떤 조인 포인트에 어드바이스를 적용할..

728x90
728x90