묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링빈과 의존관계에서 방법의 차이가 무엇인가요
스프링 빈과 의존관계에서, (1)컴포넌트 스캔과 자동 의존관계 설정 / (2) 자바 코드로 직접 spring 빈 등록하기총 2가지 방법으로 설명해주셨고 2가지 방법 모두 알아야한다고 말씀해주셨는데, 두 방법이 사용되는 상황이 다른가요?? 각 방법이 어떤 차이가 있고 장단점이 있다면 궁금합니다!
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
어떻게 a 배열, b 배열에 알아서 잘 담겨지는지 모르겠습니다.
값이 들어왔을때5 2 3 3 1 3 1 1 2 2 3이게 어떻게 a 배열, b 배열에 알아서 잘 담겨지는지 모르겠습니다. int n = sc.nextInt(); int [] a = new int[n]; int [] b = new int [n]; for(int i =0; i<n; i++){ a[i] = sc.nextInt(); } for(int i =0; i<n; i++){ b[i] = sc.nextInt(); }이런건 그냥 외우는 건가요?
-
해결됨실전! 스프링 부트와 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에게 반환시켜 주는 걸까요? 감사합니다.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
sdk 1.8이 없는데 아무버젼이나 다운로드 해서 사용하면 되나요 ?
liberica-1.8 다운로드 받아서 사용하면 되나요 ? h2 버젼은 2.1.214로 하면 될까요 ??
-
미해결실전! 스프링 데이터 JPA
@EntityGraph(attributePaths={"team"})
안녕하세요, 영한님! 강의 정말 잘 듣고 있습니다!강의 중 궁금한 부분이 생겨 질문 드립니다.`@EntityGraph(attributePaths={"team"}) `attributePaths 속성에 들어가는 이름이연관 관계가 걸려있는 필드의 이름이 들어가는 건가요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 데이터 jpa
스프링 데이터 jpa는 기본적인 함수를 제공한다고 했는데 기본적인거 말고는 직접 개발자가 작성해야하는건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의를 다 들은 후 공부는 어떻게 하는게 좋을까요?
강의를 들으면서 코드를 다 따라 쳐보고, 적당히 필기하면서 듣고... 그러고 있는데 강의를 다 들으면 해당 내용들에 대해 어떻게 공부를 해야하나요?? 강의 전체 한바퀴를 다 돌린 후에 어떻게 공부를 해야하는지 궁금합니다안보고 직접 만들기에는 제가 너무 실력이 딸리는데.... 추천하시는 공부법이 있을까요???
-
미해결실전! 스프링 데이터 JPA
Page를 1부터 시작하기(Pageable, Page 커스텀) 질문 있습니다.
안녕하세요. 강의 열심히 듣는 중에 궁금한 점이 있습니다.17:30초 쯤에 Page를 1부터 시작하기 부분에서 1. Pageable, Page를 파리미터와 응답 값으로 사용히지 않고, 직접 클래스를 만들어서 처리한다. 그리고 직접 PageRequest(Pageable 구현체)를 생성해서 리포지토리에 넘긴다. 물론 응답값도 Page 대신에 직접 만들어서 제공해야 한다.이 부분을 직접 구현해보려고 했는데 제가 놓치는 부분이 있는 건지 잘 안 되더라구요. 그래서https://inflearn.com/questions/201572이 질문에 답변해주신 분의 블로그를 참고하여 커스텀을 해봤습니다. package study.datajpa.dto; import lombok.Getter; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Slice; @Getter public class PageableCustom { private boolean first; private boolean last; private boolean hasNext; private int totalPages; private long totalElements; private int page; private int size; public PageableCustom() { } public PageableCustom(PageImpl page) { this.first = page.isFirst(); this.last = page.isLast(); this.hasNext = page.hasNext(); this.totalPages = page.getTotalPages(); this.totalElements = page.getTotalElements(); this.page = page.getNumber() + 1; this.size = page.getSize(); } public PageableCustom(Slice slice) { this.first = slice.isFirst(); this.last = slice.isLast(); this.hasNext = slice.hasNext(); this.page = slice.getNumber() + 1; this.size = slice.getSize(); } } package study.datajpa.dto; import lombok.Getter; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.SliceImpl; import java.io.Serializable; import java.util.List; @Getter public class PageCustom<T> implements Serializable { private List<T> content; private PageableCustom pageableCustom; public PageCustom(List<T> content, Pageable pageable, long total) { this.content = content; this.pageableCustom = new PageableCustom(new PageImpl(content, pageable, total)); } public PageCustom(List<T> content, Pageable pageable, boolean hasNext) { this.content = content; this.pageableCustom = new PageableCustom(new SliceImpl(content, pageable, hasNext)); } } @GetMapping("/memberscustom") public PageCustom<MemberDto> listCustom(Pageable pageable) { Page<MemberDto> map = memberRepository.findAll(pageable).map(MemberDto::new); return new PageCustom<MemberDto>(map.getContent(), map.getPageable(), map.getTotalElements()); }결과적으로는 커스텀에 성공했지만 코드 내용부분에서 뭔가 아쉬운 부분이 있더라구요.이게 블로그 보면서 작성한 MemberController 단 내용인데,보시면 listCustom(Pageable pageable) 에서Pageable pageable 이 파라미터를 그대로 하지말고 이 부분 또한 커스텀해서PageRequest.of()를 이용하라고 설명하시더라구요.혹시 PageRequest.of()를 활용해서 코드를 좀더 최적화 할 수 없을까요?제가 놓치는 부분이 있는 것 같은데 잘 떠오르지 않아서 이렇게 질문 드립니다! https://drive.google.com/file/d/1I__dQwuBmtkUdvT5RahN8ksF3Tr21UP8/view?usp=sharing아! 제 프로젝트 구글 링크 드립니다!ㅎㅎ 항상 양질의 강의 감사합니다!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 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 등을 설명해주셨는데 오래돼서 그런지 개념이 헷갈리는데요어떤 강의를 봐야 이 부분을 확실하게 잡고 넘어갈 수 있을까요 ?