inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

이야기를 나눠요

173만명의 커뮤니티!! 함께 토론해봐요.

변경사항 이력이 관리되면 더 좋을 거 같아요

실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)

저는 특정강의부터 따라하면서 보고 싶은데 완료프로젝트에 git으로 각 강의마다의 결과가 반영되었으면 더 좋았겠다는 생각이 들었어요 ! 좋은 강의 감사드립니다.

  • java
  • spring
  • kotlin
  • spring-boot
  • 리팩토링
홍순엽 댓글 0 좋아요 0 조회수 390

로 타입쓰는 팀원, 제네릭 사용 어떻게 설득할까요?

김영한의 실전 자바 - 중급 2편

안녕하세요. 로 타입을 쓰는 팀원에게 어떻게 제네릭을 쓰자고 잘 설득할지 고민입니다. 20년, 10년 전의 레거시 코드를 유지보수하고 있습니다. 현재 사용중인 JDK는 1.6인데요. 그러면 객체 생성 시 할당하는 곳에서 생략하는 건 못해도 제네릭 자체는 쓸 수 있잖아요. 로 타입은 기본이요, 제네릭을 List<Map> 까지만 쓴다거나, 아예 그냥 자료구조를 따로 만들어서(?) 사용하더라고요. 그래서 최근에 제네릭을 쭉 여러 서적과 강의를 보면서 공부하고 있긴 한데, 거대한 레거시 코드라 한 번에 고칠 수는 없고... 그렇다고 팀원에게 강요하는 건 그릇된 개선이라고 봅니다. 어떻게 하면 제네릭을 잘 도입할 수 있을까요? 제가 공부를 정말~ 많이 하는 방법밖에 없는 걸까요? 제네릭 한 번 쓰면 코드의 양이 확 줄텐데 말이죠...그러면 유지보수도 편해지고 좋을텐데... 🥺

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
  • 제네릭
  • generic
Bruce Han 댓글 2 좋아요 1 조회수 552

안녕하세요! 커리큘럼 문의드려요

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

안녕하세요. 믿고 결제 했습니다!! 이제 막 결제를 한 단계인데요, 인프런에 올리신 강의만 다 들으면 될까요? 아니면 유튜브에 올려두신 영상들도 같이 봐야할까요? 혹시 인프런 강의랑 겹치지는 않지만 도움이 되는 유튜브의 재생목록?? 그런 게 따로 있을까 싶어서 묻습니다. 기존에 무료로 올리신 것도 좋은 영상이 많을텐데 시간이 널널하지 않아서 어떻게 참고할지 고민글 남깁니다!

  • python
  • java
  • c
  • 정보처리기사
신승주 댓글 1 좋아요 0 조회수 379

데이터베이스 다중 스키마 JPA 활용 방법에 대한 질문

자바 ORM 표준 JPA 프로그래밍 - 기본편

log 데이터베이스가 log_연_월로 매월 스키마를 자동 생성하여 로그를 기록 및 보관하고 있습니다. (ex) 2024.03월 >> log_2024_03(db) >> application_log(table), system_log(table) 2024.04월 >> log_2024_04(db) >> 테이블 구조는 동일 (새로운 연.월이 오면 자동으로 생성) .... 위에 대한 데이터베이스 구조에서 3월과 4월의 system_log 내용을 조회하고 싶다면? (조회하고 싶은 날짜는 사용자의 조건에 따라 달라질 수 있음.) mybatis에서 mapper.xml 에 쿼리를 직접 작성하여 해결 가능하지만, jpa로는 위와 같은 문제를 어떤식으로 해결할 수 있는지 조언 부탁 드립니다.

  • java
  • jpa
Patchee (Patchee) 댓글 1 좋아요 0 조회수 345

개발 내용은 안다루신다고 하셨지만... 궁금한게 있습니다

Mixpanel로 데이터 들여다보기

개발 내용은 안다루신다고 하셨지만... 궁금한게 있습니다. 믹스패널 보드를 만들기 위해 유저의 이벤트들을 프론트엔드 코드에 추가하는 중인데요, 예를 들면, submit을 할때 20-25개의 프로퍼티들을 믹스패널 track 이벤트에 추가하고있습니다. dau는 35k 정도 되구요 이런 경우 성능 저하가 우려되는데 괜찮을까요 ?

  • mixpanel
  • 데이터-리터러시
peng 댓글 1 좋아요 0 조회수 451

BigQuery 입문 강의 수강 후 dataset 선정 및 진행 방향성

초보자를 위한 BigQuery(SQL) 입문

안녕하세요. 초보자를 위한 BigQuery(SQL) 입문 잘 들었습니다. 생각보다 재미가 있어서 계속 해보려 하는데 무엇을 해야할지 잘 몰라서 고민입니다. 강의 후반부에 "앞으로 배우면 좋을 내용" 에 있는 순서대로 해보려 했습니다. 공식 문서와 블로그 글을 통해 ARRAY, STRUCT의 기본 공부를 했습니다. 다음으로 넘어가 복잡한 데이터 가공하기 부분을 하고 있습니다. 우선 bigquery의 공개 데이터를 사용해 보자는 생각을 했고 Google Trends datasets과 COVID-19 Public Datasets을 살펴봤습니다. 세부사항과 데이터를 보며 어떤 것을 의미하는지까지는 알 수 있었습니다. 다만 이후부터 어떻게 해야할지 감이 안 왔습니다. 강의를 수강할 때는 예제 문제들이 있으니 배운 것을 적용할 수 있었는데, 처음 보는 데이터고 어떤 목적을 갖고 분석을 해야할지 모르겠습니다. bigquery 프로젝트 예제를 찾아봤지만 마땅한게 없었습니다. 혹시 이 강의를 수강하고 연습해 보기 좋은 dataset과 어떤 방식으로 프로젝트를 진행해야 할지 알고 싶습니다.

  • sql
  • bigquery
  • 데이터-리터러시
타크로 댓글 1 좋아요 0 조회수 552

백엔드 독학 시 취업 준비(포트폴리오) 및 공부 방향이 궁금합니다.

안녕하세요 백엔드 독학 시 포트폴리오 준비 및 공부 방향을 어떻게 해야 할지 방향이 잡히지 않아 고수분들의 의견을 청하고자 글을 작성하게 되었습니다. 저는 백엔드 개발자를 지망하고 있고 인프런에서 강의를 들으면서 공부하고 있습니다. 현재는 자바 강의 및 김영한 님 스프링, JPA, QueryDSL 강의 및 데이터베이스 강의를 수강하였고 개인적으로 나름 포트폴리오? 하나 만들어보고자 도서 대출 반납 및 게시판 CRUD를 할 수 있는 것을 만들었습니다.(백엔드 부분 자바 코드) 화면도 만들기는 했지만 GPT 선생님의 도움을 빌려 일단 화면이 보일 수 있을 정도만 해놨습니다. 이후 협업을 경험해 보고 싶은데 현재 올라와 인프런에서 사이드 프로젝트 자리가 있으면 지원하고 있지만 뛰어난 분들이 너무 많아 참여가 힘든 것 같습니다. 일단 현재는 docker를 공부 중이며 redis, aws를 공부하려고 합니다. 현재 취업을 위해 팀 프로젝트를 하고 싶은데 어떻게 참여할 수 있을지, 많이 부족하다면 현재 어떤 방향으로 더 공부를 진행해야 할지 방향을 잡기가 힘들어 글을 쓰게 되었습니다. 중소기업에 취직하기 위해서는 JSP을 요구하는 곳도 많아 보이는데 html, css, js를 활용해서 화면도 만들 정도로 공부해야 하는 것 인지도 질문드리고 팀플 구하는 방법 및 공부 방향 및 어떤 것을 더 추가적으로 공부하면 좋을지 댓글 부탁드립니다! 감사합니다. 많은 분들께서 댓글 주시면 경청하도록 하겠습니다!

  • java
  • springboot
  • mysql
  • jpa
  • springdatajpa
  • querydsl
SHYU 댓글 1 좋아요 1 조회수 1209

웹크롤링 강의

[무료]기초 텍스트마이닝: 앱 리뷰 분석 with 파이썬(40분 완성)

안녕하세요 선생님 빅데이터 분석에 관심이 있어 파이썬을 1도 모르는 상태에서 시작해 현재 선생님의 강의를 통해 많은 도움을 받고 있습니다. 현재 텍스트 마이닝 분석 방법으로 쓴 논문들을 보면 쇼핑몰 댓글 부터 해서 각종 SNS(페이스북, 인스타그램 등)의 댓글을 분석한 논문들을 많이 살펴볼 수 있는데 현재 파이썬 초보로서 데이터를 수집하는 과정(웹크롤링)이 제일 중요하고도 어려운 것 같습니다. 현재 텍스톰이나 빅카인즈 같은 웹사이트를 이용하는 것 말고 파이썬 으로 다양한 데이터를 직접 웹크롤링 해서 데이터를 수집하는 방법을 집중적으로 다룬 강의는 거의 찾아보기 어렵더라구요..ㅠㅠ 블로그 등에 검색해보면 코드가 공개된 것도 있지만 여기저기 코드 방식이 다 다양하고 막상 적용해서 실행해보면 또 에러 생기고 이유는 모르겠고 답답하더라구요. SNS 채널 및 쇼핑몰 댓글 등을 웹크롤링 하는 과정을 하나하나 다 보여주는 강의가 있으면 좋겠다고 생각하고 있는데 혹시 이렇게 여러 채널의 웹크롤링 과정만 다룬 강의를 올려주실 계획은 없으신지요?

  • 빅데이터
  • NLP
  • 텍스트마이닝
  • 데이터-리터러시
우아한 북극곰 댓글 1 좋아요 0 조회수 486

혹시 냅색문제의 경우 dp를 1차원으로 해결 할 수 있는 방법은 없을까요?

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

public class BOJ_12865 { static int N; static int K; static int[][] merchandise; // 0 : 무게, 1 : 가치 static int[][] dp; public static void main(String[] args) { Scanner sc = new Scanner(System.in); N = sc.nextInt(); K = sc.nextInt(); merchandise = new int[N][2]; dp = new int[10000000][N]; for (int i = 0; i < 10000000; i++) { for (int j = 0; j < N; j++) { dp[i][j] = -1; } } for (int i = 0; i < N; i++) { merchandise[i][0] = sc.nextInt(); merchandise[i][1] = sc.nextInt(); } int max = recursion(0, 0); System.out.println(max); } private static int recursion(int index, int weight) { if (weight > K) { return Integer.MIN_VALUE; } if (index == N) { return 0; } if (dp[weight][index] != -1) { return dp[weight][index]; } dp[weight][index] = Math.max(recursion(index + 1, weight), recursion(index + 1, weight + merchandise[index][0]) + merchandise[index][1]); return dp[weight][index]; } 안녕하세요 덕분에 강의 잘 듣고 있는 수강생입니다. 냅색 문제를 풀고 있는데, 최대 가능한 무게의 경우 100 (배낭 물품의 최대 개수) * 100,000(각 물건의 최대 무게) 로 생각보다 생성해줘야하는 배열의 크기가 크더라구요. 그래서 혹시 dp를 1차원 배열로 생성하면 어떻게 되는 지 궁금하여 1차원 배열로 해본 결과, 무게를 고려하지 않고 dp의 무게 갱신을 하게 되어 답이랑은 다르게 나오네요. 혹시 1차원 배열을 시도하려고 할 때 제가 놓치고 있는 부분이 있을까요?감사합니다.

  • 코딩-테스트
  • 알고리즘
  • java
Tommy 댓글 1 좋아요 0 조회수 376

일대다 페이징 방법

실전! Querydsl

삭제된 글입니다

  • java
  • jpa
재성 댓글 1 좋아요 0 조회수 543

자바 스프링 공부 방향과 로드맵

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

삭제된 글입니다

  • java
  • spring
  • mvc
  • spring-boot
  • jpa
  • 로드맵
srbboot 댓글 1 좋아요 0 조회수 1756

안녕하세요 선생님 :)

나도코딩의 자바 기본편 - 풀코스 (20시간)

삭제된 글입니다

  • java
  • 객체지향
갈색곰 댓글 1 좋아요 0 조회수 1643

강의목적

PM을 위한 데이터 리터러시(프로덕트 데이터 분석)

나의 데이터 강의의 목적 이 강의를 통해 나는 다음과 같은 3가지를 얻고 싶다. 경험이나 직감이 아닌 데이터로 문제를 해결하는 능력을 얻고 싶다. 현업에서 조직구조를 데이터 드리븐 문화를 만들고 사고하는 조직으로 바꾸고 싶다. 데이터를 바라보는 사고를 얻음으로써 일상에서의 문제, 지역, 세계적인 문제를 차근차근 고민 해보고 풀어나가 보고 싶다. 그걸 위해 나는 이렇게 노력할 것이다. 매일 강의를 들으면서 데이터를 이해하고 일상생활 및 회사에 적용해 보기 내가 가진 문제들을 고민 해보고 어떻게 하면 지금 이 문제를 해결해 나갈지 데이터적으로 바라보기 매일 일상을 점검하며 숫자로 관리하기 수강한 후, 나는 어떤 모습이고 싶다 데이터를 적인 사고를 가진 PM으로써 프로젝트의 문제들을 데이터로 해결해 나가고 싶다. 회사 내에서 데이터를 잘 알려주고 강의해줄 수 있는 사람이 되고 싶다. 세계 각국의 문제들을 데이터적으로 바라보고 해결하고 싶다.

  • 데이터-리터러시
  • ab-test
  • metric-hierarchy
Daniel 댓글 1 좋아요 0 조회수 528

강의 수강 목적

PM을 위한 데이터 리터러시(프로덕트 데이터 분석)

데이터사이언스전공으로, 최근에 4-2학기까지 다 마쳐서, 대학교 졸업식 2023/8/18 만을 남겨두고 있습니다. 원래 데이터사이언티스트가 되는 것을 목표하다가, 통계 or 수학 관련해서, 실력이 부족하다고 느끼기도 했고, 아는 데이터사이언티스트 분께서 DA 직군으로 도전해볼 것을 권유해주셔서, DA로서 취업을 우선적인 목표로 삼았습니다. 첫강의 인트로에서 말씀하신 것처럼, 저도 SQL이나 Tableau, Bigquery 같은 툴에 먼저 익숙해져야하나, 그런데 내 현재 실력은 좀 부족한데 어떻게 하지 ? 이런 고민들을 하고 있었고, 지인 분께서 DA로서 필요한 스킬셋을 기를 수 있다고, 이 강의를 꼭 들어보라고 추천해주셔서 드디어!! 지금이라도 열심히 들어보려고 합니다. 목표 : Toss에 DA로서 들어가고 싶습니다! 좋은 강의 감사하고, 차분히 잘 수강해보겠습니다 :) 이 강의를 통해, 나는 다음과 같은 3가지를 얻고싶다 DA로서 필요한 역량을 기르고싶다. 현업에서는 DA가 어떤 일을 하는지, 간략하게나마 자세히(?) 알아보고싶다. 목표한 기업에 취업 성공하고 싶습니다. 그걸 위해, 나는 이렇게 열심히 노력할 것이다. 저는 이 강의를 일단 성실하게 수강할 것이고, 이후 이 강의에서 요구하는 바를 실천하겠습니다. SQL 기본역량을 길러서, 면접에서 합격할 정도의 수준에 도달하겠습니다. 수강 한후, 나는 어떤 모습이고 싶다. 이력서 또한 잘 다듬어서, 목표한 회사에 성공적으로 취업 성공에 이르고 싶습니다. 그 이후 ? 는 아직 생각해보지 않았습니다 :)

  • 데이터-리터러시
  • ab-test
  • metric-hierarchy
Jason 댓글 1 좋아요 0 조회수 580

만료된 메서드 fetchResult(), Blaze-persistence 세팅 관련 글 공유드립니다.

실전! Querydsl

QueryDSL 내부 메소드 중 fetchResult() 나 fetchCount()는 만료된 메소드에 대해서는 QueryDSL에서 Blaze-persistence Integration 라이브러리 사용을 권장 하는데요, Blaze-persistence도 QueryDSL 처럼 쿼리 빌더 API 로서 개발자에게 유지보수하기 좋은 객체를 제공해주고 있습니다. 게다가 최신 업데이트 날짜가 글 작성일 기준(2023.06.21) 일주일 이전이라 여전히 유지보수되고 있어서 최신 스프링버전과 호환성도 어느정도 보장되었다고 볼 수 있습니다. 개인적으로 SpringBoot 3.1.0 기준으로 다음과 같이 세팅하니 정상적으로 동작하는 걸 확인했는데요, 혹시 저처럼 deprecated 메소드를 쓰는 것이 신경쓰이시는 분들을 위해 공유드립니다. build.gradle dependencies { //Blaze-Persistence implementation 'com.blazebit:blaze-persistence-integration-querydsl-expressions-jakarta:1.6.9' implementation 'com.blazebit:blaze-persistence-integration-hibernate-6.2:1.6.9' implementation 'com.blazebit:blaze-persistence-core-impl-jakarta:1.6.9' } BlazePersistenceConfiguration.java @Configuration public class BlazePersistenceConfiguration { @PersistenceUnit private EntityManagerFactory entityManagerFactory; @Bean @Scope(ConfigurableBeanFactory.SCOPE_SINGLETON) @Lazy(false) public CriteriaBuilderFactory createCriteriaBuilderFactory() { CriteriaBuilderConfiguration config = Criteria.getDefault(); // do some configuration return config.createCriteriaBuilderFactory(entityManagerFactory); } } QuerydslBasicTest.java ..... JPAQueryFactory queryFactory; @Autowired CriteriaBuilderFactory cbf; BlazeJPAQueryFactory blazeQueryFactory; @BeforeEach public void testEntity(){ queryFactory = new JPAQueryFactory(em); // 이건 동시성 문제를 고민하지 않아도 됨, 해결됨 blazeQueryFactory = new BlazeJPAQueryFactory(em, cbf); ..... 적용 결과 기존 QueryDSL 세팅한 것에 추가로 세팅하시면, 만료된 메소드에 대해 Blaze-persistence 객체로 대체되는데요, 기존 querydsl 클래스를 상속 받는 형태여서 QueryDSL이 제공하는 메소드를 그대로 쓸 수도 있습니다. fetchResults는 fetchPage로 바꿔서 사용할 것을 권장하고 있다는 점 참고하시면 될 것 같습니다. 추가로 내부로직이라든지 설명이 더 필요하시다면 Blaze-persistence 릴리즈 노트 와 Blaze Persistence Document 를 참고하시면 좋을 것 같습니다. 이 글에 대해 지적 및 피드백 해주시면 정말 감사하겠습니다. 감사합니다. 여담 및 고민 : 개인적으로 이 라이브러리의 내부로직을 뜯어보면서 분석하고 검증할 수 있는 역량은 부족한지라 분석 및 검증하는 방법에 대해서 팁이라든지, 아니면 blaze-persistence 사용할 시 주의해야할 점이라든지 조언해주실 수 있으시면 정말 감사드립니다. 강의를 듣던 중에 서브쿼리가 발생하는 부분에서는 정상동작하지 않는 것을 발견했습니다. @Test public void findUserDto(){ QMember memberSub = new QMember("memberSub"); List<UserDto> memberDtoList = queryFactory //이건 blazeQueryFactory가 정상 동작하지 않음 .select(Projections.fields(UserDto.class, //생성자 필드 순서에 맞게 변수를 만들어야 한다. member.username.as("name"), // member.age 대신 서브쿼리로 다 최대 나이로 찍고 싶어 ExpressionUtils.as( JPAExpressions .select(memberSub.age.max()) .from(memberSub), "age") )) .from(member) .fetch(); for (UserDto userDto : memberDtoList) { System.out.println("userDto = " + userDto); } } QueryDSL 쿼리 /* select member1.username as name, (select max(memberSub.age) from Member memberSub) as age from Member member1 */ select m1_0.username, (select max(m2_0.age) from member m2_0) from member m1_0 blaze-persistence 쿼리 /* SELECT member1.username AS name, member1.age AS generatedSubquery_1 FROM Member member1 */ select m1_0.username, m1_0.age from member m1_0 blaze-persistence generatedSubquery라 하여, 서브쿼리를 하나의 alias로 처리를 해버렸는데, 후행으로 이 generatedSubquery 에 대한 정의가 따라오질 않습니다... 왜 이런 차이가 나오는지는 모르겠지만 blaze-persistence 활용할 때는 유의해야할 것 같습니다.

  • java
  • jpa
  • querydsl
  • blaze-persistence
말랑한참깨 댓글 0 좋아요 1 조회수 2811

강의 수강의 목적

PM을 위한 데이터 리터러시(프로덕트 데이터 분석)

이 강의를 통해 나는 다음과 같은 3가지를 얻고 싶다. 서비스를 기획하기 전, 데이터를 통해 객관적으로 문제정의를 하고 싶다. 서비스가 개선된 후, 내 기획에 대해 데이터를 통해 회고하고 싶다. 팀원분들이 데이터를 바탕으로 소통할 수 있도록 기여하고 싶다. 그걸 위해 나는 이렇게 노력할 것이다. 최대한 빠르게 집중해서 강의를 수강한다. 현재 기획이 필요한 내용에 대해 병렬적으로 적용해 나간다. 수강한 후, 너는 어떤 모습이고 싶다. 데이터를 기반으로 문제 정의할 수 있는 기획자 데이터를 바탕으로 객관적인 피드백이 가능한 기획자 팀 내 문화의 변화를 이끌어낼 수 있는 팀원

  • 데이터-리터러시
  • ab-test
  • metric-hierarchy
pinetree 댓글 1 좋아요 0 조회수 670

강의 목적

PM을 위한 데이터 리터러시(프로덕트 데이터 분석)

- 이 강의를 통해 나는 다음과 같은 3가지를 얻고 싶다. 데이터의 기본적인 개념 이해 데이터 설계 능력 데이터 문화 간접 체험 그걸 위해 나는 이렇게 노력할 것이다. 매주 최소 1강 수강하기 현재 업무에 적용시킬 부분 고민해보기 GA로 구현해보기 수강한 후, 나는 어떤 모습이고 싶다 데이터에 자신감 있는 사원이고 싶다 AB 테스트를 진행해본 사원이고 싶다 문제를 해결할 때 어떤 데이터를 봐야 하는지, 어떻게 분석할지 계획이 서는 사원이고 싶다

  • 데이터-리터러시
  • ab-test
  • metric-hierarchy
오지연 댓글 1 좋아요 0 조회수 610

백엔드 개발자의 방향성에 대해 조언을 얻고자 합니다

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

현재 국비 학원을 수료하며 프로젝트를 마친 뒤에 김영한님 강의를 듣고 있으며 spring에 대해 이제서야 이해하려 하는 취준생입니다. 문득 제가 어떤 개발을 하고 싶은지 방향성에 대해 생각해보게 되었습니다. ->어떤 개발을 하고 싶은지 방향성에 대해 되짚어 보고 있었다 ->SQL문을 짜면서 효율적인 방법은 무엇이 있을까 고민하는 과정이 스스로 가치 있는 고민을 하고 있다는 생각이 들었다. ->데이터 처리 속도 개선에 관하여 고민하는 개발자가 되고 싶다. ->대용량 트래픽을 다루는 서비스 회사에서 성장하고 싶다. 질문 ==> 위의 4문장을 설득력 있게 말하기 위해서 취준에 뛰어드는 예비 백엔드 개발자 수준에서 할 수 있는 "공부 방향"은 무엇이 있을지 조언 해주실 수 있을까요? (특정 개념이나 강의를 추천해주셔도 감사할 것 같습니다. )

  • springboot
  • java
  • spring
  • 백엔드
  • 신입
sky66951 댓글 1 좋아요 3 조회수 5676

QueryDsl SpringBoot 2.7의 gradle 설정을 공유합니다.

실전! Querydsl

plugins { id 'org.springframework.boot' version '2.7.4' id 'io.spring.dependency-management' version '1.0.14.RELEASE' id 'java' } group = 'study' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' // queryDSL 설정 implementation "com.querydsl:querydsl-jpa" implementation "com.querydsl:querydsl-core" implementation "com.querydsl:querydsl-collections" annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa" // querydsl JPAAnnotationProcessor 사용 지정 annotationProcessor "jakarta.annotation:jakarta.annotation-api" // java.lang.NoClassDefFoundError (javax.annotation.Generated) 대응 코드 annotationProcessor "jakarta.persistence:jakarta.persistence-api" // java.lang.NoClassDefFoundError (javax.annotation.Entity) 대응 코드 } tasks.named('test') { useJUnitPlatform() } // Querydsl 설정부 def generated = 'src/main/generated' // querydsl QClass 파일 생성 위치를 지정 tasks.withType(JavaCompile) { options.getGeneratedSourceOutputDirectory().set(file(generated)) } // java source set 에 querydsl QClass 위치 추가 sourceSets { main.java.srcDirs += [ generated ] } // gradle clean 시에 QClass 디렉토리 삭제 clean { delete file(generated) } 해당 소스는 타사 강의 보다가 본 설정에서 가져왔습니다. 기존 영한님 강의와 다른 점이 3가지 있으니 주의하시기 바랍니다. Querydsl Q파일 생성 위치가 다릅니다. 기존 영한님 강의대로 $build 로 시작하는 설정을 사용하면 테스트 실행 시 Q파일의 위치를 찾지 못해서 테스트가 실패합니다. Gradle -> Tasks -> build -> clean Gradle -> Tasks -> build -> build 혹은 classes 기존 영한님 교안에는 빌드 시 Gradle -> Tasks -> other -> compileQuerydsl 로 Q파일을 생성하지만, 이 방법의 경우 other에 해당 메뉴가 없습니다. 그래서 빌드 시에는 그냥 build 메뉴의 build 혹은 classes 로 빌드하시면 Q파일이 생깁니다. 영한님 강의에서는 gradle build 폴더가 대부분 git 버전관리에 포함되지 않으므로 따로 설정할 필요가 없지만, 이 경우 Q파일이 소스폴더에 들어가므로 .gitignore 에 아래와 같이 별도로 경로를 설정해 주어야 합니다. ### Querydsl /src/main/generated 혹시 저같이 청개구리마냥 강의에 나온 버전 사용 안 하고 최신 버전 사용하시는 분들께 도움이 되었으면 좋겠습니다. 저도 타사 강의에서 가져온 것이고 기초 테스트만 통과한 것이라서 혹시 강의에 맞지 않는 경우 영한님이나 다른 분들이 추가 정보를 주시면 좋을 것 같습니다. 여담인데 QueryDSL은 쿼리 짜긴 확실히 편한데 설정이 버전마다 중구난방이라 불편합니다. 똑똑한 개발자분들이 이런 설정도 그냥 @Configuration 으로 빼버리는 거 만들어주지 않을까 하는 기대가 있긴 합니다.

  • java
  • spring
  • jpa
  • querydsl
박민호 댓글 5 좋아요 20 조회수 11527

인기 태그

인프런 TOP Writers

주간 인기글