묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
기본 키 매핑 member.getId() 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]섹션 4 기본키 매핑 중 24:56분identity전략을 사용하고 em.persist을 하고난 뒤, member.getId()했을때 select 쿼리가 왜 안날라가는지에 대해 설명하실 때 JDBC 드라이버 관련된 이야기를 하셨습니다.근데 em.persist를 하고 난 뒤면, 해당 멤버에 대한 엔티티가 1차 캐시에 이미 저장되어 있기 때문에 JDBC 내부 동작과는 관련없이 select 쿼리가 안나가는 것 아닌가요? DB까지 갈 필요없이 1차 캐시에 존재하니까..?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
자바버전
자바 17버전으로 사용하고 싶은데 꼭 11버전만 사용해야할까요?
-
미해결실전! 스프링 데이터 JPA
Member 엔티티의 연관관계 메서드에 대해 질문드립니다.
Member 엔티티의 연관관계 메서드(changeTeam)는 멤버가 기존에 속한 팀을 매개변수로 전달한 새로운 팀으로 변경합니다. 그런데 기존에 속한 팀의 리스트에서 멤버를 제거해주는 작업도 추가해줘야 하지 않나 싶은데, 예제기 때문에 단순화하기 위해 생락햐신건가요? private void changeTeam(Team team) { this.team = team; team.getMembers().add(this); // add()로 추가는 했지만, 기존의 팀에서 제거하는 코드는 없음 }
-
미해결코드로 배우는 React with 스프링부트 API서버
QTodo Class Not found
2024-04-18T17:27:21.633+09:00 ERROR 19504 --- [apiserver] [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.RuntimeException: java.lang.NoClassDefFoundError: org/zerock/apiserver/domain/QTodo] with root causejava.lang.ClassNotFoundException: org.zerock.apiserver.domain.QTodo at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[na:na]package org.zerock.apiserver.repository.search; import com.querydsl.jpa.JPQLQuery; import lombok.extern.log4j.Log4j2; import org.springframework.data.domain.*; import org.springframework.data.jpa.repository.support.QuerydslRepositorySupport; import org.zerock.apiserver.domain.QTodo; import org.zerock.apiserver.domain.Todo; import org.zerock.apiserver.dto.PageRequestDTO; import java.util.List; @Log4j2 public class TodoSearchImpl extends QuerydslRepositorySupport implements TodoSearch { public TodoSearchImpl() { super(Todo.class); } @Override public Page<Todo> search1(PageRequestDTO pageRequestDTO) { log.info("search1........................"); QTodo todo = QTodo.todo; JPQLQuery<Todo> query = from(todo); query.where(todo.title.contains("")); Pageable pageable = PageRequest.of( pageRequestDTO.getPage() - 1, pageRequestDTO.getSize(), Sort.by("tno").descending()); this.getQuerydsl().applyPagination(pageable, query); List<Todo> list = query.fetch(); // 목록 데이터 long total = query.fetchCount(); return new PageImpl<>(list, pageable, total); } } 코드는 잘 따라 친거같은데 getList() 할때마다 QTodo 클래스를 못찾는다고 요류가 뜨네요.... 어떻게 해결할 수 있을까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
update 모드에서 @Column(unique = true) 추가 시 변경 적용 안
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]update 모드에서 기존엔티티에 @Column(unique = true) 를 사용한다음 재시작을 했는데, 변경 사항이 h2에 적용이 되지 않습니다.그런데 @Column(name="username", unique=true) 를 하니 이번에는 ALTER 쿼리가 나가서 name과 unique 변경사항이 db에 적용이 됩니다.update 모드에서 @Column(unique = true) 를 했을때 적용이 되지 않고 @Column(name="username", unique=true) 이렇게 해야만 적용이 되는 이유를 알 수 있을까요?
-
미해결코드로 배우는 React with 스프링부트 API서버
섹션2 강의에 RootConfig와 ModelMapper과 관련된 내용은 없나요?
안녕하세요. 섹션2 RootConfig라는 클래스가 없다가 마지막 강의에서 보이던데 아무 언급이 없어서 질문 드립니다. 섹션2 pdf에는 RootConfig와 ModelMapper에 대해 언급되어 있던데 거기 있는 내용만 보고 넘어가면 되나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
개인으로 따로 연습하려고 프로젝트 생성해봤는데
자꾸 오류가 뜨는데 무슨이유 일까요 ㅠㅠ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
16:29초 order와 order_item 사이 연관관계 주인
16:29초에 order_item에서 order가 연관관계 주인이 된다고 하셨는데 order_item 엔티티 클래스 안에 보면 ```java@JoinColumn(name = "order_id") private Order order;```@JoinColumn을 한 order 외래키를 가진 order_item이 연관관계 주인 아닌가요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
h2 네트워크 접속시 에러가 납니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]어제까지 접속이 잘 됐었는데 갑자기 안되네요db파일은 생성이 잘 되는데네트워크로 접속하려고 하면 아래의 에러가 나면서 파일에 바로 접속하는 화면으로 바뀌어요 h2 삭제했다가 다시 깔아도 똑같고, 구글링해도 딱히 해결방안이 보이지 않습니다Connection is broken: "java.io.EOFException: localhost" [90067-214] 90067/90067 (도움말)org.h2.jdbc.JdbcSQLNonTransientConnectionException: Connection is broken: "java.io.EOFException: localhost" [90067-214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) at org.h2.message.DbException.get(DbException.java:212) at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:437) at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:325) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:122) at org.h2.util.JdbcUtils.getConnection(JdbcUtils.java:288) at org.h2.server.web.WebServer.getConnection(WebServer.java:808) at org.h2.server.web.WebApp.login(WebApp.java:1033) at org.h2.server.web.WebApp.process(WebApp.java:226) at org.h2.server.web.WebApp.processRequest(WebApp.java:176) at org.h2.server.web.WebThread.process(WebThread.java:152) at org.h2.server.web.WebThread.run(WebThread.java:101) at java.base/java.lang.Thread.run(Thread.java:1583)Caused by: java.io.EOFException at java.base/java.io.DataInputStream.readFully(DataInputStream.java:210) at java.base/java.io.DataInputStream.readInt(DataInputStream.java:385) at org.h2.value.Transfer.readInt(Transfer.java:270) at org.h2.engine.SessionRemote.done(SessionRemote.java:603) at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:148) at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:433) ... 10 more
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
객체로 만들때 클래스 질문있습니다!
user 부분에서 dto로 UserCreateRequest 클래스를 만들어서 필드 와 getter 만들었는데 객체로 만들때 또 User를 만드는 이유가 뭘까요? 그냥 dto에 UserCreateRequest 클래스에서 User클래스에 있는 코드인public User(String name, Integer age) { if (name == null || name.isBlank()) { // name이 null 이거나 공백이나 비어있을경우 throw new IllegalArgumentException(String.format("잘못된 name(%s)이 들어왔습니다", name)); } this.name = name; this.age = age; }이 부분을 추가해서 사용하면 안되는 건가요? 굳이 User 클래스를 만드는 이유를 모르겠습니다 ㅠ 객체로 만드는거라면 DTO 에서 하면 안되는지,,초보라서 궁금합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트시 오류 발생 해결법에 대한 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.=====================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]앞서 질문한 학생들의 질문들과 구글링을 진행해봤지만 해결되지 않아 질문 남깁니다.먼저 강의를 따라 쭉 타이핑을 했는데 Junit4 를 사용하여 테스트를 만들고 진행해 봤고, 테스트가 안되어서 build.gradle와 MemberRepositoryTest 등을 번갈아가면서 수정해봤지만 어떤것이 문제인지 모르겠습니다.파일 링크 남겨드립니다.https://drive.google.com/file/d/1EsGR5F0YDa1G97u5616ZM8JeYwWZYjQr/view?usp=sharing
-
미해결코드로 배우는 React with 스프링부트 API서버
2장 router ch02_start폴더를 따로 만들고 시작해야 하는건가요?
2장 보는데 ch02_start 폴더를 하나 생성하고 시작하신건가요..???
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
객체를 테이블에 맞추어 모델링 할때
[질문 내용]안녕하세요강의 진도를 약 40% 가량 나가다가 다시 처음부터 듣는 와중에 이번 강의에서 궁금증이 생겨 질문드립니다.객체와 관계형 DB의 차이중 2번의 연관관계에서"객체를 테이블에 맞추어 모델링"했다고 하셨는데 이게 객체다운 모델링이 아닐 수 있다는건 이해가 갑니다. 그런데 일부러 객체를 테이블에 맞추어 모델링하는 경우가 있나요? 아래와 같이 Member형 필드를 쓰는게 아니라 일부러 id를 쓰는 경우가 있을지 궁금합니다 @Entity class Team { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne Member member; }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
H2 데이터베이스는 잘 연결되는데, 14:03 MEMBER 테이블이 생성되지 않아요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]테스트를 실행하면 로그는 이렇게 찍힙니다.WARNING: A Java agent has been loaded dynamically (/Users/esyoleo/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy-agent/1.14.12/be4984cb6fd1ef1d11f218a648889dfda44b8a15/byte-buddy-agent-1.14.12.jar)WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warningWARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more informationWARNING: Dynamic loading of agents will be disallowed by default in a future release 어떻게 하면 좋을까요? JUnit은 4를 사용중이고, 필요한 설정은 build.gradle, yml 등에 모두 작성한 상황입니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
글삭제시 질문입니다!
현재 코드를 치면서 강의를 따라가다보니 강의가 안들어와서강의에 집중하려고 코드를 미리 받고 진행을 하고있는데요.보시다시피 삭제하면 위의 내용처럼 user_loan_history 테이블이 존재하지않다 라고 되어있습니다.몬가 먼저 제가 코드를 받아서 db 쪽에 user_loan_history 테이블을 참조하는것같은데...궁금한점이 소스내에 어디에서도 user_loan_history 을 찾아도 해당내용이없는데 어떻게 해당 테이블을 참조하는건가요
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
임베디드 모드(메모리 모드)
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.3장의 14페이지의 부분입니다. 위의 url의 방식을 사용하면 임베디드(메모리 모드)로 동작한다고 적혀있습니다.그런데 db의 모드를 공부하다 보니 궁금증이 생겨 질문드립니다. db 모드에는 3가지 모드가 있습니다.server mode는 url: jdbc:h2:tcp://localhost/~/myShopProject이런 url 예시가 있으며 tcp 방식을 통해 네트워크 통신을 이용하여 서버의 디스크에 저장하는 것으로 이해했습니다.위의 경우는 localhost이므로 저의 로컬 컴퓨터의 디스크에 저장될 것 같습니다.만약 위의 localhost가 다른 ip라면 그 ip의 디스크에 저장될 것 같습니다. 임베디드 모드(Embedded Mode)는jdbc:h2:<databasePath> 이런 url 예시가 있으며 위의 경우는 데이터 베이스가 애플리케이션과 함께 하나의 프로세스 내에서 실행합니다.위의 databasePath에 데이터페이스 파일이 저장됩니다.로컬 컴퓨터의 애플리케이션에서 실행되므로 tcp 통신은 발생하지 않습니다. 인메모리 모드(In-Memory Mode)는jdbc:h2:mem:mydb 이런 url 예시가 있으며 위의 경우에는 데이터베이스가 메모리에만 저장되고, 따라서 파일의 경로를 지정할 필요가 없습니다.이렇게 하면 데이터베이스가 메모리에만 생성되며 디스크에 저장되지 않습니다. 그런데 위의 교재에서는 임베디드 모드는 위처럼 메모리 모드로 동작하는 기능이라고 설명해주고 있습니다. 하지만 제가 공부했던 임베디드 모드는 파일의 경로를 지정해서 영구히 저장해 주는 것으로 알았습니다.위의 임베디드 모드에 대한 설명이 잘 이해가 되지 않았습니다.=================================================================================정리하자면->jdbc:h2:mem:db 이므로 인메모리 모드로 동작하는 H2 데이터 베이스이다. 라고 바꿔야 하지 않을까요..? 임베디드 모드(메모리 모드) 라는 표현이 잘 이해가 안된다 -> 두개는 별개의 모드로 이해하고 있습니다. (메모리 모드와 인메모리 모드가 같은 의미라고 이해하고 있습니다.) + 위의 임데디드 모드에 대한 정의와 설명이 잘 이해되지 않았습니다. 좀 설명이 중구난방하고 제가 학습이 부족하여 잘 이해하지 못한 것 같습니다! 설명해주시면 감사하겠습니다!!
-
해결됨코드로 배우는 React with 스프링부트 API서버
섹션7에 이름 없는 강의가 2개 있는데 오류인가요?
눌러봐도 강의 재생이 되진 않네요.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
1:N 을 N:1로 바꿔 페이지네이션을 할 시 데이터 개수를 어떻게 기대한 1쪽에 맞출 수 있을지 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.1:N 관계에서 1을 기준으로 페이지네이션 조회에 대해 질문드립니다.강의에서는 N을 기준으로 조회lazy loading을 이용한 성능을 포기한 조회@BatchSize를 이용한 방법 이 세 가지가 제안되었습니다.만약 이 페이지네이션에서 강의 초반부 예시처럼 N쪽에 조건문이 걸려야 해서 그에 대한 결과물을 가져와야 하는 경우E.g. where m.age = 10 1번 방법으로 조회를 해야할 것 같은데1번 방법에서 N:1임에도 1 입장에서 페이지네이션 개수 그대로 데이터를 추출할 수 있는 방법이 떠오르지 않아 질문드립니다. N:1로 바꿔서 PAGE_SIZE를 10이라고 가정할 때 조회 (memberId가 10개가 나온다) teamId:1, memberId:1 teamId:1, memberId:2 teamId:1, memberId:3 teamId:2, memberId:4 teamId:2, memberId:5 teamId:2, memberId:6 teamId:2, memberId:7 teamId:3, memberId:8 teamId:3, memberId:9 teamId:3, memberId:10 실제 기대하는 조회 (team 이 10개가 나오기를 기대) teamId:1, memberId:1 teamId:1, memberId:2 teamId:2, memberId:3 teamId:2, memberId:4 teamId:3, memberId:5 teamId:3, memberId:6 teamId:4, memberId:7 teamId:5, memberId:8 teamId:5, memberId:9 teamId:5, memberId:10 teamId:6, memberId:11 teamId:6, memberId:12 teamId:7, memberId:13 teamId:7, memberId:14 teamId:8, memberId:15 teamId:8, memberId:16 teamId:8, memberId:17 teamId:9, memberId:18 teamId:9, memberId:19 teamId:10, memberId:20 teamId:10, memberId:20
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
H2 url을 찾을 수 없다고합니다.
Caused by: java.lang.RuntimeException: Driver com.mysql.cj.jdbc.Driver claims to not accept jdbcUrl, jdbc:h2:tcp://localhost/~/jpashop라고 에러메세지가 뜹니다.apllication.yml대신 properties에 spring.datasource.url=jdbc:h2:tcp://localhost/~/jpashop spring.datasource.username=sa spring.datasource.password= spring.datasource.driverClassName=org.h2.Driverjpa.hibernate.ddl-auto=create jpa.properties.hibernate.format_sql=true logging.level.org.hibernate.SQL=debug logging.level.org.hibernate.type=trace 이렇게 작성했는데 왜 안되는걸까요??
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
기본 키 매핑
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]기본 키 매핑에서 @GeneratedValue 전략으로 IDENTITY, SEQUENCE, TABLE, AUTO의 특징은 이해했습니다. 하지만 어떤 경우에 어떤 전략이 유리할지 모르겠습니다. AUTO를 사용하지 않고 명시적으로 IDENTITY 또는 SEQUENCE 전략을 채택해야하는 경우가 있을까요?