반응형

프레임워크(Framework) 99

[Mybatis] 마이바티스 <![CDATA[]]> 사용

CDATA CDATA는 XML에서 사용되며, 문자 데이터(Character DATA)를 의미한다. XML 파일에서 사용되는 마크업 문법으로부터 영향을 받지 않게 하기 위해 사용한다. 파싱하는 문자 : PCDATA 파싱하지 않는 문자 : CDATA [] 안에 문자를 삽입하여 문자열 그대로 인식하도록 할 수 있다. CDATA를 사용하는 이유 마이바티스에서 사용되는 Mapper는 XML로 작성되어 있어 문자가 XML 표준으로 파싱된다. Mapper에는 SQL 쿼리문이 작성될 것이고, 해당 쿼리에는 , = 등의 기호를 많이 사용하게 된다. 이때 사용된 기호들이 파싱 중에 xml 태그로 인식되는 등의 문제가 발생할 수 있다. 이러한 문제를 방지하기 위해 CDATA를 사용한다. CDATA 사용 SELECT * FR..

[Spring Batch] 스프링 배치란 무엇인가? - 개념, 아키텍처, 구성요소

본 내용은 온라인 강의 사이트 인프런의 정수원 님의 강의 내용이 포함되어 있습니다. 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch - 인프런 | 강의 초급에서 중~고급에 이르기까지 스프링 배치의 기본 개념부터 API 사용법과 내부 아키텍처 구조를 심도있게 다룹니다. 그리고 스프링 배치 각 기능의 흐름과 원리를 학습하게 되고 이를 바탕으 www.inflearn.com 일괄 처리(또는 배치 처리, Batch processing) Batch Processing(일괄 처리)은 데이터를 실시간으로 처리하는 것이 아닌 일괄적으로 처리하는 작업(Job)을 의미한다. 초기의 Batch Processing은 사..

[JPA] 엔티티(Entity) 기본 생성자 사용 이유 - Reflection API

Intro JPA에서 엔티티는 반드시 public 또는 protected인 기본 생성자를 가져야 한다. 이 것이 가능한 이유는 자바에서 제공하는 리플렉션 API(reflection API)를 활용하여 동적으로 객체를 생성하기 때문이다. 만약, 기본 생성자가 없거나, private인 경우 리플랙션 API는 객체를 생성할 수 없게 된다. Java Reflection API Java Reflection API는 구체적인 클래스 타입을 알지 못하더라도 해당 클래스 이름을 통해 메서드, 타입, 변수 등에 접근할 수 있도록 해주는 API이다. Reflection을 활용하여 런타임 시점에 동적으로 클래스 객체를 생성할 수 있다. 일반적으로 객체에 데이터를 넣기 위해서는 new 생성자 또는 setter 등이 필요하며,..

[JPA] QueryDSL과 JPQL 비교

본 내용은 온라인 강의 사이트 인프런의 김영한 님의 강의 내용이 포함되어 있습니다. '실전! Querydsl' 실전! Querydsl - 인프런 | 강의 Querydsl의 기초부터 실무 활용까지, 한번에 해결해보세요!, - 강의 소개 | 인프런... www.inflearn.com 엔티티 준비 기초적인 실습을 위한 Member 엔티티와 Team 엔티티를 준비한다. Member와 Team은 양방향 연관관계 연관관계의 주인은 Member로 Team의 외래키를 가지고 있다. Member @Entity @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) @ToString(of = {"id", "username", "age"}) public cla..

[JPA] QueryDSL build.gradle 환경 설정

스프링 부트 프로젝트 생성 Spring initialzr에서 프로젝트를 생성한다. Spring Web, JPA, H2 Database 등 필요한 의존 라이브러리 설정이 필요하다. Spring Boot 2.6 ~ 2.7과 3.0은 build.gradle 설정 방법이 다르다. QueryDSL 설정 스프링 부트 2.6 ~ 2.7에서 build.gradle 설정 // (1) queryDSL 추가 buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'java' id 'org.springframework.boot' version '2.7.7' id 'io.spring.dependency-management' version '1.0.15.RELEASE' /..

[JPA] QueryDSL 소개 및 장점

QueryDSL이란? QueryDSL은 하이버네이트 쿼리 언어(HQL: Hibernate Query Language)의 쿼리를 타입에 안전하게 생성 및 관리해주는 프레임워크이다. QueryDSL은 정적 타입을 이용하여 SQL과 같은 쿼리를 생성할 수 있게 해 준다. 자바 백엔드 기술은 Spring Boot와 Spring Data JPA를 함께 사용한다. 하지만, 복잡한 쿼리, 동적 쿼리를 구현하는 데 있어 한계가 있다. 이러한 문제점을 해결할 수 있는 것이 QueryDSL이다. QueryDSL이 등장하기 이전에는 Mybatis, JPQL, Criteria 등 문자열 형태로 쿼리문을 작성하여 컴파일 시에 오류를 발견하는 것이 불가능했다. 하지만, QueryDSL은 자바 코드로 SQL 문을 작성할 수 있어 ..

[Spring Security] 스프링 시큐리티 권한 부여 처리 흐름

스프링 시큐리티의 권한 부여 처리 흐름 애플리케이션 서비스에서 사용자 인증에 성공한 이후에는 인가(권한 부여)가 필요하다. 스프링 시큐리티의 필터 체인을 통해 사용자 인증에 성공한 다음에는 애플리케이션에서 제공하는 리소스에 접근할 수 있도록 권한 부여 작업을 위한 필터 체인을 통과해야 한다. 다음은 사용자 인증이 정상적으로 처리된 이후 리소스에 대한 접근 권한을 부여하는 흐름에 대한 이미지이다. 스프링 시큐리티 필터 체인에서 AuthorizationFilter는 URL을 통해 인증된 사용자의 권한 부여하는 필터이다. (1) AuthorizationFilter는 SecurityContextHolder로부터 Authentication 객체를 획득한다. (2) HttpServletRequest와 획득한 Aut..

[Spring Security] 스프링 시큐리티 인증 처리 흐름

스프링 시큐리티의 인증 처리 흐름 스프링 시큐리티에서는 스프링 시큐리티 필터 체인을 통해 보안을 위한 특정 작업을 처리한다. 다음은 사용자가 로그인 인증을 위한 요청을 할 경우, 스프링 시큐리티에서 해당 인증 요청을 어떻게 처리하는지에 대한 핵심 컴포넌트들의 인증 처리 흐름이다. 1. 사용자가 로그인을 하기 위해 아이디와 패스워드를 포함한 요청(request)을 보낸다. 사용자 로그인 요청이 들어오면 UsernamePasswordAuthenticationFilter가 해당 요청을 전달받는다. 2. UsernamePasswordAuthenticationFilter는 전달받은 Username과 Password를 이용하여 UsernamePasswordAuthenticationToken을 생성한다. Userna..

[Spring Security] 스프링 시큐리티 DelegatingPasswordEncoder - 암호화 알고리즘 변경하기

DelegatingPasswordEncoder DelegatingPasswordEncoder는 스프링 시큐리티에서 지원하는 PasswordEncoder 인터페이스의 구현 객체를 생성해주는 컴포넌트이다. DelegatingPasswordEncoder를 통해 애플리케이션에서 사용할 PasswordEncoder를 결정하고, 사용자가 입력한 패스워드를 단방향으로 암호화한다. DelegatingPasswordEncoder는 스프링 시큐리티 5.0부터 등장했으며, 이전 버전에서는 평문 텍스트(Plain text) 패스워드를 그대로 사용하는 NoOpPasswordEncoder가 PasswordEncoder의 default로 고정되어 있었다. 하지만, NoOpPasswordEncoder를 사용하면서 발생하는 문제를 해..

[Spring Security] 필터와 필터 체인(Filter Chain) 구현하기

필터(Filter) 서블릿 필터(Servlet Filter)는 서블릿 기반 애플리케이션의 엔드포인트에 요청이 도달하기 전에 해당 요청을 가로채어 특정 처리를 할 수 있도록 해주는 Java 컴포넌트이다. 위 이미지는 서블릿 기반 애플리케이션에서 서플릿 필터의 위치를 나타내고 있다. 클라이언트가 요청을 전송하면 서블릿 필터에서 특정 처리를 한다. 필터에서 모든 처리가 완료된 이후 DispatcherServlet에서 핸들러 매핑 작업을 진행한다. 필터 체인(Filter Chain) 필터 체인은 여러 개의 필터가 체인처럼 엮인 것을 말한다. 모든 요청(request)이 필터 체인을 거친 후에 서블릿 서비스에 도달할 수 있도록 한다. 필터와 필터 체인의 특성 서블릿 필터 체인은 요청 URI path를 기반으로 H..

반응형