묻고 답해요
163만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
jpa 업데이트 해도 hibernate가 생성 되지 않습니다.
강의 따라 코끼리 모양을 눌렀는데 external libraries에 hibernate도 안뜨고 그래서 그런지 member클래스 위에 Entity도 사용하지 못 합니다
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
강제초기화 후, hibernate5Module 미주입시 오류에 대해
@SpringBootApplication public class JpashopApplication { public static void main(String[] args) { SpringApplication.run(JpashopApplication.class, args); } //@Bean // Hibernate5Module hibernate5Module() { // Hibernate5Module hibernate5Module = new Hibernate5Module(); // return hibernate5Module; // } }hibernate5Module을 의존성 추가하지 않고강제초기화를 해보았는데 오류가 나더라구요.강제 초기화를 했고 sql문은 나갔을텐데 오류가 나는게 의아하더라구요.@GetMapping("/api/v1/simple-orders") public List<Order> ordersV1() { List<Order> all = orderRepository.findAllByString(new OrderSearch()); for (Order order : all) { order.getMember().getName();//강제 초기화 order.getDelivery().getAddress(); } return all; }디버깅을 해보았는데Member와 Delivery의 sql이 나가고return에서 오류가 나더라구요.order->프록시->영속성컨택스트로 이어지고강제초기화를 해서 Member와 Delivery는 영속성 컨택스트에 담겼지만return에서 Order의 Member와 Delivery에는 프록시값이 가리키는 영속성컨택스트가 아닌, 프록시까지만 json으로 변환하기때문에 오류가 난다고 생각하는게 맞는 걸까요?그리고 그 프록시를 영속성컨택스트로 바꿔서 변환해주는게 hibernate5Module의 역할이라고 보면 될까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
sql문
findById 함수에서 select * from member where id = ? 라는 sql 문이 나오는데 위 sql문에서 ?는 무슨 조건을 뜻 하는 조건 인가요??
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
cmd창에서 build시 에러
안녕하세요인텔리제이에서 실행시에는 오류 없이 잘 작동하는데cmd창에서 gradlew build 입력후 빌드 진행하면 아래와 같은 에러가 뜹니다자바 버전 관련 에러인 것 같아서 설정도 모두 바꿔보고 아예 스프링 프로젝트도 삭제해서 java11로 다시 만들어도 동일한 오류로 빌드가 안되고 있습니다아래는 인텔리제이 설정입니다. 자바 버전입니다프로젝트 dir입니다스프링 프로젝트 다시 만들어도 안돼서 idea 파일 지우고 다시 재실행해보았는데도 안되네요..인텔리제이에서는 잘 실행되지만 cmd빌드시에만 해당 오류가 뜨는게 답답해서 문의글 올려봅니다감사합니다
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
서비스 로직에서 saveAndFlush 질문입니다.
안녕하세요. 먼저 알차고 좋은 강의 만들어 주셔서 감사하단 말씀을 드리고 싶습니다 ㅎㅎ 강의를 보다보니 서비스 로직에서 saveAndFlush 를 해주고 있는데 @Transactional 어노테이션이 있어서 디비에 반영이 잘 될거 같은데 saveAndFlush 를 해주는 이유가 따로 있을까요?그리고 저는 보통 save 를 사용했는데 saveAndFlush 를 사용하는 다른 특별한 이유가 있는지 궁금합니다.
-
해결됨실전! 스프링 부트와 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를 제거하고 연관관계메소드를 정의하시는지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
main문 실행
Spring Project 처음 open해서 열었는데 위와 같이 경로를 찾을 수 없다고 나옵니다 ㅠㅠ 또 강의에서 main문 실행하는 초록색 커서가 나타나지 않습니다.
-
미해결
JAVA class객체 사용 시 에러 질문입니다
수강 중인 강의와 완전 똑같게 하고 몇 번을 봐도 오타는 없는 것 같은데 x에 대입하는 부분에서 자꾸 에러가 나네요.강의가 구버전이라 그사이 업데이트가 된건지 구글링을 어떻게 해야 될지도 모르겠네요 도와주세요. 선배님들!
-
미해결실전! 스프링 부트와 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("예외가 발생해야 한다."); } }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의가 너무 맥 위주라서 힘드네요..
솔직히 현업 들어가면 노트북으로 개발하는 거 아닌 이상 다 윈도우로 개발 할 건데.. ㅠ 회사에서 맥지원해주지 않는 한엔..윈도우는 경로를 어떻게 들어가야 하는 건가요..?맥에선 ll쓰고 뭐쓰면 되는데..윈도우는 따로 뭘 해야 하는 건가요?강의가 너무 맥 위주라서 막히지 않아도 될 곳에서 막히는 것 같습니다.. 혹시 앞으로 다른 결제해서 보는 것들도 다 맥 위주인가요..?단축키도 그렇고.. 사용법도 그렇고.. 보통은 윈도우 개발 환경에서 배우지 않나 싶습니다.. 해외사람이면 몰라도요..강의를 위해서 제가 맥을 구비해야 하는 걸까요-_-;; 아니면 윈도우 설명이라도 좀 해주셔야 하는 거 아닌지.. 이럴때마다 죄송한 말이지만 너무 스트레스 받습니다 ㅜㅜ 그래도 강의는 너무 재미있게 잘 보고 있습니다 ㅠ 기분 상하셨다면 죄송합니다.
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
array,plus(...) 에 대한 질문입니다 ㅎ
안녕하세요 좋은강의 감사합니다.제가 잘못한건지, array.plus(300)후 foreach 를 활용해 프린트를하여도 300이라는 값은 안나오더라구요..plus 확장함수를 살펴보니 새로운 객체를 copy 하여 return 해주던데,새로운 객체로 return 받아서 활용해야하지 않나요?예를 들어 val newArray = array.plus(300) 이런식으로요제가 잘못 생각한 것인지..ㅜㅜ별거아닌거 같긴한데 확인가능하실까요 ㅎ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
의존성 주입의 개념이 헷갈리는데
예전에 스프링 완전정복 로드맵 강의에서 의존성주입과 함께 @Autowired, @RequiredArgsconstrucor 등을 설명해주셨는데 오래돼서 그런지 개념이 헷갈리는데요어떤 강의를 봐야 이 부분을 확실하게 잡고 넘어갈 수 있을까요 ?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
OrderQueryRepository를 따로 만드는 이유
controller가 repository를 참조하게 되어서라고 하셨는데 ㅌ제가 배경지식이 없어 ㅠㅠ잘 이해가 가지 않습니다.. 조금더 구체적으로 설명 가능할까요?왜 controller가 repository를 참조하게 되는지 이해가 되지 않습니다.OrderQueryRepository를 따로 떼어내면 1번의 문제가 왜 해결되는지요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
fail() 예외를 try -catch로 잡아도 에러 발생
예외를 try -catch로 잡아도 에러 발생하는데이런 경우에는 어떻게 해야할까요?
-
해결됨실전! 스프링 부트와 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 - 웹 애플리케이션 개발
@Embeddable 클라스는 보통 마스터 테이블로 쓰이는건가요?
지속적인 추적이,,필요하지 않을땐 @Embeddable 쓰인다고 하는데 테이블의 대부분 데이터는 고정이고 가끔 한두개의 칼럼만 변경될떄 @Embeddable 쓰나요?
-
미해결스프링 시큐리티
SecurityFilterChain 으로 하시는 분들께 제코드 공유해요!
혹시 더 나은 방식이 있다면 같이 공유해요!! 다들 화이팅하세요!@Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/").permitAll() .antMatchers( "/css/**", "/js/**", "/images/**", "/webjars/**", "/favicon.*", "/*/icon-*" ).permitAll() .antMatchers("/mypage").hasRole("USER") .antMatchers("/message").hasRole("MANAGER") .antMatchers("/config").hasRole("ADMIN") .anyRequest().authenticated(); http .formLogin(); return http.build(); }
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
안녕하세요.. 이때까지 강의 듣다 고민이 있어 질문드려봅니다..
안녕하세요, 지금까지 jpa 강의를 들으면서 api 개발 고급 파트에 오니 나중에 뒤에 가면 갈수록 직접 api를 만들어 봐야, 언제 이걸 쓰는지 직접 상황을 맞닥뜨려봐야 진짜 공부가 되고 체득이 될것 같이 느껴집니다.제가 정확히 잘 몰라서 그런데 api를 실무에서 사용하는것이 다른 프론트나 어플 또는 다른 프로젝트(같은 프로젝트 안에서라도) 끼리 api를 통해서 데이터를 주고 받는 용도로 사용되는 것으로 알고있습니다.그런데 개인적으로 학습하고 만들어 보는데 있어서, api를 적극 활용할 수 있는 프로젝트나 다른 방법이 어떤게 있을지 궁금합니다. 답변자님은 api 학습을 어떻게 하셨는지.. 어떤 방법이 효과적이였는지 궁금합니다.또한 api를 현재 내보내는 방식을 강의에서 다루고 있는데, 다른 외부 api를 가져와 사용하는 방법에 대해서는 어떻게 사용하며 어떤 것을 학습해야 하는지 궁금합니다.조금 과한 질문일수도 있으나, 다소 막막해서 여쭤봅니다..항상 감사합니다.
-
해결됨실전! Querydsl
DTO는 목적마다 여러개 생성해서 사용하는건가요?
안녕하세요! 강의 너무 잘 듣고있습니다.다름이 아니라, DTO관련해서 의문점이 하나 생겨서 문의드립니다.API Controller에서 요청 데이터를 받는 것도 DTO, 응답 데이터를 전달해주는 것도 DTO를 사용하라고 하셨는데, 데이터 조회에도 DTO를 사용하는 경우가 많다고 하셨습니다.그럼 DTO를 목적마다 다 생성해서 사용하는 것이 좋은 설계인건가요?? 아니면, 이용하는 필드가 같은 경우,~ 예를 들어 "DB조회에 이름, 나이 조회" & "요청 데이터에 이름, 나이 입력" 인경우 ~에는 DTO를 공용으로 사용하는걸까요? DTO를 언제, 어떻게 만들어서 사용해야 할지 잘 감이 안옵니다 ㅠㅠ