본문 바로가기

반응형

스프링

(24)
[QueryDSL] QueryDSL 설정법(feat.graddle, jpa) QueryDsl을 사용하기 위해서는 함수와 플러그인 그리고 라이브러리를 build.graddle에 별도의 세팅해주어야 한다. //build.graddle plugins { ... //QueryDSL 추가 id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10' } ... dependencies { ... //Query DSL 라이브러리 추가 implementation 'com.querydsl:querydsl-jpa' annotationProcessor 'com.querydsl:querydsl-apt:5.0.0' ... } //QueryDSL def querydslDir = "$buildDir/generated/querydsl" querydsl { jpa = tr..
[Query Dsl] On vs Where 내부 조인 (inner join) ➡️ where 사용 내부 조인일 때는 익숙한 'where'을 사용 ('on'을 사용해도 상관없음. 결과는 동일) List result = queryFactory .select(member, team) .from(member) .join(member.team, team) .where(team.name.eq("teamA")) //.on(team.name.eq("teamA")) 요것도 상관은 없다.. 다만, 익숙한 where 사용을 추천 .fetch(); 외부 조인 (left join) ➡️ on 사용 외부 조인할 때, 'where' 문 사용 시, 왼쪽 데이터들이 누락된다. List result = queryFactory .select(member, team) .from(m..
[Query Dsl] 연관관계가 없는 엔티티들 조인하기 보통 연관관계가 있을 때는 "leftJoin(member.team, team)" 처럼 join 문안에 연관된 엔티티를 명시해 준다. 하지만, 연관관계가 없는 엔티티들은 아래와 같이 외부 조인할 때는 "on"을 통해 할 수 있다. List result = queryFactory .select(member, team) .from(member) .leftJoin(team).on(member.username.eq(team.name)) .fetch(); 이때, 파라미터 수를 주의해야한다. 연관관계 ⭕ : leftJoin(entity1, entity2).where(조건 명시) 연관관계 ❌ : leftJoin(entity1).on(조건 명시) 즉, 연관관계가 없을 때는 leftJoin의 파라미터로 엔티티를 1개만 넣..
[Query Dsl][JPQL] 서브쿼리 주의사항 (from문에서는 불가능) JPQL에서는 from절에서 서브쿼리를 지원하지 않는다. 따라서, Query DSL에서도 From 절에서는 서브쿼리를 사용하지 못한다. 그럼 어떻게? 서브 쿼리 ➡️ join 으로 변경 쿼리를 분리해서 2번 실행 ( 1번이 안되면) nativeSQL 사용 (2번이 안되면) Tip DB에서 데이터를 가져올 때, 딱 맞는 데이터를 짜서 데이터를 가져오기보다는 적당히 정제해서 가져오고, 애플리케이션에서 로직으로 해결하는 게 더 효율적일 수 있다. ( 굳이, 서브쿼리로 복잡하게 지지고 볶을 필요는 없다!) 출처 https://www.inflearn.com/course/Querydsl-%EC%8B%A4%EC%A0%84 (김영한님 querydsl 강의)
[WAS] 서블렛이란? 스프링 MVC 강의를 다시 복습해보며, 정리시작... 서블릿? WAS에서 들어오는 요청에 대해 적절한 로직을 실행 후, 응답해주는 작은 프로그램(클래스) 서블릿들은 서블릿 컨테이너에서 서블릿의 생성 + 호출 + 생명주기 관리가 된다. 서블릿 객체들은 싱글톤으로 관리 (하나의 객체로 계속 재사용) 공유 변수 사용 주의! (생성 후, 모든 요청에 대해 계속 재사용하니까...) 동시 요청을 위한 멀티 쓰레드 처리를 지원 (서블렛 컨테이너에서 지원) 서블릿 컨테이너? 서블릿 컨테이너에서 서블릿의 생성 + 호출 + 생명주기 관리. 요청이 오면, 쓰레드가 적합한 서블릿을 연결시켜준다. WAS의 동작 예시 웹 브라우저 ➡️ localhost:8080/req... 로 요청 요청에서 온 데이터로 request 객체 생성..
롬복(lombok) 생성자 애너테이션 정리 @NoArgsConstructor 기본 생성자 생성 애너테이션 주의사항 클래스 내, final 멤버가 있으면 컴파일 오류! @RequiredArgsConstructor final 혹은 @NotNull이 붙은 멤버변수를 파라미터로 갖는 생성자를 생성 생성자의 파라미터 순서는 클래스에 선언된 멤버변수 순서를 따름 @AllArgsConstructor 클래스 내 선언된 모든 멤버를 갖는 하나의 생성자를 생성
Spring Security - 스프링 시큐리티 정리 Spring Security란? Authenitication(인증)과 Authorization(인가)를 제공하는 프레임워크 각 인증, 권한에 대한 부분을 Fiter 흐름에 따라 처리 (필요한 Fiter을 구현하여 사용하는 방식) 인증 절차를 거친 후 인가 절차를 거침 Credential 기반의 인증 방식을 사용 Credential ? Principal을 아이디로 사용 ( Principal : 보호받는 Resource에 접근하는 대상 ) Credential을 비밀번호로 사용 (Credential : Resource에 접근하는 대상의 비밀번호 ) Spring Security의 특징 서블릿 API 통합 Spring Web MVC와의 선택적 통합 인증과 권한 부여를 모두 포괄, 확장 가능한 지원 세션 고정, C..
[SPRING] BindingResult 정리. BindingResult 1. Error를 상속받는 인터페이스. 2. 스프링이 제공하는 검증 오류 보관 객체 3. @ModelAttribute에서 오류가 발생해도 컨트롤러를 호출할 수 있다. ex) 자료형 바인딩 에러 BindingResult가 없을 경우, 에러 페이지로 이동. BindingResult 추가 시, 에러 페이지의 이동 ❌ 4. 사용법 : 검증할 대상 뒤에 입력한다. ex) public String oooo(검증하고 싶은 인자, BindingResult bindingResult, ...)