묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
잘못된 Gradle JVM 문제
프로젝트명을 validation-start에서 validation으로 변경 후 프로젝트를 생성하면 위와 같은 메세지가 나옵니다. 해결방법이 어떻게 되나요?
-
미해결스프링 핵심 원리 - 기본편
"싱글톤방식의 주의점"강의와 이번강의의 내용이 헷갈립니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요 예전 강의(싱글톤방식의 주의점 ) 에서 싱글톤객체 사용시 공유되는 전역변수를 사용하면 문제가 되므로 사용하면 안된다고 이해했습니다.(싱글톤객체는 여러 쓰레드에 의해 공유되므로 )이번 강의 에서 싱글톤객체의 필드에 프로토타입 스코프의 객체를 주입받아서 사용하는데 이 객체가 프로토타입스코프여서 문제가 되는게 아니라 해당 객체의 전역변수를 변경하는 로직이 문제가 되는거 아닌가요? 주입받는 객체가 프로토타입 스코프가 아니라 싱글톤스코프여도 여러스레드에 의해 공유되는 전역변수를 변경하는 로직이 문제가 되는건 아닌지요. 싱글톤사용시 공유되는 전역변수를 변경하는 로직을 사용하면 안되다고 이해했는데 이번강의 에서는 싱글톤 객체에 주입받는 객체가 프로토타입스코프여서 문제가 되는걸로 이해가 잘되질않아서요. 질문이 너무 두서가 없는것 같지만 해당부분이 잘이해가 안됩니다.ㅜ
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
update에서 new BeanPropertySqlParameterSource()사용시 문제
강의에서 update부분을 new BeanPropertySqlParameterSource()로 변경해서 사용해 보았는데 수정이 정상적을 이루어 졌습니다. I’d가 어떻게 자동으로 매핑이 되는건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
섹션1 빌드하고 실행하기
강의자료 보면서 윈도우로 cmd에서 빌드하는 법 보면서 하려고 하는데 이렇게 됩니다. 도움 부탁드립니다.그리고 강사님이 ll이라는 명령어를 쓰시는데 저는 그것도 입력하면 위랑 똑같이 나와서 그 명령어에 대해서도 설명 부탁드립니다. 윈도우는 다른 명령어를 쓰는 걸까요..? 그리고 1분 45초 부분에서 "꺼볼게요" 하고 끄시는데 끄는 방법 자세히 알려주시면 감사하겠습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
엔티티 필드 순서에 대해 질문드립니다.
@Entity @Table(name = "orders") @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) // @ManyToOne @JoinColumn(name = "member_id") private Member member; @JsonIgnore @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List<OrderItem> orderItems = new ArrayList<>(); @JsonIgnore @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) // @OneToOne @JoinColumn(name = "delivery_id") private Delivery delivery; private LocalDateTime orderDate; //주문시간 @Enumerated(EnumType.STRING) private OrderStatus status; //주문상태 [ORDER, CANCEL] 이렇게 작성하면 보면 h2에서 필드에 작성한대로 id ||member || delivery 이렇게 나와야 하는데저는 member || delivery ||id 이렇게 나 순서가 보장되지 않게 나옵니다.인터넷에 찾아보니 엔티티 필드 순서가 데이터베이스의 컬럼 순서를 결정하지 않기 때문에 schema-generation.scripts.create-target을 주어야 한다고 나와있는데 해당 강의 코드를 보아도 저런 걸 설정하지 않았는데 강의에서는 어떻게 필드가 순서가 보장이 되었나요?1번답변을 https://www.inflearn.com/questions/17359/hbm2ddl-%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-%ED%85%8C%EC%9D%B4%EB%B8%94-%EC%83%9D%EC%84%B1%EC%8B%9C-%EC%BB%AC%EB%9F%BC-%EC%88%9C%EC%84%9C-%EC%88%98%EC%A0%95-%EB%B0%A9%EB%B2%95여기서 찾았는데요. 실무에서는 ddl을 직접입력하라는건데요. 그런데 궁금한점이 실무에서는 fechjoin이나 joincolum을 안쓰나요? ddl을 입력하는거면 joincolum(외래키)까지 같이입력하는거 아닌가요? 2. @ManyToOne 컬럼에서 조인할 때 데이터 테이블명을 기준으로 조인하고 OneToMany는 mappedBy 할 때 클래스명을 기준으로 하는것처럼 보입니다. 혹시 이유 좀 알 수 있나요? OneToMany에서 자기 자신을 바라봐서 mapped by여도 참조는 둘다 똑같이 클래스로 들어가거나 테이블명으로 들어가야 하는거 아닌가요?3.엔티티 설계시 주의점 24분에서 질문이있습니다. 아래처럼 연관관계 메소드는 중심이 되는지점에 입력하라고 하셨는데요. member 메소드에는 왜 getOrders() 에서 add()이고 orderItem은 왜 그냥 add(orderItem);만 붙나요? 저는 orders가 리스트라서 getOrders로 붙이는 줄 알았는데 orderItems도 리스트라서요. 그리고 orderItem에서 가르키는 this는 무엇인가요? 매소드 내에서 this가 없어요. this 우선순위가 메소드 내부에 this가 있을 때 this를 지칭하고 나머지는 클래스를 지칭하는건가요?// setMember 메서드는 Order 객체에 Member 객체를 연결하고, 역방향으로도 Member의 주문 목록에 이 Order를 추가합니다. public void setMember(Member member) { // 현재 Order 객체의 member 필드에 매개변수로 받은 Member 객체를 할당합니다. this.member = member; // Member 객체의 getOrders 메서드를 호출해 주문 목록을 가져온 뒤, 현재 Order 객체(this)를 그 목록에 추가합니다. // 이는 Member 객체 내부의 주문 목록에도 현재 Order 객체가 포함되도록 하는 역방향 연결을 설정합니다. member.getOrders().add(this); } public void addOrderItem(OrderItem orderItem) { orderItems.add(orderItem); orderItem.setOrder(this); }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
엔티티 설계시 주의점에대해서 질문있습니다.
class Order {@OneToMany(mappedBy = "order", cascade = CascadeType.ALL)public class Member { @JsonIgnore @OneToMany(mappedBy = "member") private List<Order> orders = new ArrayList<>();엔티티 설계시 주의점 20분에서 21분사이에서 아래처럼 진행되기 때문에 cascade = CascadeType.ALL가 필요하다고 하셨는데요.persistence(orderitema)persistence(orderitemb)persistence(orderitemc)persistence(order)Member 도 @OneToMany인데 cascade를 왜 안하시나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
CSR 동작과정
제가 이해한 개념은CSR 방식이면 클라이언트 브라우저가 서버에 요청을 처음 보낼 때 웹 서버(Apache, nginx 등)에서 정적 리소스(HTML, CSS, JS)를 응답해주고 거기서부터 동적으로 필요한 데이터가 있으면 WAS에 API 요청을 통해 데이터를 가져와서 필요한 부분만 렌더링 한다고 알고 있는데 맞을까요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew.bat build 오류
cmd 에 dir 하면 gradlew.bat이 있는데 빌드가 안됩니다.환경변수설정도 하고 JDK도 다시 깔았는데 안됩니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
오류 페이지2 - application.properties 문제
환경Window10, intellij ultimate, Java17, spring boot 3.2.5application.properties- /error-ex상황스프링 부트의 application.properites 기본값으로 /error-ex에 GET 요청을 보냈을 때 위와 같은 결과를 얻을 수 있었습니다.위의 이미지에서 오류 페이지2의 1:37에서의 결과가 다른 것을 확인할 수 있었습니다. 명시적으로 아래와 같이 값을 지정해야 동일한 결과를 얻는데 왜 그런 것인지 알 수 없어 문의를 드립니다.server.error.include-exception=false server.error.include-message=never server.error.include-stacktrace=never server.error.include-binding-errors=never
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
섹션1 프로젝트 생성의 13분 23초 부분
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]스프링 입문의 섹션 1 '프로젝트 생성' 강의 부분을 따라가고 있는데 막혀서 질문드립니다.자바 21을 설치하고 환경변수 설정하고 강의를 따라 13분 23초에 나온대로 일단 실행해보는 부분을 하려는데 자꾸만 빨간 글씨로 에러 메세지가 나와서 다음으로 넘어갈 수가 없습니다. 다른 질문들 찾아보고 구글링 해봐도 잘 모르겠습니다. 도움주시면 감사하겠습니다...!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
assertThat 윈도우 작동안됨
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]assertThat은 작동이 안되는 것으로 나옵니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
여러방식의 데이터접근기술을 같이 사용하는 경우
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]기본적으로 JPA 를 통해 DB 접근을 하지만 몇몇 쿼리들을 JdbcTemplate 를 활용해 DB접근을 한다고 가정한다면 일반적으로 어떤식으로 구조를 만들어내는지 궁금합니다. ItemRepository 인터페이스를 구현한 JpaTemplate 를 만들어 ItemRepository 를 주입받을 때 그 구현체로 JpaTemplate 가 주입되게 하되, JdbcTemplate 는 ItemRepository 구현체가 아닌 별도의 컴포넌트로 만들어 필요한 부분에서는 별도로 주입받아 사용하게 되는걸까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
item엔티티에 질문있습ㄴ디ㅏ.
Item엔티티도 OrderItem과 (아이템기준)onetomany인데 왜 private List<OrderItem> orderItems = new ArrayList<>(); item에 이런문구를안넣어주나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
get set 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]ItemRepository 파일 내 setId()와 getId() 부분에서 오류가 발생하고 있습니다. test 도 동일하게 오류 발생하고 있습니다. 어떤 점이 문제인지 확인 부탁 드립니다.https://drive.google.com/file/d/1iGTvLwfkrcbkCev-IjHXoOyXlCuzA8y-/view?usp=sharing
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
레포지토리에서 동기화를 사용하지 않은 이유가 따로 있으실까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]동기화가 필요하지 않은 서비스 로직이라 동기화를 일부러 적용 안하신건지 아니면 그냥 단순하게 예제를 만들기 위해 생략한 것인지 궁금합니다!
-
미해결스프링 핵심 원리 - 기본편
clientBean 은 프로토타입 빈의 참조값을 보관하는거 있잖아요
ApplicationContext ac = new AnnotationConfigApplicationContext(ClientBean.class, PrototypeBean.class); ClientBean clientBean = ac.getBean(ClientBean.class); clientBean 이 prototypeBean 을 바로 참조하는게 아니라clientBean 에 생성된 prototypeBean 참조하면 그 안에생성 시점에 주입 받은 참조 값을 참조하는 건가요?맞나요? 헷갈려요 ㅠ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
서비스 코드 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. > Run with --info or --debug option to get more log output.> Run with --scan to get full insights.> Get more help at https://help.gradle.org.Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.For more on this, please refer to https://docs.gradle.org/8.7/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.BUILD FAILED in 6s3 actionable tasks: 1 executed, 2 up-to-date 이런 오류가 뜹니다.코드보다 설정 문제인 것 같은데 혹시 뭐가 문제일까요?
-
미해결토비의 스프링 부트 - 이해와 원리
다음 강의 오픈 일정 알 수 있을까요?
늦으면 4월이라고 하신 답변을 본 것 같은데 기다리고 있습니다!!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@GetMapping("variable")이라고 작성해도 되는 이유
실습시 BasicController에서 @GetMapping("/variable")@GetMapping("variable")둘 다 http://localhost:8080/basic/variable입력시 컨트롤러 호출이 되는것을 확인할 수 있었습니다. 왜 후자의 variable도 가능한건가요?
-
미해결Practical Testing: 실용적인 테스트 가이드
OrderRepositoryTest에서 단위테스트가 가능한가요?
@SpringBootTest class OrderRepositoryTest { @Autowired private OrderRepository orderRepository; @Autowired private ProductRepository productRepository; @DisplayName("해당 날짜의 모든 결제 내역을 조회한다.") @Test void findAllByDate() { // given LocalDateTime time1 = LocalDateTime.of(2024, 5, 11, 10, 0); LocalDateTime time2 = LocalDateTime.of(2024, 5, 10, 10, 0); Product product1 = createProduct("001"); Product product2 = createProduct("002"); Product product3 = createProduct("003"); Product product4 = createProduct("004"); productRepository.saveAll(List.of(product1, product2, product3, product4)); Order order1 = Order.builder() .products(List.of(product1, product2)) .now(time1) .build(); Order order2 = Order.builder() .products(List.of(product3, product4)) .now(time2) .build(); orderRepository.saveAll(List.of(order1, order2)); // when LocalDate findDate = LocalDate.of(2024, 5, 11); List<Order> findOrders = orderRepository.findAllByDate( findDate.atStartOfDay(), findDate.plusDays(1).atStartOfDay(), OrderStatus.INIT ); // then Assertions.assertThat(findOrders).hasSize(1); } private static Product createProduct(String number){ return Product.builder() .productNumber(number) .productType(ProductType.HAND_MADE) .sellingType(ProductSellingType.SELLING) .name("test") .price(1000) .build(); } } OrderRepositoryTest에서 매서드 테스트를 할 때, Order와 Product는 1대다 다대1로 연관관계 매핑되어 있는 상태인데, 그러면 위와 같이 작성할 경우, productRepository와 관련된 코드가 들어가니, 단위테스트가 깨지는거 아닌가요? 이럴때 어떻게 해야하나요?