[MyBatis] 동적 SQL

Featured image for [MyBatis] 동적 SQL

MyBatis 3 | Dynamic SQL – mybatis 1. 동적 SQL JDBC에서 동적으로 쿼리문을 만드는 것은 꽤나 고통스럽다. 공백 문자와 콤마 하나도 신경 써야 한다. MyBatis를 사용하면 고통을 줄일 수 있다. MyBatis의 Dynamic SQL은 JSTL과 그 사용법이 비슷하다. 아래 예시는 MySQL을 기준으로 한다. 2. if 조건을 충족하면 동적으로 AND title like #{title}를 추가한다. 3. choose, when, … 더 읽기

[MyBatis] MyBatis란?

Featured image for [MyBatis] MyBatis란?

  0. pdf 읽고 정리하기. 1. ORM이란? 2. MyBatis란? Java Object와 SQL문 사이를 자동으로 Mapping하는 ORM framework. SQL을 별도의 파일로 분리해서 관리하다. SQL에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일하지 않아도 된다. SQL을 전담하는 DBA와 협업이 원활하다. 새로운 DB 프로그래밍 패러다임에 대한 부담 없이, 익숙한 SQL을 그대로 이용하면서 JDBC 코드 작성의 불편함을 줄일 수 있다. … 더 읽기

[Spring] Connection Pool

Featured image for [Spring] Connection Pool

1. Connecion Pool이란? Connection Pool은 데이터베이스와의 Connection을 미리 생성하고, 이를 Pool에서 관리하는 기술이다. 데이터베이스로의 추가 요청이 필요할 때 연결을 재사용할 수 있도록 관리되는 데이터베이스 연결의 캐시이다. Connection Pool이 시작될 때 특정한 수의 물리적 커넥션을 만들며 이는 애플리케이션 실행 중에 커넥션 생성, 해제하는 오버헤드(Overhead)를 줄여준다. 또한, 동시에 많은 요청이 들어와도 안정적으로 처리할 수 있게 해준다. 2. … 더 읽기

[Spring] File Upload & Download

Featured image for [Spring] File Upload & Download

  0. 기존 포스팅 추가한 이유: 1. File Upload 가. pom.xml 나. servlet-context.xml id는 반드시 multipartResolver로 등록한다. 다. web.xml servlet이 Multipart를 처리하도록 설정. 설정 설명  <max-file-size> 업로드 하는 파일의 업로드 가능한 최대 파일 사이즈. 바이트 단위. -1로 설정 시 크기 제한 없음(default)  <max-request-size> 한번의 요청에 포함된 전체 Multipart 요청 데이터의 최대 크기. 바이트 단위. -1로 … 더 읽기

[Spring] ControllerAdvice

Featured image for [Spring] ControllerAdvice

1. ControllerAdvice 예외 발생 시 매번 try-catch를 해도 되지만 귀찮다. @ControllerAdvice은 비즈니스 로직과 예외 처리를 완전히 분리시켜줌과 동시에 원하는 곳에 원하는 방식으로 예외를 처리할 수 있게 해 준다. spring 6.1 버전부터는 throwExceptionIfNoHandlerFound의 default 값은 true라서 별도로 설정하지 않아도 된다. 이제는 모든 예외를 한 곳에서 처리할 수 있다! – 2024.07.24 추가 RestController + ControllerAdvice = RestControllerAdvice … 더 읽기

[Spring] Java Config

Featured image for [Spring] Java Config

1. Spring 설정 파일을 작성하는 방법 Spring 설정 파일을 작성하는 방법은 크게 두 가지다. XML을 사용하는 방법과 Java Config를 사용하는 방법이다. 방법 설명 장점 단점 XML XML 파일 안에 bean 객체를 정의하고 의존성 설정 시각적으로 객체 관계 이해 용이 XML 문법 필요, 타이핑 오류 가능 Java Config 설정을 Java 클래스로 작성 타입 안전성, IDE 지원으로 … 더 읽기

[Spring] AOP

Featured image for [Spring] AOP

1. AOP 기존 OOP에서는 핵심 로직을 여러 모듈에서 적용하는 데 있어 중복되는 코드가 발생한다. 핵심 관심(core concern)과 공통 관심 사항(cross-cutting concern)으로 나눠보고 그 관점을 기준으로 각각 모듈화 하겠다. 이때 여러곳에서 쓰이는 공통 관심 사항을 모듈화한 것을 Aspect라고 한다. 핵심 기능에서 부가 기능을 분리함으로써 핵심기능을 설계하고 구현할 때 객체지향적인 가치를 지킬 수 있도록 도와주는 개념. 가. … 더 읽기

[Spring] Interceptor

Featured image for [Spring] Interceptor

1. Interceptor란? Filter와 AOP와 유사하지만 다르다. 이들과 다르게 Login Session 검증, Header 검증, JWT Token 검증 등 웹과 관련된 기능을 담당한다.   Filter Interceptor AOP 구현 Jakarta.servlet.Filter org.springframework.web.servlet.HandlerInterceptor   관리 컨테이너 Servlet Container Spring Container Spring Container (Root) 적용 위치 web.xml servlet-context.xml execution으로 설정된 공통 코드 메서드 적용 대상 설정 url url execution에서 설정된 메서드(인자), … 더 읽기

[Spring] Filter

Featured image for [Spring] Filter

1. Filter란? 필터는 스프링의 독자적인 기능이 아닌 자바 서블릿에서 제공합니다. 공통적인 기능들을 서블릿이 호출되기 전후로 수행(전처리)되게 하고 싶다면 Filter를 사용하면 된다. 불필요하게 Controller까지 안 가도 된다. Spring은 Filter보단 Interceptor를 사용하길 권하는 것 같다. 인증, 인코딩, 로깅, 이미지 변환 등과 같은 작업을 수행할 때 많이 사용한다.   Filter Interceptor AOP 구현 Jakarta.servlet.Filter org.springframework.web.servlet.HandlerInterceptor   관리 컨테이너 … 더 읽기

[Spring] Spring Web Application의 동작 원리

Featured image for [Spring] Spring Web Application의 동작 원리

이 글에서는 예전에 포스팅한 “[Spring] 클라이언트의 요청이 처리되는 과정”에서 다룬 Spring 프로젝트가 초기화되는 과정을 보다 깊이 알아보았다. 1. 3 layered architecture https://www.ibm.com/kr-ko/topics/three-tier-architecture 애플리케이션을 3개의 논리적 및 물리적 컴퓨팅 계층으로 분리하는 3 계층 아키텍처는 기존의 클라이언트 서버 애플리케이션을 위한 주요 소프트웨어 아키텍처다. 기능의 논리적 및 물리적 분리가 가능하다. 3계층 아키텍처는 애플리케이션을 3개의 논리적이고 물리적인 컴퓨팅 계층으로 … 더 읽기