Spring boot version : 2.7.9java version : 11강의를 보고 따라하다가 queryDslCompile 시도하니 에러가 떳다.queryDsl 버전이 강의에선 4.0.0이였고아래와 같이 수정하니 정상적으로 queryDslCompile이 되었다.
parameter를 직접 바인딩을 해줘야한다.쿼리 짜듯이 where 조건에 직접 적용 가능preparestatement 방식으로 바인딩JPAQueryFactory는 Querydsl 라이브러리에서 제공하는 클래스로, Java Persistence API (JPA) 엔티티
fetch()리스트 조회, 데이터 없으면 빈 리스트 반환JPQL의 getResultList()와 유사하다fetchOne()단 건 조회결과가 없으면 : null결과가 둘 이상이면 : com.querydsl.core.NonUniqueResultExceptionfetchFi
count, sum, avg, max, min 등 지원.join()에서 member.team, team 매핑할 관계를 나열 후 join.groupBy() 지원leftJoin, join, rightJoin 등 지원theta 조인이란 연관관계가 없는 테이블끼리도 조인 가능
on() : 외부 조인시 조인하는 테이블에 where 조건을 걸어줌inner 조인시에는 그냥 where절에 조건을 거는게 낫다.JPQL : select m, t from Member m left join m.team t on t.name = 'teamA'관계가 없는 t
select절에 when(), then(), otherwise()를 통한 간단하게 표현 가능between()까지 사용한 표현자바에서 상수는 값이 할당된 후 값을 변경할 수 없는 변수이다.조회결과론 username과 상수 A가 나온다.concat() 문법은 문자를 합쳐주
JPQL을 통한 구현 new 를 해서 dto의 생성자와 매핑한다.순수 JPA에서 DTO를 조회할 때는 new 명령어를 사용해야함Projection.bean을 통한 생성자를 생성한다.Projections.bean은 결과 세트의 여러 컬럼을 자바 객체로 매핑하고자 할 때
JPQL과 Querydsl를 사용하여 2가지 버전으로 메소드를 구현하였다.JPQL은 파라미터를 바인딩할때 setParameter()를 사용해야하지만Querydsl은 where() 조건안에서 eq()와 함께 사용해줘서 더욱 편리하다.JPQL과 Querydsl로 test코
Member와 Team 엔티티를 한번에 List로 받을 수 있게 MemberTeamDto를 생성@Data로 setter, getter, toString 등 처리@QueryProjection으로 QMemberTeamDto 생성조건을 담을 수 있는 MemberSearchC
IDE : IntelliJ jdk : java11 Spring Boot, gradle 방식으로 사용. 스프링 부트 프로젝트 생성 URL 스프링 부트 스타터(https://start.spring.io/) dependencies Spring WEB : Tomcat,
Junit으로 실행시키는 테스트 폴더와 main폴더에 대한 profile을 분리하고 싶었다.main : localtest : test 이런식으로?
샘플 데이터를 넣어줬다.파라미터를 DTO 자체를 담을 수 있다. (Spring Query String 바인딩)API request 예시localhost:8080/v1/members?teamName=teamA&ageGoe=10&ageLoe=30&username=membe
inferface 생성 후 구현체 메소드 작성페이징을 할때는 Page라는 객체에 <반환 타입>을 매핑해주고 매개변수로 Pageable을 사용한다.구현 클래스 작성searchPageSimple()은 offset(), limit(), fetchResults()로 마무
서블릿 컨테이너(Servlet Container)는 서블릿을 실행하고 관리하는 런타임 환경을 제공하는 웹 서버의 일종입니다.서블릿 컨테이너는 웹 서버와 연동하여, 클라이언트로부터 오는 HTTP 요청을 받아들이고, 해당 요청에 대해 적절한 서블릿을 실행하여 HTTP 응답
WebConfig는 Spring Framework에서 제공하는 설정 파일로, 웹 애플리케이션의 설정을 구성하는 클래스입니다. 주로 Spring Boot 프로젝트에서 사용되며, 웹 애플리케이션의 전반적인 동작을 세부적으로 조정하고 구성할 수 있습니다. 예를 들어, 인터셉
application.yml에서JPA에서 데이터베이스 초기화 전략은 주로 spring.jpa.hibernate.ddl.auto라는 프로퍼티를 설정하여 관리됩니다.spring.jpa.hibernate.ddl.auto는 Hibernate의 기능이며, JPA 구현체로서 많이
SpringDoc는 Spring Framework를 기반으로 한 오픈 소스 프로젝트로서, Swagger UI를 자동으로 생성하여 Spring Boot 애플리케이션의 API 문서화를 도와주는 도구입니다. Swagger를 사용하여 API 문서를 작성하고 노출시키는 작업을
자바 기반의 웹 애플리케이션에서 보안을 구현하기 위해 사용되는 강력하고 포괄적인 보안 프레임워크입니다. 주요 목표는 애플리케이션의 인증(Authentication)과 권한 부여(Authorization)를 관리하여 사용자, 자원 및 서비스의 보안을 유지하고 강화하는 것
변경감지는 엔티티의 상태 변화를 감지하여 자동으로 데이터베이스에 반영하는 기능을 말합니다. 변경 감지를 통해 개발자는 별도의 SQL 쿼리를 작성하지 않고도 엔티티의 수정 내용을 간편하게 데이터베이스에 반영할 수 있습니다.Spring Data JPA에는 update 쿼리
웹 개발에서 사용하는 주요 인증 방식으로는 토큰, 쿠키, 세션 등이 있습니다. 각각의 방식의 장단점은 다음과 같다. 토큰 (Token) 토큰은 클라이언트가 로그인을 하면 서버에서 발급하며, 이후 클라이언트는 요청 헤더에 토큰을 포함하여 전송한다. 서버는 토큰을 검증
JPA (Java Persistence API)를 사용하여 엔티티의 식별자(ID)를 생성하려면 다양한 방법을 사용할 수 있습니다. 일반적으로 식별자는 데이터베이스에서 각 테이블 행의 고유한 값을 나타냅니다. 여기에서 더 자세하게 다양한 ID 생성 전략을 확인해 보겠습니
✅JPA에서 지연 로딩(Lazy Loading)과 즉시 로딩(Eager Loading)는 엔티티 간의 관계를 마련할 때 데이터를 가져오는 전략을 결정하는 방법입니다. 이 두 가지 로딩 전략의 차이점에 대해 자세히 살펴보겠습니다. 👉지연 로딩(Lazy Loading)
✅ 개요 아래와 같은 소스에서 Entity를 생성할때마다 날짜를 추가해주는게 너무 비효율적이라고 생각했습니다. 이를 해결하기 위해서 JPA Auditing 이용했습니다. 이를 이용하면 @CreatedDate와 @LastModifiedDate 어노테이션을 사용하여 Lo
Spring Security를 사용하는 웹 애플리케이션에서는 UserDetails 인터페이스를 구현하는 클래스를 사용하는 것이 일반적이다.Spring Security에서 UserDetails 인터페이스는 사용자의 정보를 나타내는 역할을 한다.이 인터페이스를 구현하는 클
개요 SpringBoot JPA에서 API 테스트 코드를 짜던 중에 위와 같은 에러가 났다. 내가 짜던 소스는 Post Entity와 Reply Entity를 이용하여 Post List API의 Response에서 Post와 Reply List를 같이 뿌려주고 싶
개요 개인 프로젝트를 하던 중 검색에 따라서 list의 출력 값이 나오게 하고 싶었다. 그래서 JPA를 이용한 조건절 구현에 대해서 찾아보았고 이를 정리하고 싶었다. 방법 JPQL을 이용하는 방법 EntityManager를 통해 JPQL을 실행하려면, creat
개요 개인 프로젝트를 하면서 refreshToken에 대한 정보를 redis에 저장시켜 refreshToken 만료 시 만료되었다는 response를 내려주는 방법에 대해 정리했다. 이 글은 로컬에 redis가 깔려있는 상태에서 작성했습니다. Mac(m2) 로컬에
개요 이 글에서는 스프링 부트 애플리케이션에서 API 설계 시 Entity 클래스를 반환하는 것이 바람직하지 않은 이유와 해결 방법에 대해 알아보겠습니다. 예시 먼저 간단한 예시 코드를 통해 Entity 클래스를 반환하는 API를 살펴봅시다. 이 API는 GET
스프링 프레임워크의 가장 중요한 개념인 DI(Dependency Injection)이란 직역해보자면 의존성 주입이고 토비의 스프링에선 의존관계 주입이라는 말로 해석하기도 합니다. 이는 객체 간의 의존성을 외부에서 주입하여 관리하겠다는 개념입니다.만약에 주문 서비스 로직
애플리케이션을 개발하면 만약에 동시에 누군가 게시글을 작성한다면? 아니면 동시에 상품을 주문하게 된다면? 등의 상상을 해봤을 겁니다.이러한 동시성 문제를 해결하기 위해서 다른 분들도 많이 생각을 하셨을 겁니다. 그 방법에 대해 알아보겠습니다.
분산 락 이전 글에서 알아본 synchronized는 단일 서버 환경에서만 동시성 문제를 해결할 수 있었습니다. 이번 글에서는 다중 서버 환경에서 동시성 문제를 해결할 수 있는 방법에 대해 알아보겠습니다. 여러 대의 서버에서 동일한 자원에 접근하는 경우, 동시에 한
MYSQL을 이용한 네임드 락 구현 적용기
Redis를 사용하여 분산락을 구현해보겠습니다.
스프링 프레임워크의 핵심 기능 중 하나는 의존성 주입(Dependency Injection, DI)을 통한 객체 관리입니다. 이러한 기능을 제공하는 것이 바로 스프링 컨테이너입니다. 오늘은 스프링 컨테이너의 두 가지 주요 구현체인 BeanFactory와 Applicat