30%
61,600원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
POST 요청시 메서드로 들어오는 BookForm 객체의 생성 주체가 누구인가요?
안녕하세요.코드를 읽어보며 흐름을 파악하다가 궁금증이 생겨 질문 드립니다. public class ItemController { @GetMapping("/items/new") public String createForm(Model model) { model.addAttribute("form", new BookForm()); return "items/createItemForm"; } @PostMapping("/items/new") public String create(BookForm form) { ... 생략 } /items/new에 GET으로 접근하면, createForm()이 호출되어 BookForm 객체가 생성되고, Model 객체를 통해 viewResolver로 넘어가는 로직은 이해가 됩니다. 그러나 POST 요청을 보내면, create()가 호출되어 BookForm 객체를 인자로 받는데요.이때, 인자로 들어온 BookForm 객체는 GET 요청시 보내준 BookForm 객체와 다른 객체더라구요. 아마 누군가가 HTML input 태그에 입력된 값을 BookForm 객체로 변환시켜 넣어주는 것 같은데요. 누가 이 책임을 갖고, 어떻게 데이터를 객체로 변환시키는지 그 흐름이 궁금합니다. 마치 @ResponseBody에서 HttpMessageConverter가 객체를 JSON으로 변환시켜준 것처럼이번에도 스프링이 HttpMessageConverter를 통해 HTML input 데이터를 객체로 변환시켜 Controller에게 반환시켜 주는 걸까요? 감사합니다.
- 해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
setUsername 관련 질문
흠..멤버레퍼지토리 클래스에사용하고 있는 세터 메서드 이름이setUsername() 입니다.수동으로 setName()으로 바꿀까요?아니면 Member 클래스에 name변수를 username으로 바꿀까요?
- 해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
양방향 연관관계 편의 메소드, 생성 메소드에 대해 질문드립니다.
안녕하세요. 항상 강의 잘 보고 있습니다.https://www.inflearn.com/questions/16235의 답변을 보면 setter를 외부에 노출을줄이기위해Entity의 setter의 사용을 지양하는거로 이해했고, 워낙 복잡하게 엔티티들을 사용하실텐데강의 예제에서 사용하는 Member와 Order, OrderItem의 엔티티를 실무에서 사용하는거처럼 연관관계메소드랑 생성메소드를 임의로 작성해봤습니다.@Entity @Getter public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String name; @OneToMany(mappedBy = "member") private List<Order> orders = new ArrayList<>(); @Builder private Member(String name) { this.name = name; } /== 생성 메소드 == / public static Member createMember(String name) { return Member.builder().name(name).build(); } } @Entity @Getter public class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member member; //주문 회원 @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List<OrderItem> orderItems = new ArrayList<>(); @Builder private Order(Member member) { /== 연관관계 메소드 ==/ this.member = member; member.getOrders().add(this); } /== 생성 메소드 == / public static Order createOrder(Member member) { return Order.builder().member(member).build(); } } @Entity @Table(name = "order_item") @Getter public class OrderItem { @Id @GeneratedValue @Column(name = "order_item_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "order_id") private Order order; //주문 @Builder private OrderItem(Order order) { /== 연관관계 메소드 ==/ this.order = order; order.getOrderItems().add(this); } /== 생성 메소드 == / public static OrderItem createOrderItem(Order order) { return OrderItem.builder().order(order).build(); } } 제가 예제를 실무에서 setter를 제거하고 builder를 사용하는 방법인거처럼 생각하고 바꿔보았는데,연관관계 메소드를 저렇게 변경하는게 맞는방법인가요?@OneToMany를 가진엔티티에서 생성자에 아무것도 안해줘도 되는것인지?아니면 어떻게 setter를 제거하고 연관관계메소드를 정의하시는지 궁금합니다.
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
중복회원예외 test fail
안녕하세요 MemberServiceTest실행 도중에 계속 이러한 에러가 발생하여 질문 드립니다!제 memberservicetest 코드입니다감사합니다!import jpagroup.jpashop.domain.Member; import jpagroup.jpashop.repository.MemberRepository; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; import javax.persistence.EntityManager; import static org.junit.Assert.*; @RunWith(SpringRunner.class) @SpringBootTest @Transactional public class MemberServiceTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Autowired EntityManager em; @Test public void 회원가입() throws Exception { //given Member member = new Member(); member.setName("kim"); //when Long savedId = memberService.join(member); //then assertEquals(member, memberRepository.findOne(savedId)); } @Test(expected = IllegalStateException.class) public void 중복_회원_예외() throws Exception { //given Member member1 = new Member(); member1.setName("kim"); Member member2 = new Member(); member2.setName("kim"); //when memberService.join(member1); try { memberService.join(member2); //예외가 발생해야 한다!!! } catch (IllegalStateException e) { System.out.println("test실패"); return; } //then Assert.fail("예외가 발생해야 한다."); } }
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문취소에서 에러 발생 관련 질문드립니다
상품 주문과 재고 수량 초과에서는 제대로 작동했는데요..(저는 Book 클래스에서 객체 만들어서 작성했습니다..!)
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
질문2개 ) NotEnoughStockException 에러 발생 및 actual: 10 expected: 8
질문 NotEnoughStockException 에러 발생1-1) 재고수량이 초과해서 NotEnoughStockException 예외가 발생한거 맞나요? 맞으면 어떻게 해야할까욤?? NotEnoughStockException 을 주석처리하고 실행하니 2번 처럼 뜹니다.actual: 10 expected: 8 뜹니다. h2테이블도 생성해서 테이블 다시 만들고 해봤는데 실제값하고 기대값이 똑같이 안나오네요..
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
jdk 관련 에러 발생
저 갑자기 잘 되다가 jdk관련 설정을 좀 고쳤는데 메서드나 클래스 다 있는데 이렇게 떠서요ㅜㅜ혹시 뭐가 잘못된건지알수있을가요ㅜㅜ
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
의존성 주입의 개념이 헷갈리는데
예전에 스프링 완전정복 로드맵 강의에서 의존성주입과 함께 @Autowired, @RequiredArgsconstrucor 등을 설명해주셨는데 오래돼서 그런지 개념이 헷갈리는데요어떤 강의를 봐야 이 부분을 확실하게 잡고 넘어갈 수 있을까요 ?
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
fail() 예외를 try -catch로 잡아도 에러 발생
예외를 try -catch로 잡아도 에러 발생하는데이런 경우에는 어떻게 해야할까요?
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
질문 ) 15:00 fail() 사용 했는데 테스트 성공
왜 테스트 성공할까요? import문 다른걸로 바꿔도 성공이 뜨네요
- 해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
20분경에
컨트롤러에서 엔티티를 생성하지 않고update 서비스를 만들어서변경할 값만 dto를 만들던지, 파라미터를 전달하여 서비스에서update를 하셨는데saveItem을 사용하면 merge가 돼서save를 사용하지 않고 update를 만들어서 변경감지를 사용한다는것까진 이해가 됐는데요update를 만들때 왜 꼭 dto를 만들거나 변경할 파라미터만 넘기는건지는 잘 이해가 되지 않습니다.좀 더 명확하게 지정하여 유지보수성을 증가시키기 위함뿐인건가요? 그 외에 merge가 실행됐을때 같은 오류가 생기는건 아닌거죠??그렇게 웹사이트를 만들다보면 dto가 엄청 많이 만들어질거 같은데 그게 맞는건가요?저도 모르게 편의성을 위해 객체 자체를 넘길거 같아서 정확한 이유를 알기 위해 질문드립니다~
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문과 상품(물품)의 관계
"주문" -"상품(물품)" 에서"주문"입장에서 1개의 주문에 여러가지 상품이 있을 수 있으니까 1:N 의 관계고 "상품"입장에선 1개의 상품이 여러가지 주문에 들어갈 수 있으니까 1:N, 서로 1:N 관계니까 다대다 관계 맞나요 ?근데 다대다 관계는 잘 사용하지 않으므로 "주문상품" 이라는 엔티티를 추가함으로서 "주문" - "주문상품" 1: N, "주문상품" - "상품(물품)" N:1 관계로 만들었다는건가요 ?
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
test 오류
org.h2.jdbc.JdbcSQLNonTransientConnectionException: Connection is broken: "java.net.ConnectException: Connection refused: connect: localhost" [90067-214]로그에서 해당 오류가 발생합니다해당 yml 설정입니다h2도 다시 삭제하고 버전을 다시 다운로드 받아도 같은 에러가 뜨네요 ㅠㅠ memberrepositorytest에도 에러가 발생하고 있습니다 https://drive.google.com/file/d/1RAzTzhg_dplS9SvhK1A_-es0XUFsViMu/view?usp=sharing 혹시 몰라서 압축 파일도 올립니다 감사합니다
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
해결완료) readOnly 에러 질문
혼자 해결할려고 memberService, test 등등 다 삭제하고 다시 만들어 봐도 readOnly에서 에러가 떠서 질문드립니다. readOnly 들어가보면 밑에 사진 처럼 뜹니다.빨간색 줄 번역해도 이해가 안되네요 그양 없애도 넘어가도 되는거죠 ? https://aroundlena.tistory.com/66여기 링크대로 하니 해결했습니다~~
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@Embeddable 클라스는 보통 마스터 테이블로 쓰이는건가요?
지속적인 추적이,,필요하지 않을땐 @Embeddable 쓰인다고 하는데 테이블의 대부분 데이터는 고정이고 가끔 한두개의 칼럼만 변경될떄 @Embeddable 쓰나요?
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderService에서 빨간줄 ㅠㅠ
4분쯤에 있는 주문생성 부분입니다비슷한 오류가 import를 잘못해 생긴 것이라는 걸 보고 repository쪽이랑 service쪽을 살펴봤습니다javax... 가 아니라 jpashop.domain의 Order를 import 하고 있는데 왜 그런지 모르겠습니다 ㅠㅠOrder 클래스의 createOrder메소드의 마지막 파라미터가 OrderItem... orderItems인데 강의에서 orderItem이 들어가는 이유도 잘 모르겠어요 ㅠㅠ
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2 데이터베이스 충돌
강의 따라서 h2데이터베이스를 설치하고 실행했긴 했는데원래 있던 mysql이 서버가 중지돼서 혹시 h2와 관련있는지 궁금합니다둘이 충돌됐을수도 있는건가요?
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품주문 과 주문내역 오류가 발생합니다
상품주문하고 Submit 버튼을 누르면 오류가 납니다마찬가지 주문 내역 버튼을 눌러도 오류가 납니다
- 미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Order는 Form을 따로 안만드는 이유
기존에는 Form을 따로 만들어서 화면단이랑 바인딩한 다음에 post에서 Form가져와서 서비스로직에 넣어주는 방식으로 진행했는데 Order도 이렇게 사용해도 무방한데 여러가지를 보여주시려고 저렇게 쓰신건가요?
- 해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문취소 로직이 이해가 안됩니다.
@Transactional public void cancelOrder(Long orderId){ Order order = orderRepository.findOne(orderId); order.cancel(); }OrderService에서 cancel 메서드 실행시 orderItems리스트의 재고가 변경되면서 영속성 컨텍스트 내 변경감지를 통해 update query가 실행된다 이해했습니다. 근데 이 orderItems가 mappedBy 로 설정되어있는데 이 상태에서는 select query만 실행되는것 아닌가요?이 부분때문에 주문취소 로직이 머리에 그려지지 않습니다.