배경 API의 권한 체크에 대한 기능을 구현하려고 하는 도중 공부한 내용을 포스팅했습니다. 보통 Interceptor, Filter, AOP 이 셋 중 하나를 사용하여 구현하더군요. 그래서 이 셋의 차이가 궁금해서 chatGPT에 물어봤습니다. 1. Interceptor (인터셉터) Spring Framework(프레임워크)에서 사용되며, 주로 컨트롤러 수준에서 동작합니다. 요청 처리 전, 후 또는 예외 발생 시에 실행되는 특별한 기능을 수행하는 객체입니다. 주로 로깅, 보안 검사, 트랜잭션 관리 등을 수행한다고 합니다. 2. Filter (필터) Java Servlet 스펙에서 제공하는 기능으로, 요청과 응답을 조작하는 데 사용됩니다. 웹 애플리케이션의 모든 요청과 응답에 대해 실행됩니다. 주로 요청 ..
QueryDsl이란? Querydsl은 JPA 기반의 데이터베이스 조회 및 조작을 위한 라이브러리입니다. 복잡한 쿼리(ex 동적 쿼리)를 더 쉬운 작성을 도와줍니다. CustomRepository CustomRepository 인터페이스는 Querydsl을 사용하여 데이터베이스 작업을 수행하는 데 도움을 주는 방법 중 하나입니다. @Repository interface MenuRepository: JpaRepository, CustomMenuRepository interface CustomMenuRepository { fun findByCafeId(cafeId: Long) } class CustomMenuRepositoryImpl: CustomMenuRepository { override fun find..
저는 querydsl을 실무에서 주로 사용하고 있습니다. 제대로 알고 사용하고 있는지 점검할 겸, JPQL과 QueryDsl의 차이점을 정리해보는 시간을 가졌습니다. 먼저, JPQL과 QueryDsl이 무엇인지 가볍게 알아보겠습니다. JPQL이란? JPQL(Java Persistence Query Language)은 엔티티 객체를 조회하는 객체 지향 쿼리 언어입니다. JPQL은 SQL과는 다르게 엔티티 객체를 대상으로 쿼리를 작성하며, 데이터베이스의 특정 열에 대한 쿼리는 지원하지 않습니다. JPQL은 엔티티 객체의 속성을 사용하여 쿼리를 작성하며, 결과는 엔티티 객체의 컬렉션으로 반환됩니다. JPQL은 JPA(Java Persistence API)의 일부이며, JPA 구현체에서 지원됩니다. QueryD..
영속성 컨텍스트란? 영속성 컨텍스트는 엔티티를 영구 저장하는 환경을 의미합니다. 엔티티에 대한 설명은 다음 포스팅을 참고해주세요. 엔티티의 정의와 생명주기(lifecycle) 엔티티의 정의 엔티티는 사전적 정의로 개체, 실재라는 뜻을 가집니다. JPA에서는 가볍게 데이터 모델링에서 사용되는 객체라고 생각하시면 됩니다. 코드를 가볍게 살펴봅시다. import lombok.AccessLe kkoon9.tistory.com 영속성 컨텍스트를 쓰는 이유는 1차 캐시, 동일성 보장, 트랜잭션을 지원하는 쓰기 지연, 변경감지(Dirty checking), 지연로딩이 있습니다. 1차 캐시 영속성 컨텍스트 내부에 캐시를 1차 캐시라고 합니다. 영속 상태의 엔티티는 모두 1차 캐시에 저장이 됩니다. Id 어노테이션을 매..
엔티티의 정의 엔티티는 사전적 정의로 개체, 실재라는 뜻을 가집니다. JPA에서는 가볍게 데이터 모델링에서 사용되는 객체라고 생각하시면 됩니다. 코드를 가볍게 살펴봅시다. import lombok.AccessLevel; import lombok.Getter; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import java.time.Duration; @Getter @Entity @NoArgsConstructor(access = Acces..
앞선 포스팅에서 언급한 애플리케이션 컨텍스트에 대해서 공부한 내용입니다. 스프링의 주요 기술 [1]. DI 스프링 주요 기술에서 언급한 DI에 대해서 공부한 내용입니다. 스프링의 주요 기술 스프링의 주요 기술은 크게 세 가지입니다. DI(Dependency Injection) AOP(Aspect Oriented Programming) PSA(Portable Service Abstracti kkoon9.tistory.com 미리 언급하자면 개발자가 애플리케이션 컨텍스트를 직접 구현할 일은 없을 것입니다! 단지, 어떻게 동작하는지 알기 위한 포스팅입니다. 스프링에서 오브젝트의 생성과 관계설정, 사용, 제거 등의 작업을 독립된 컨테이너가 담당합니다. 코드가 아닌 컨테이너가 오브젝트에 대한 제어를 담당한다고 해..
스프링 주요 기술에서 언급한 DI에 대해서 공부한 내용입니다. 스프링의 주요 기술 스프링의 주요 기술은 크게 세 가지입니다. DI(Dependency Injection) AOP(Aspect Oriented Programming) PSA(Portable Service Abstraction) 위 세가지는 애플리케이션을 POJO로 개발할 수 있게 해주는 기술입니다. POJO와 스 kkoon9.tistory.com 의존성 주입? 의존관계 설정! DI가 가장 흔하게 번역되어 사용되는 건 '의존성 주입' 혹은 '의존 오브젝트 주입'인데, 이는 DI의 의미가 무엇인지 잘 드러내주지 못합니다. 오브젝트의 레퍼런스가 전달될 뿐이지, 오브젝트는 다른 오브젝트에 주입될 수 없습니다. 용어는 동작방식보다는 의도를 가지고 이름..
스프링의 주요 기술은 크게 세 가지입니다. DI(Dependency Injection) AOP(Aspect Oriented Programming) PSA(Portable Service Abstraction) 위 세가지는 애플리케이션을 POJO로 개발할 수 있게 해주는 기술입니다. POJO와 스프링의 주요 기술을 알아보기 전에 스프링의 등장 배경에 대해서 간단히 알아봅시다. 스프링의 등장 배경 스프링 이전에는 EJB(Enterprise Java Bean) 스펙을 구현하여 여러 WAS 제품이 출시되었다고 합니다. 그런데 컨테이너의 다양한 서비스를 제공 받기 위해서는 EJB 스펙을 무조건 지켜야 했습니다. EJB 스펙을 지키는 것에 있어서 다음과 같은 문제점이 있었습니다. 서비스가 구현하는 실제 비즈니스 로직..
- Total
- Today
- Yesterday
- Spring
- Olympiad
- 백준
- 이펙티브 자바
- kkoon9
- 디자인 패턴
- 프로그래머스
- 이팩티브 자바
- BOJ
- Effective Java
- 디자인패턴
- AWS
- 정규표현식
- 클린 코드
- Spring Boot
- BAEKJOON
- Kotlin
- programmers
- C++
- kotest
- 알고리즘
- Java
- 코테
- 테라폼
- Algorithm
- 객체지향
- 클린 아키텍처
- MSA
- node.js
- JPA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |