inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

이야기를 나눠요

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

데이터베이스 다중 스키마 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 조회수 344

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

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

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

실제 개발할 때의 마음가짐에 대해 질문드립니다.

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

Q. 실제 개발시에는 메서드가 하나 추가될 때마다 테스트해줘야 하는 것 맞을까요? 강의 상에서는 Order, OrderItem 코드 작성하시는 순서가 되게 유기적으로 매끄럽게 구성되어있는데요. 실제 코드 작성할 때는 실수도 나올 수 있고, 특정 메서드에 어느 클래스에 위치해야하는 게 좋을지에 대한 고민같은 것이 동반될 것 같다는 생각이 들 것 같다는 생각이 듭니다(실제로도 그래왔던 것 같구요). 좋은 강의를 수강하다보니 새로운 상황을 혼자 맞이할 때 막막한 순간에 어떤 마음가짐을 가져야할 지 고민이 되어 질문드립니다. p.s) 지금은 열심히 완강을 향해 달려가고 있는 중이라 강의평을 남기지 못하고 있는데, 여유가 되면 감사 인사 꼭 드리도록 하겠습니다. 항상 고마워요 영햔님....

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
Jaesang Yoon 댓글 1 좋아요 0 조회수 305

혹시 냅색문제의 경우 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

테스트 환경에서 h2 db 를 사용하는 경우 실용성에 대하여

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

테스트 환경에서 h2 메모리 db 를 사용하는 방식에 대한 실용성 관련 고민이 있습니다. 프로젝트를 진행하다보면 기본적으로 orm 기반으로 구현을 하지만 일부 예외적인 기능들은 특정 dbms 에 의존적인 쿼리를 직접 실행하는 경우가 불가피하게 발생하는 듯 합니다. 이 경우 특정 dbms(예를들어 mysql) 에 대한 의존성이 발생할 수 밖에 없는데요. 이때 운영 dbms 와 다른 메모리 db(h2) 를 사용하여 테스트를 작성하게 불가능해지고 결국엔 실환경과 동일한 테스트용 db 를 세팅하는식으로 다시 변경하게 되는 듯 합니다. (결국 메모리 db 를 이용한 간단한 테스트를 사용할 수 없는 상황) 실무적인 차원에서 이런 경우 보통 어떤 방식으로 해결하는게 최선일지 궁금합니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
JaeWon Lee 댓글 1 좋아요 0 조회수 708

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

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

삭제된 글입니다

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

목록을 보는 회차에서 zipcode가 안불러와지는 이유가..?

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

앞선 수강생처럼 Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback.Mon Oct 30 21:40:32 KST 2023There was an unexpected error (type=Internal Server Error, status=500).An error happened during template parsing (template: "class path resource [templates/members/memberList.html]")org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/members/memberList.html]") 여기서 zipcode받는 부분을 html부분에서 빼고 받지 않으면 실행이 됩니다. 그런데 zipcode를 받는 부분이 문제가 없어보이는데... 계속 검토중이긴 합니다만..혹여나아시는게 있을까 싶어서..

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
김범준 댓글 2 좋아요 0 조회수 347

연관관계질문

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

임녕하세여 질문잇습니다 쌤이 밀하시길 단방향으로 설계를 하는게 좋다고랫는데 주문 과 주문아이템은 양방향으로 하신이유가잇을까요??

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
조소영 댓글 1 좋아요 0 조회수 360

안녕하세요 선생님 :)

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

삭제된 글입니다

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

해당 강의 수강 후 spring mvc 프로젝트

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요 강사님 ! spring boot를 사용해서 프로젝트를 만든 경험은 있지만 주변 실무자들이 제가 구현한 방식이 올드한 편이라는 피드백을 받고 강사님 spring 기본편과 jpa 해당 강의를 수강하고 있는 학생입니다 ! 저는 보통 냅다(?) 코드를 치면서 전체적인 흐름을 공부한 뒤 이해가 안 가는 부분을 찾아보는 편이라 스프링 강의를 순차적으로 다 듣는 대신 jpa 강의를 먼저 수강 중인데요. 해당 강의를 다 수강한 뒤에 jpa를 활용한 spring 프로젝트 강의를 듣고 난 후 해당 강의를 다시 보고 이 다음 jpa활용 2편을 들으려 합니다. spring 로드맵에서 어떤 강의를 듣는게 좋을지 추천해주실 수 있을까요 ?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
도연 댓글 1 좋아요 0 조회수 432

snapshot이 안 뜹니다...

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

20분 30초 쯤에 gradle clean build까지 잘 되고 libs까지 이동했는데 그 후에 snapshot은 없고 snapshot-plain만 생성돼있네요... snapshot이 생성되지 않는 이유가 뭔지 알 수 있을까요..?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
c3392302 댓글 1 좋아요 0 조회수 418

만료된 메서드 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 조회수 2809

데이터 베이스 설계

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

데이터 베이스 설계를 처음 접해봐서 설계 부분이 너무 어렵네요 ㅠㅠ db 설계 같은건 어떻게 공부할 수 있을까요??

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
맥북유저 댓글 1 좋아요 0 조회수 512

안녕하세요 스프링부트 JPA 관련 질문드립니다!

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

JPA 강의에서 EntityManagerfactory를 하나 만들어서 EntityManager가 필요할때마다 만들고 close()하는 방식으로 해야한다고 들었는데 스프링 부트에서는 private final EntityManager em; 이렇게 등록된 Bean에 대해서 의존성을 주입해서 만들게되면 문제가 없나요?? 이렇게 private final EntityManager em;로 하는 방식도 해당 객체가 생길때마다 새로 em이 만들어지는건가요??

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
돈우 댓글 1 좋아요 0 조회수 345

Lombok으로 인한 jar build failed 발생하시는 분

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

test path에서 Lombok을 사용 할 경우, jar Build 과정에서 Lombok으로 인한 Build Failed가 발생합니다. (CMD) Task :compileTestJava FAILED error: package lombok does not exist error: cannot find symbol @Getter, @Setter, ... ... 해당 경우, 아래와 같이 build.gradle에 의존성을 추가하면 해결 가능합니다. 참고하시면 좋을 것 같습니다. (build.gradle) dependencies { testCompileOnly 'org.projectlombok:lombok:1.18.22' //테스트 환경에서 주입 testAnnotationProcessor 'org.projectlombok:lombok:1.18.24' //테스트환경의 어노테이션 주입 }

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
김준기 댓글 1 좋아요 0 조회수 1329

h2연결이 안됩니다.

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요. 강의대로 h2 설치 및 실행, yml설정, 엔티티, 레파지토리, 테스트 실행했을 때, 쿼리가 날라가지 않습니다 ㅠㅠ 실행은 잘되지만, 콘솔에 테이블이 만들어지지 않습니다 .. application.yml은 spring: datasource: url: jdbc:h2:tcp://localhost/~/test username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: format_sql: true show_sql: true logging: level: org.hibernate.sql: debug 이렇게 작성했습니다. build.gradle도 추가해주었습니다. 왜 h2과 연동이 안되는지 아무리 찾아도 없습니다 ㅠㅠ

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
양희진 댓글 1 좋아요 0 조회수 525

안녕하세요 해당 강의를 보고 토이프로젝트를 진행하다 궁금한 점이 생겨 질문드립니다.

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요 항상 강의 잘 보고 있습니다. 다름이 아니라 영한님의 jpa강의를 토대로 제가 하는 토이프로젝트에 적용하는 과정에서 궁금한 점 몇가지가 생겨서 질문드립니다. application.yaml파일에서 ddl-auto: create-drop으로 했을때 콘솔창에서는 해당 테이블이 없다면서 자꾸 오류가 났었습니다(콘솔에서는 오류가 나오나 DB상으로는 적절하게 테이블이 생성되었음). 그러나 먼저 ddl-auto: create로 해당 테이블들은 생성해놓고 그 다음 update를 하니 오류없이 동작했습니다. 강의를 들을때는 그러지 않았던것 같았는데 원래 이런건가요? 영한님께서 강의 도중 다대다 관계는 1대다, 다대1 관계로 풀어서 진행하라고 하셨던 기억이 납니다. 그렇게 하는 이유에 대해서는 이해를 하였습니다. 저는 기존의 관계형 데이터 베이스에서는 기존의 다대다 관계를 이루고 있던 테이블들의 pk를 가져와서 새로운 테이블에 FK로 넣었고 이러한 두개의 FK를 묶어서 하나의 PK로 만들었습니다. 그러나 강의에서는 기존의 테이블들을 이어주는 테이블에 FK로 넣어주기는 하였으나 아예 새로운 PK를 만들어서 강의를 진행하시던 기억이 납니다. 여기서 제가 궁금한 점은 기존에 제가 했던 방식대로 하려면 @Embedable으로 복합키를 만들어서 진행을 해야할까요? 아니면 기존 하던 방식 말고 새로운 PK를 만들어서 진행하는 방식이 훨씬 깔끔할까요? 제가 진행하는 토이프로젝트의 환경은 aws ec2를 사용하고 있으면 DB는 mariadb를 사용하고 있습니다. 자바 버전은 17입니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
이상민 댓글 1 좋아요 0 조회수 732

junit5에서는 @Test 에노테이션에서 expected를 지원하지 않는 것 같습니다.

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

Assertions.assertThrows(IllegalStateException.class, () -> { memberService.join(m2); // Exception 터져야 돼. }); 혹시 junit5 쓰시는 분들은 위와 같이 수정하여서 돌려도 괜찮은 것 같습니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
kh2mail 댓글 1 좋아요 0 조회수 365

인기 태그

인프런 TOP Writers

주간 인기글