묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강의에서 테스트 코드에서 insert 쿼리문이 발생합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.JUnit5 로 진행하고 강의에서 내용 그대로 작성을 하였는데, insert 쿼리문이 발생했습니다..8:54 초 내용에서 @Transactional 어노테이션을 붙이면 자동으로 롤백해버리기 때문에 DB에 insert를 날릴 이유가 없다고 하셧는데.. 왜이러는걸까요..ㅠㅠ h2 데이터베이스를 사용한 것이 아닌 mysql 데이터베이스를 연결하였지만 그거 말고 다른 설정들은 다 동일하거든요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품 수정이 안되네요.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]상품 수정하기 버튼누르면 아래와 같이 에러페이지로 연결됩니다.아이템컨트롤러는 아래와 같고 updateItemForm.html의 경로는 (\jpashop\src\main\resources\templates\items\updateItemForm.html)인데 왜 안되는걸까요?package jpabook.jpashop.controller; import jpabook.jpashop.domain.item.Book; import jpabook.jpashop.domain.item.Item; import jpabook.jpashop.service.ItemService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import java.util.List; @Controller @RequiredArgsConstructor public class ItemController { private final ItemService itemService; @GetMapping("/items/new") public String createForm(Model model) { model.addAttribute("form", new BookForm()); return "items/createItemForm"; } @PostMapping("/items/new") public String create(BookForm form) { Book book = new 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:/"; } @GetMapping("/items") public String list(Model model) { List<Item> items = itemService.findItems(); model.addAttribute("items", items); return "items/itemList"; } @GetMapping("/items/{itemId}/edit") public String updateItemForm(@PathVariable("itemId") Long itemId, Model model) { Book item = (Book) itemService.findOne(itemId); BookForm form = new BookForm(); form.setId(item.getId()); form.setName(item.getName()); form.setPrice(item.getPrice()); form.setStockQuantity(item.getStockQuantity()); form.setAuthor(item.getAuthor()); form.setIsbn(item.getIsbn()); model.addAttribute("form", form); return "items/updateItemForm"; } @PostMapping("/items/{itemId}/edit") public String updateItem(@PathVariable Long itemId, @ModelAttribute("form") BookForm form) { itemService.updateItem(itemId, form.getName(), form.getPrice(), form.getStockQuantity()); return "redirect:/items"; } }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계에 대해서 궁금한 점
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기서는 물리적으로, 논리적으로도 연관관계를 맺지만, 이렇게 물리적으로 연관관계를 맺을 시에 잘못하다 실수로 삭제를 했을 경우 발생하는 문제나, 속도적인 측면에서도 물리적으로 연관관계를 맺는 것은 좋지 않다(?) 라고 들은 적이 있습니다. 물론 연관관계를 직접 이렇게 맺는 것은 편하긴 하지만 실수로 발생하는 문제이나, 불 필요한 쿼리 문제(?) 를 해결하기 위해서 직접적인 연관관계를 맺지 않고 PK 값만 안 상태로 수동으로 다른 테이블 값을 찾는데, 그렇게 되면 굳이 불 필요한 쿼리문제도 해결이 가능하고, 실수로 삭제하는 것도 방지할 수 있어서 좋다고 생각을 합니다. 혹시 실무에서는 강의처럼 물리적, 논리적으로도 다 연관관계를 항상 맺는 건가요?
-
해결됨PWA 시작하기 - 웹 기술로 앱을 만들자
수업에서 안내한 리포지토리를 공개로 바꿨습니다. 접근 권한 신청 안하셔도 돼요 - 강사 안내사항
신청 안하셔도 됩니다 :)
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품주문() 테스트에서 주문가격이 에러가 뜨는데, 어딜 봐야할 지 모르겠어요.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]OrderServiceTest의 상품주문() 테스트에서 아래의 테스트가 에러가 뜨는데요.assertEquals(10000 * orderCount, getOrder.getTotalPrice(), "주문 가격은 가격 * 수량이다.");Expected :20000Actual :0 실제 20000이 아닌 0으로 반환되는데, 어디를 봐야할까요?Order클래스의 getTotalPrice()메소드에서orderItem.getOrderPrice()는 10000을 잘 반환하는데요totalPrice는 0으로 자꾸 반환하네요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강의 질문있습니다.
앨범 클래스 파일에는 아래와 같은 에러가 나옵니다.(3번째 사진)Persistent entity 'Album' should have primary key코드입니다.package jpabook.jpashop.domains.Item; import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; //import javax.persistence.*; @Entity @DiscriminatorValue("A") @Getter @Setter public class Album { private String artist; private String etc; }OrderItem 클래스 파일에는 아래와 같은 에러가 나옵니다.(2번째 사진)'Many To One' attribute type should not be 'Item'코드입니다.package jpabook.jpashop.domains; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.Entity; import jpabook.jpashop.domains.Item.Item; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import jakarta.persistence.*; @Entity @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class OrderItem { @Id @GeneratedValue @Column(name = "order_item_id") private Long id; // @ManyToOne(fetch = LAZY) @ManyToOne @JoinColumn(name = "item_id") private Item item; @JsonIgnore // @ManyToOne(fetch = LAZY) @ManyToOne @JoinColumn(name = "order_id") private Order order; // private int orderPrice; //주문 가격 // private int count; //주문 수량 }카테고리 클래스 파일에는 아래와 같은 에러가 나옵니다.(1번째 사진)'Many To Many' attribute value type should not be 'Item'코드입니다.package jpabook.jpashop.domains; import jakarta.persistence.*; import jpabook.jpashop.domains.Item.Item; import lombok.Getter; import lombok.Setter; //import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity @Getter @Setter public class Category { @Id @GeneratedValue @Column(name = "category_id") private Long id; private String name; @ManyToMany @JoinTable(name = "category_item", joinColumns = @JoinColumn(name = "category_id"), inverseJoinColumns = @JoinColumn(name = "item_id")) private List<Item> items = new ArrayList<>(); // @ManyToOne(fetch = LAZY) @ManyToOne @JoinColumn(name = "parent_id") private Category parent; @OneToMany(mappedBy = "parent") private List<Category> child = new ArrayList<>(); // //==연관관계 메서드==// // public void addChildCategory(Category child) { // this.child.add(child); // child.setParent(this); // } } 강의를 여러번 들어도 틀린부분은 없는데 에러가 나오는게 이해가 되지 않아 코드 올립니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberRepositoryTest실행중 에러가 났습니다
프로젝트 입니다https://drive.google.com/file/d/1v6JLNNmmTBQuH3zuJU1CXzh18yvC3xwG/view?usp=drive_link에러는 다음과 같습니다.
-
미해결프로젝트로 배우는 Vue.js 3
numberOfPages 결과 nan
const numberOfPages = computed(() => {return Math.ceil(Number(numberOfTodos.value)/limit)}); 이 부분에서 NaN 에러가 납니다.혹시나해서 강사님 깃허브 소스 들고와서 복붙해도 똑같이 그러네요.페이징 마지막 34번 깃허브 소스도 붙여넣기 해보니 아예 리스트가 안 나오는 현상이 발생합니다.(데이터는 잘 불러옵니다.)뭐 때문에 그러는걸까요? 소스 확인 부탁드립니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
isEmpty(), NPE
private void validateDuplicateMember(Member member) { //중복 회원 검증 List<Member> findMembers = memberRepository.findByName(member.getName()); if(!findMembers.isEmpty()){ throw new IllegalStateException("이미 존재하는 회원입니다."); } }중복 회원 검증 메서드에서 위의 코드는 test 돌릴 때 제대로 작동하는데 아래 코드처럼 if문의 조건을 바꾸면 test가 fail합니다..!리스트가 null일 경우 isEmpty() 호출 시 NPE가 발생하기 때문에 가급적 null인지 여부도 함께 확인하라는 글을 본적이 있어서 아래처럼 작성한 것인데, 왜 에러가 나는 건지 궁금합니다!private void validateDuplicateMember(Member member) { //중복 회원 검증 List<Member> findMembers = memberRepository.findByName(member.getName()); if(!findMembers.isEmpty() || findMembers!=null){ throw new IllegalStateException("이미 존재하는 회원입니다."); } }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품주문_재고수량초과 테스트 로직 junit5 로 했을때 이렇게 코딩하는것 맞나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.@Test public void 상품주문_재고수량초과() throws Exception { //given Member member = createMember(); Book book = createBook(); //when assertThatThrownBy(() -> orderService.order(member.getId(), book.getId(), 15)) .isInstanceOf(NotEnoughStockException.class) ; }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
양방향 연관관계시 연관관계 편의 메소드
1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.위 테이블을 보면 Order는 Member, Delivery, OrderItem과 양방향 연관관계이므로 Order 클래스에 연관관계 편의 메소드를 작성했으며, Categroy는 category_item과 양방향 연관관계이므로Category 클래스에 연관관계 편의 메소드를 작성한 것으로 이해했습니다. 그럼 만약ORDERS와 ORDER_ITEM , ITEM 모두가 양방향 연관관계즉, 모든 테이블이 양방향 연관관계라면,어느 클래스에서 연관관계를 작성하면 될까요? 비즈니스적으로 몰리는 엔티티에 작성하면 되는지,아님 애초에 이런 상황이 발생하지 않도록 ORDER_ITEM 과 같은 테이블을 추가해서 단방향 연관관계를 만드는 게 더 좋을까요?
-
미해결PWA 시작하기 - 웹 기술로 앱을 만들자
권한 부탁드립니다.
인프런 아이디 : kj94gakt@naver.com인프런 이메일 : kj94gakt@naver.com깃헙 아이디 : shdong@tanso.life깃헙 Username : seunghyeonD
-
미해결[웹 개발 풀스택 코스] 포트폴리오 - 제품 판매 미니 웹 앱 개발
EditView 파트 관련 질문드립니다
EditView.vue 파일에서 undefined로 수정 데이터값을 못 읽어오는데 최신버전 vue-route 문제인거 같은데 공식 문서를 읽어보고 나름 수정을 해봤는데도 오류를 잡을 수 없어서 질문 드립니다.
-
미해결프로젝트로 배우는 Vue.js 3
todos 질문입니다.
todos 에 내용이 없을 때 화면에 []이 표시됐었는데, 마지막에 내용을 지워도 화면에 []이 표시되지 않네요?? 어떤 로직때문에 화면에 todos가 없어도 []가 표시되지 않는걸까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 편의메서드 개인질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 있긴한데 좀 다릅니다3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]연관관계 편의메서드와 관련된 질문입니다.public void setMember(Member member) { this.member = member; member.getOrders().add(this);}public void addOrderItem(OrderItem orderItem) { orderItems.add(orderItem); orderItem.setOrder(this);}public void setDelivery(Delivery delivery) { this.delivery = delivery; delivery.setOrder(this);}공부하던 도중 일대다, 다대일, 일대일 연관관계 매서드가 모두 다른 것을 발견했습니다. 제 궁금증은 다대일에서는 왜 meber.getOrders().add(this)로 세팅하고 일대일이나 다대일에서는 orderItem.setOrder(this)로 세팅하는지 궁금한 것 입니다.커뮤니티에 관련 질문을 찾던 도중 jpa 기본편을 보시라고 하셨는데 위치를 못 찾겠습니다. 알려주시면 감사하겠습니다.추가로 제가 자바의 List의 메소드에 대한 이해가 부족해서 모르는가 싶기도 한데 그게 맞을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2 org.hibernate.orm.jdbc.bind: trace관련 질문
강의 보았을때 org.hibernate.orm.jdbc.bind: trace을 추가하면 insert 구문을 트레이스에서 볼 수 있었는데 제가 하니까 다른 형태로 나와서 질문 남깁니다.이것은 왜 그런 것일까요?혹시모르니 yml파일 내용도 첨부해 봅니다.spring: datasource: url: jdbc:h2:~/jpashop username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: # show-sql: true format_sql: true logging: level: org.hibernate.orm.jdbc.bind: trace org.hibernate.SQL: debug
-
해결됨프로젝트로 배우는 Vue.js 3
작동은 되긴 하는데 해당 메세지는 왜 뜨는걸까요?
(사진)
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2 에 저장이 안 되는 거 같은데 문제가 무엇일까요??
안녕하세요! 강의를 수강하고 있는 수강생입니다. 홈페이지는 정상 작동이 되는데, h2에 mbmer가 저장이 되지 않습니다. 뭐가 문제인지 알 수 있을까요?<MemberFormController>
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Domain model패턴에서 생성메서드 로직 구현시 setter문제 질문있습니다.
이 부분이 생성메서드 부분인데요..대부분 setter를 사용하여 서비스계층에서 해야 할 로직을 엔터티 내에서 처리하고 있는데영한 선생님께서 강조하시는 setter를 열어두지 않는다면(필요에 따라서는 열어두라고 하셧는데...) 어떤식으로 처리하는지 도저히 감이 잡히지 않네요..ㅜ 이 부분 설명해주시는 강의 챕터가 따로 있을까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
javax.validation
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.전체 코드: https://github.com/StrawberryRabbit0623/Spring_study/tree/section7_halt스프링 3.2.2 버전으로 강의를 따라하고 있습니다. 스프링 버전 2.x 에서는 아래 starter-validation이 기본으로 지원된다고 알고있습니다. 그런데 문제는 아래 implementation을 작성해도, javax.validation이 인식되지 않습니다. implementation 'org.springframework.boot:spring-boot-starter-validation' 아래 jakarta implimentation 혹은 javax 는 javax.validation을 가능케 해주지만, 정작 @Valid가 전혀 작동하지 않습니다. 정확히는, 회원가입 시 이름란을 비우고 가입해도 전혀 문제 없이 홈페이지로 복귀합니다. 혹시나 하여 @NotBlank로 바꾸어보았지만 여전합니다. implementation 'jakarta.validation:jakarta.validation-api:2.0.2'implementation 'javax.validation:validation-api:2.0.1.Final'종속성, 코드, 아니면 그 외의 어떤것이 문제인지 모르겠어 질문남깁니다..