묻고 답해요
138만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! Querydsl
영속성 컨텍스트에서 값을 찾아오지 않음
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]해당 강의 06:09 에 작성된 테스트가 실패합니다.당연히 성공할 것으로 생각한 테스트가 실패하여 원인을 찾아보려 하였으나, 잘 찾아지지 않네요 ㅠ 영속성 컨텍스트 1차 캐시에 있는 member를 가져오지 않고 실제 쿼리를 수행하여 동일한 pk 를 지닌 member를 조회해 가져오는데, Entity Manager 가 clear 될만한 조건이 발견되지 않습니다.직접 디버깅을 따라가보려 하였으나, 이 부분도 쉽지 않네요ㅠㅠ해결할만한 검색 키워드 정도만 주셔도 감사하겠습니다!MemberJpaRepository
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
15강 질문 드립니다!
15강 람다식 질문 드립니다!선생님 안녕하세요!15강에서 작성해주신 람다식이 있는데람다식을 사용하지 않은 코드도 댓글로 알려주실 수 있으실까요~!자바 공부를 시작한 지 얼마 되지 않아서 혼자 해보려 해도 잘 안되네요..! 부탁 드리겠습니다!! 감사합니다!
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderLine, LineItem
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.교재 19페이지에 주문상품에 '보통 OrderLine, LineItem으로 많이 표현한다.' 라고 되어 있는데요, OrderItem이란 이름 대신 OrderLine 을 많이 사용한다는 뜻인가요 ?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
sink로 등록된 topic의 값이 db에 반영되지 않습니다.
sink도 잘 등록되었고, orders topic에 json 값도 잘 전달되지만 전달된 값이 디비에는 반영되지 않아 데이터 삽입이 되지 않습니다. ㅠㅠ무엇이 문제일까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Book 객체가 준영속 엔티티인 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]아래 코드에서 Book 객체는 개발자가 임의로 만든 객체이고 form 객체의 id값은 이미 예전에 JPA가 저장했던 id값이니까 이 id값을 받은 book 객체는 기존 식별자를 가지고 있기 때문에 준영속 엔티티로 보는것인가요?@PostMapping("/items/{itemId}/edit") public String updateItem(@ModelAttribute("form") BookForm form){ Book book = new Book(); book.setId(form.getId()); //form은 이전의 jpa가 db에 저장했으니 form의 id값을 받은 book객체는 준영속 엔티티?? book.setName(form.getName()); book.setPrice(form.getPrice()); book.setStockQuantity(form.getStockQuantity()); book.setAuthor(form.getAuthor()); book.setIsbn(form.getIsbn()); itemService.saveItem(book); return "redirect:/items"; }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
/home 화면이 나오지 않습니다..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 화면이 출력되지 않습니다.... 질문 게시판에 다른 상황들을 보고 오타나 패키지를 잘못 설정했나 다시 보아도 찾지 못하였씁니다.... /home화면이 나오지 않습니다
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
안녕하세요 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. @GetMapping("/api/v1/orders") public List<Order> orverV1() { List<Order> all = orderRepository.findAllByString(new OrderSearch()); for (Order order : all) { // LAZY 강제 초기화 역할 order.getMember().getName(); order.getDelivery().getAddress(); List<OrderItem> orderItems = order.getOrderItems(); orderItems.stream().forEach(o -> o.getItem().getName()); } return all; }orderItem의 item부분 LAZY 초기화 해주는 부분에서 orderItems.stream().forEach에서 stream()빼줘도 결과가 똑같이 나오던데 stream을 넣어주는 이유가 있나요??
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
entitymanagerFactory 오류
Consider defining a bean of type 'jakarta.persistence.EntityManagerFactory' in your configuration.이런식으로 오류가 뜨면서 실행이안됩니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
스프링 부트 시작 오류
강의와 동일하지만 스프링 부트 스타터 홈페이지에서 h2데이터 베이스 대신 mysql을 추가한 것 밖에 없는데 해당 오류가 출력됩니다. 구체적인 오류도 나오지 않아 해결하기가 힘드네요.. 어떤 문제가 있을까요? 압축파일을 풀고 따로 코드를 건드리지 않고 바로 실행을 했을 때 입니다. 추가적으로 자바는 17, 스프링부트는 3.0.5 입니다
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요 7강을 듣다가 질문 드립니다!
선생님 안녕하세요! 7강을 듣다가 아래 분과 같이 주소 페이지 오류가 떠서 질문글 남깁니다!댓글로 <스프링 프로젝트를 시작하는 첫 번째 방법>으로 하라고 하셨는데 강의에는 두 번째 방법만 올라와 있고 첫 번째 방법은 보이지 않네요..! 어디서 확인할 수 있을까요?!
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
illegalException
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) -application.yml[질문내용]h2과 application url 둘 다 jdbc:h2:tcp://localhost/~/jpashop로 했을 때는 MemberRepositoryTest를 실행하면 ILLegalException 이 발생했었는데, url을 jdbc:h2:tcp://localhost/~/test 로 고쳤을때는 정상적으로 작동합니다. 왜 그런지 이유를 알려주실 수 있을까요??
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
일대다 관계에서의 컬렉션 fetch join과 페이징에 대한 질문
안녕하세요. 일대다 관계에서의 컬렉션 fetch join과 관련된 강의를 듣다가 궁금한 점이 생겨 질문 드립니다.강의자료에서 컬렉션 페치 조인을 사용하면 페이징이 불가능한데, 그 이유는 하이버네이트가 경고 로그를 남기면서 모든 데이터를 DB에서 읽어오고, 메모리에서 페이징 해버리기 때문이라고 나와있습니다.(강의에서는 outofmemory 장애로 이어질수 있다고 하셨구요)"컬렉션 페치조인을 사용하면, 일대다의 관계에서 다에 해당하는 데이터를 기준으로 DB의 데이터가 반환되기 때문에, 일에 해당하는 데이터를 기준으로 페이징할 수가 없다." 라는 점은 이해를 했습니다.그런데 컬렉션 페치조인에서 페이징을 사용하던 하용하지 않던, DB에 요청하여 반환받게 되는 데이터(row)의 개수는 동일한 것 아닌가요?결국 이 뻥튀기된 모든 데이터를 중복되지 않게 걸러주는 역할은 JPA가 하는 것이고, 페이징이 필요하다면 걸러진 데이터를 가지고 단순히 반환되는 데이터의 갯수만 정하면 될 것 같은데, 왜 outofmemory 장애가 발생하는지 모르겠습니다.예를들어, 컬렉션 페치조인으로 DB에서 반환된 row의 갯수가 10000개라고 했을 때, JPA는 10000개의 모든 row를 확인하면서 중복된 엔티티가 만들어지지 않도록 걸러낼 것이고, 이는 페이징이 없더라도 수행되는 동작일 것이라고 생각합니다.앞의 제 생각이 맞다면, 걸러진 데이터를 기준으로 페이징을 하면 되지않나요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
데이터베이스 생성한게 약간 복잡해졌습니다ㅠㅠ
==================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]원래는 Item테이블에 book, album, movie가 들어가야 하는데@Inheritance(strategy = InheritanceType.JOINED)를 입력해서 album, book등 테이블이 따로 생성이 되었습니다..그래서 다시 @Inheritance(strategy = InheritanceType.SINGLE_TABLE)로 바꾸고 새로고침해도 변한게 없어서spring.jpa.hibernate.ddl-auto=updatecreate에서 update로 바꾸고 재실행 했더니따로 테이블이 생성된게 남아있고 item에도 들어가 버렸습니다.. 이럴땐 테이블을 따로 삭제하는 방법밖에 없을까요??
-
미해결실전! Querydsl
querydsl 외래키제약조건
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]JPA를 사용하는데외래키를 설정안하고 사용하는 경우가 있을까요? 제 질문은 A테이블 과 B테이블이 부모 자식 관계인데외래키 제약조건을 걸지 않고 사용하는 경우입니다. JPA에선 각 엔티티가 연결고리가 없는 경우입니다A엔티티(B엔티티로 가는 필드없음)B엔티티 (A엔티티로 가는 필드없음)이런식으로
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
IllegalStateException
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니요)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의들으면서 코드를 따라쳐도 안되서 프로젝트 파일 삭제후 강의 자료에 있는 코드들을 복사해서 해도 계속 같은 오류가 나옵니다. 해결방법 알려주시면 감사하겠습니다!
-
해결됨실전! Querydsl
테스트 메서드 이름은 왜 스네이크 인가요??!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요.자바는 보통 카멜케이스를 쓴다고 알고 있고,영한님도 메서드명이나 클래스명에 카멜케이스를 그동안 쓰셨던거 같은데테스트 메서드는 왜 스네이크로 쓰시나요??코드가 달라지는 건 아니지만.. 궁금해서요 전에 영한님이 클라이언트도 다 한국이면 한글로도 쓰기도 한다고 하셨던거같은데..테스트는 스네이크로 쓰는 것이 국룰인가요?!
-
미해결실전! 스프링 데이터 JPA
의존성 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 의존성에 대해 갑자기 헷갈려서 총 4가지 질문드립니다.MemberService에 아래와 같은 메서드(Member findMemberById(Long id))가 있고 PostService(다른 Service 클래스)에서 memberId로 Member를 조회해야 할 일이 있습니다. 이 경우 아래 메서드를 이용하기 위해 PostService 클래스에서 private final MemberService memberService 형태로 멤버변수로 포함한다고 가정하겠습니다.(memberService.findMemberByMember(id) 로 이용하기위해)public Member findMemberById(Long id) { return memberRepository.findById(id) .orElseThrow(() -> new BusinessLogicException(MEMBER_NOT_FOUND)); } Q1) PostService에서 MemberService를 생성자 주입을 통해 받아서 이용할 경우 MemberService의 의존성(예를 들면 MemberRepository 등의 MemberService 클래스에서 사용하는 클래스들)까지 PostService에 포함되는 것일까요? Q2) 의존성이라는게 단순히 생성자 주입으로 받았던 멤버 클래스들 뿐 아니라 내부 메소드에서 매개변수로 받은 클래스가 있다면 이 또한 의존성인가요?(import 로 포함된 클래스들을 모두 의존클래스로 보면 될지, 아니면 내부에서 사용하는 모든 객체를 의존성으로 보면될지 >> 같은 패키지의 경우 import 안하는걸 고려했을때 내부에서 객체로 이용하지만 같은 패키지라 import 안되는걸 고려) Q3-1) Q1의 답변에서 MemberService의 의존성까지 PostService에 포함되는 거라면 PostService에서 Member를 조회하기 위해서는 memberService.findMemberById(id) 로 조회하기 보단 MemberRepository를 주입받아서 memberRepository.findById(id).orElseThrow(() -> new BusinessLogicException(MEMBER_NOT_FOUND)); 형태로 변경하는게 맞을지? Q3-2) Q1의 답변에서 MemberService의 의존성까지 PostService에 포함되는게 아니라면 PostService에서 MemberService가 아닌 MemberRepository로 조회하는게 맞을지? Member 조회가 여러곳에서 사용되고 Member findMemberById(Long id) 메소드의 내용이 여러곳에서 중복되는 걸 생각했을때처음에는 단순히 member 조회가 여러곳에서 일어나고 공통된 내용이 반복되어 MemberService의 findMemberById 로 묶어서 사용하는게 맞다고 생각했는데 의문이 들었고 예전에 의존성은 최대한 줄이라고 하셨던게 생각나서 질문드립니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
test파일의 application.yml 내용 없는경우
test디렉토리의 resouces패키지를 만들고, 그 안에 application.yml 을 생성해서 인메모리모드를 보여주셨습니다.아무 코드가 없는 백지상태여도 인메모리모드로 돌아간다고 하셨는데요, 그래도 내용만 빌 뿐이지, 인메모리 환경을 위해서는 꼭 application.yml파일이 test디렉토리의 해당경로에 존재해야하는게 맞나요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
em.remove 동작 안함 이유?
Member.classpackage dev.devpool.domain; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "MEMBER_ID") private long id; @OneToMany(mappedBy = "member", cascade = CascadeType.ALL) List<Child> children = new ArrayList<>(); public List<Child> getChildren() { return children; } public void setChildren(List<Child> children) { this.children = children; } private String name; private String nickName; private String email; private String password; public Member() { } public Member(String name, String nickName, String email, String password) { this.name = name; this.nickName = nickName; this.email = email; this.password = password; } public long getId() { return id; } public void setId(long id) { this.id = id; } public void setName(String name) { this.name = name; } public String getName() { return name; } public String getNickName() { return nickName; } public void setNickName(String nickName) { this.nickName = nickName; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } Child.classpackage dev.devpool.domain; import javax.persistence.*; @Entity public class Child { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; @ManyToOne @JoinColumn(name = "MEMBER_ID") private Member member; public long getId() { return id; } public void setId(long id) { this.id = id; } public Member getMember() { return member; } public void setMember(Member member) { this.member = member; } }로 부모를 Member 자식을 Child로 만들고 delete 시 cascade가 적용되는지를 체크하려 하였습니다. MemberRepository에서 delete 쿼리를 아래와 같이 작성하였습니다.Test 코드는 아래와 같습니다.@Test public void ss() { Member member = new Member(); member.setName("김우"); member.setEmail("rereers15@naver.com"); member.setPassword("taeu4"); member.setNickName("귀요미"); Child child = new Child(); child.setMember(member); member.getChildren().add(child); memberService.join(member); em.flush(); em.clear(); System.out.println("================"); memberService.delete(member.getId()); System.out.println("================"); } SQL 하지만 em.remove 부분이 동작하지 않습니다.이유가 무엇인가요? ** save메서드에서 저장 후 remove()를 하는 것을 실험해보았는데 이 경우는 delete 쿼리까지 정상 출력됩니다. 영속성 컨텍스트와 @Transaction과 관련된 이슈인 것같은데 이와 관련해서 설명해주시면 감사하겠습니다.
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
415 오류가 자꾸 발생합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] Postman에서 send를 해도 아래와같은 오류가 발생하며 실행되지 않습니다. Headers에서 Context-Type이 분명 application/json인데 뭐가 문제일까요 x-www-form-urlencoded로 변경하고 Context-Type도 이와 같이 변경한 후에 @RequestBody를 지우면 데이터가 잘 들어오는 것을 확인할 수 있었습니다. 2023-03-29 19:41:13.746 WARN 13008 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json;charset=UTF-8' not supported]2023-03-29 19:41:13.780 WARN 13008 --- [nio-8080-exec-1] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation]아래는 제 코드와 헤더입니다.