공부/스프링부트 6

QueryDSL 에서 Order By 다음 Group By

캡스톤 진행 중 QueryDSL을 사용하여 쿼리문을 날려 원하는 정보를 얻어야 할 일이 생겼다. 장소와 게시물은 일대다 관계이고 장소 1개당 최근 게시물 1개 (pk가 가장 큰 것)를 조회하고 싶었다. SQL문을 날리면 MAX(ID) 값으로 조회할 수 있겠지만, QueryDSL로 entity를 조회해야했기 때문에 어떻게 해야할지 많이 고민했다. 그러다 생각했던 방법이 Order By 다음 Group By 인데, 일반적인 SQL문은 Group By 다음 Order By가 수행되기 때문에 다른 방법을 사용해야 했다. 그래서 생각한 방법은 서브쿼리를 사용하는 방법이었다! return queryFactory .selectFrom(post) .where(post.id.in( JPAExpressions .selec..

Spring Boot | Lombok - @RequiredArgsConstructor 어노테이션

@RequiredArgsConstructor 어노테이션 @RequiredArgsConstructor은 Lombok에서 쓸 수 있는 어노테이션이다. 필수적으로 들어가는 것을 이용해 생성자를 자동으로 만든다. @RequiredArgsConstructor를 사용하지 않은 순수 자바 코드의 경우 다음과 같이 표현할 수 있다. public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository,..

Spring Boot | JPA - @Enumerated 어노테이션

@Entity public class Order { @Enumerated(EnumType.STRING) private OrderStatus status; // OrderStatus - ORDER / CANCLE } Enum값을 사용한다면 @Enumerated 어노테이션을 붙여주어야 한다. EnumType은 ORDINAL(default값)과 STRING 두가지가 있다. EnumType.ORDINAL 값이 숫자형식으로 저장된다. 앞에서부터 차례대로 1, 2, 3 ... 으로 저장되므로 중간에 만약 새로운 값이 들어온다면 꼬일 수 있으므로 사용을 자제하는 것이 좋다. EnumType.STRING String 형태로 저장된다. 문자열 그대로 저장되므로 중간에 값이 들어와도 그 값 또한 문자열 형태로 저장된다. ..

Spring Boot | JPA - @Id, @GeneratedValue 어노테이션

Spring Boot JPA 기본 키 매핑 전략 (@Id) @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long no; @Id @Id 어노테이션은 주 키임을 나타낸다. 직접 할당하는 방식으로, 데이터베이스를 해당 프로퍼티를 통해 접근하게 된다. @GeneratedValue 4가지의 방법으로 주키를 자동으로 생성해준다. GenerationType.AUTO 특정 DB에 알맞게 자동 생성한다. GenerationType.IDENTITY 기본키의 생성을 데이터베이스에 위임해 관리하도록 한다. GenerationType.SEQUENCE 데이터베이스의 sequence 컬럼을 이용한다. 유일한 값을 순서대로 생성한다. GenerationType.TABLE..

Spring Boot | querydsl 오류 - Unable to load class 'com.mysema.codegen.model.Type'.

스프링부트 querydsl을 설정하면서 Unable to load class 'com.mysema.codegen.model.Type'. 위 에러가 계속 났다... 처음에 무작정 따라하다가 에러가 난걸 보고 Gradle 5.0 이상부터는 아래처럼 설정해줘야 된다고 그래서 설정했으나 계속 에러가 났다. plugins { ... id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10' // querydsl 추가 } dependencies { ... // querydsl implementation "com.querydsl:querydsl-jpa" implementation "com.querydsl:querydsl-apt" } // 가장 아래 추가 // querydsl ..

Java | M1 맥북 자바 설치 - JDK11, 환경변수 설정, IntelliJ(학생)

맥북을 새로 수리하고 (^^) Java를 다시 설치하려고 한다. 인프런 스프링 부트 강의를 수강하기 위해 JDK11버전을 설치하는 방법이다. 1. JDK 설치 https://www.oracle.com/java/technologies/downloads/ Oracle 사이트에 들어가면 가장 위에는 최신 버전이 뜨고, 아래로 스크롤을 내리면 Java11 과 Java8을 다운받을 수 있도록 되어있다. 만약 다른 버전을 원할 경우 Java Download 아래에 Java archive 메뉴로 가면 다른 버전도 있으니 참고! 각자 운영체제에 맞는 JDK를 설치하면 된다. Required -> 밑에 다운로드 버튼 클릭 로그인을 하면(없으면 회원가입) 다운로드가 된다. 이후 다운받은 파일 클릭해서 설치 진행하면 된다!..