묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
EntityManager 도 Component 로 인식하는 것인가요?
안녕하세요! 이전 수업에서 Autowired로 주입 시키려면 스프링 빈에서 관리하는 객체여야한다고 배웠고, 스프링 빈에서 관리하려면 @Component 어노테이션이 있어야 한다고 이해했습니다.근데 EntityManager는 컴포넌트가 아닌데 왜Autowired 대상이 되는지 이해가 안됩니다ㅜㅜ감사합니다..
-
미해결스프링 핵심 원리 - 기본편
메소드 오버라이딩 오류
OrderServiceImplTest라는 파일로 테스트 하려던 중 createOrder와 관련된 오버라이드 오류가 발생했습니다. OrderServcieImpl 클래스에서는 The method createOrder(Long, String, int) of type OrderServiceImpl must override or implement a supertype method 라는 오류가 발생했고MemberRepository 클래스에서는The field OrderServiceImpl.discountPolicy is not visible 이 발생했습니다.DiscountPolicy 클래스에서는(1) Duplicate method createOrder(OrderServiceImpl, Long, String, int) in type DiscountPolicy(2) The field OrderServiceImpl.memberRepository is not visible(3) Duplicate method createOrder(OrderServiceImpl, Long, String, int) in type DiscountPolicy 이 차례로 발생하였습니다.오버라이드 관련 오류인건 알겠는데, 어디서 어떤 부분을 고쳐야할지 막막하네요 2시간 30분 가량 구글링도 해보고 직접 코드도 수정해봤는데 오히려 먼 산으로 가는 느낌입니다. 도와주세요 ㅜ_ㅜ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
스프링 부트와 JPA 활용
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 수강생 입니다. 궁금한것이 있어 질문 합니다. JPA 를 하면서 궁금한것이 있어서 몇가지 적어 봅니다. JPA를 활용할때 JPA코드로 만들어진 테이블이 아닌 기존에 DDL로 만들어진 테이블 조회도 가능 할까요 ? - 이건 아직 제가 조회 부분을 안봐서 질문하는것일수도 있네요 ㅠ 실행하면서 JPA로 만들어진 테이블이 구성되는데 그럼 매번 실행할때마다 테이블을 지우고 생성되는건지 아니면 중복테이블을 체크하고 생성되는것일까요 ? ManyTOMany를 실무에선 안쓴다는 말이 다대다 구성을 안한다는 말씀이신거 같은데 그럼 다대다와 같은 경우를 중간테이블로 두어서 1대다 형식으로 구성하는 방안이 좋을까요 ?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
문서에 오타가 있습니다!
타임리프 - 기본 기능기본적으로 이스케이스(escape)를 제공한다. -> 기본적으로 이스케이프(escape)를 제공한다. 감사합니다:)
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
왜 DTO 만드실때 static 을 붙인 건가요??
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예[질문 내용]항상 DTO 만드실때 static 클래스 꼭 붙이시길래 한번 빼고 만들면 오류가 나는 건가? 싶어서 뺴봤는데 상관이 없더라고용. 혹시 static 을 굳이 붙이신 이유가 있나요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
fetch join 과 EAGER
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예[질문 내용]제가 이해한게 맞을까요?일단 기본적으로 type을 LAZY 로 하는 이유는 조회할때 한 방에 다른 엔티티까지 쿼리가 나가고 그거에 연관된 엔티티까지 쿼리가 나가면 비효율 적이다. 그래서 LAZY 를 쓰는데 조회할때 다른 Entity 의 값도 가져오려면 LAZY 타입이니 쿼리가 많이 나가서 fetch JOIN 으로 한 쿼리로 연결 시킨다. 그러면 EAGER 바꾸면 될 것같지만, EAGER 는 예측할 수 없는 문제도 있고, 다른곳에서 조회할때는 또 다른 엔티티의 값이 필요가 없을 수도 있기 때문에 기본은 LAZY로 해두고 다른 엔티티의 값이 필요한 특수한 경우에만 fetch JOIN 을 한다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
단축키 안내창..;
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]아래 초록색 단축키 보여주는거... 봐도 모르겠어요윈도우 인텔리제이 사용하거든요..그래서 윈도우 검색하거나, 대충 짐작가는 키를 사용하긴하는데... --;;
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
포스트맨 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 내용의 코드도 모두 동일한데, 포스트맨을 통한 url 요청에서 다음과 같이 오류가 발생합니다.그러다가 'http://' 를 생략하고 다시 요청했는데 이번엔 정상적으로 동작했습니다.이처럼 http:// 를 생략하니까 정상 작동하는 이유에 대해서 궁금합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
th:each 사용법과 관련 질문입니다
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]<div> <div>등록 지역</div> <div th:each="region : ${regions}" class="form-check form-check-inline"> <input type="checkbox" th:field="${item.regions}" th:value="${region.key}" class="form-check-input"> <label th:for="${#ids.prev('regions')}" th:text="${region.value}" class="form-check-label">서울</label> </div> </div>each 반복이 돌아가면서 region에는 "서울","부산","제주" 이렇게 3개의 지역이 들어가기에 구문이 3번 반복됩니다. 그리고 구문이 반복되면서 region의 서울, 부산, 제주가 순서대로 대입되는 것까지 알겠습니다. 그런데 영상에서는 th:field="${item.regions}"이렇게 했는데 현재 item.regions에는List<String> regions; //서울, 부산, 제주서울, 부산, 제주가 이렇게 들어있는데item.regions도 첫번째 구문 돌 때 서울두번째 돌 때 부산세번쨰 돌때 제주 이렇게 자연스럽게 대입이 되는 건가요?요약하면 regions를 기준으로 each구문이 돌게했는데th:field에 적용한 item.regions에 들어있는 항목도순서대로 대입이 되는건지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
20:24 부분의 줌인
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]20:24 부분의 줌인 단축키가 있나요?코드 부분 단축키 말고 패키지 부분에 적용하는 방법은 찾지 못하겠습니다 ㅠㅠ
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
isReturn을 val로 선언해서 얻는 이점이 있을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 선생님의 이전 강의를 들을 때도 신기하면서도 의아하기도 했던 부분인데요그냥 그런가보다 하고 넘어갔는데 보면 볼수록 궁금해서 여쭤보게 되었습니다 fun isReturn(): Boolean { this.status == LoanStatus.RETURNED } 이 코드랑 비교했을 때 val isReturn을 필드처럼 사용하는 게 어떤 부분에서 이점이 있는 것인지 궁금합니다.별다른 이점이 없다면 오히려 팀원들이 익숙한 방향(함수 사용)으로 가는 게 맞는 것 같아서요!!
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
named arguements를 늘 작성하시나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.코틀린에서 제시해주는 컨벤션을 보면 named arguements를 작성하는 걸 권장하고 있고, 선생님께서도 늘 작성하시는 것 같은데 실무에서도 똑같이 적용 중이신지 궁금합니다한 편으로는 가독성이 좋게 느껴지면서도, 한 편으로는 어차피 ide에서 해당 필드가 무엇인지 표기해주는데 공수가 늘어나는 것이 아닌가 고민이 있습니다만약 쓸거라면 아예 컨벤션 룰로 정하고 다 함께 쓰던지 말던지 하는 게 좋을 것 같아서요..
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
와 진짜 대박이네요 디폴트 파라미터 하나로 이렇게 편해질수가 ㅜ
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 자바 스프링에서는 테스트용 생성자 메서드가 있어도, 매번 일일히 null을 넣어준다거나 하는 문제점들이 있어서 결국 Builder를 사용했었는데코틀린에서는 롬복 Builder가 지원되지 않는다고 해서 엄청 고민 중이였습니다근데 이번 강의 보니까 그냥 온전한 객체 만들어주는 팩터리 메서드 하나 만들어놓고 테스트용으로 필요한 인자 값들만 설정해주면 되는 거였군요진짜 미쳤다.. 갓틀린..잘 배워갑니다..
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
HikariProxyConnection 에 wrapping되는 커넥션
커넥션 풀에서 커넥션을 조회할 때 HikariProxyConnection 객체로 커넥션을 wrapping해서 조회한다는 것은 알겠습니다.여기에서 wrapping되는 커넥션은 (H2 DB를 사용하는 경우) JdbcConnection 객체, (MySQL DB를 사용하는 경우) MySqlConnection 객체를 의미하는 것이 맞을까요?그니까 JDBC 드라이버가 DB와 커넥션을 맺은 후 반환하는 Connection 객체를 의미하는 것이 맞을까요?찾아보니 HikariProxyConnection이 Connection 인터페이스를 구현하고 있어 헷갈려서 질문드리게 되었습니다.
-
해결됨Practical Testing: 실용적인 테스트 가이드
양방향 매핑
안녕하세요~ 양방향 매핑을 사용하면 엔티티 간의 결합도를 높이기 때문에 가급적 단방향으로 만들면 좋다는 의견도 많은 것 같더라구요.심지어는 양방향 매핑을 만들어야 한다면 엔티티가 아니라 id 값을 넣어서 참조를 하는게 더 좋다는 의견도 있구요. 강의에서는 양방향 매핑을 사용하셨는데 실무에서도 자주 양방향 매핑으로 설계하시나요?사용하신다면 이러한 단점이 있지만 편의성이 더 크기 때문인가요?
-
해결됨Practical Testing: 실용적인 테스트 가이드
강의자료
강의하시는 PPT 파일 다운로드 받을 수 있을까요..?
-
해결됨실전! 스프링 데이터 JPA
편의성 메소드에 대한 질문입니다.
jpa 강의들을 보다보면entity 간에 양방향 연관관계를 설정한 경우위처럼 changeTeam 메소드를 추가 해주셨는데요.this.team = team; 의 경우 외래키(연관관계 주인) 이기 때문에 필요한 것은 이해를 했습니다. 그런데 team.getMembers().add(this); 부분의 경우기존에 member 테이블에 값들이 존재하고, 신규 회원이 새로운 트랜잭션에서 join 로직을 실행했을때, 해당 로직에서 생성된 team.members에는 기존의 member 값들은 add 되어있지 않은 상태일텐데, team.members를 제대로 사용이 가능한가 해서 질문드립니다. 제 생각에는 team.members를 정상적으로(?) 사용하려면 team과 member를 join 으로 가져 온뒤에 사용이 가능할 것 같습니다. list에 add 하는것만으로는 query가 발생하는게 아닌것으로 알고있습니다. 제가 이해를 잘 못 하고 있는 부분이 있는걸까요?아니면 단순히 편의성 메소드의 예시로 작성을 하시는건지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강의 19분10 초 영속성 테스트?
해당 테스트 코드에서 맨마지막 find member == member부분 값이 true인 이유를 설명해주시는데, 잘이해가 가지 않습니다. 이해하려면 기본편 어디를 봐야 하는지 알려주실 수 있을 까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
쿼리 파라미터 로그 남기기 강의 27분28초
화면에서는 insert into member (username, id) values (?, ?) 띄고insert into member (username, id) values ('memberA', 1) 이렇게 잘 나오는데,저는 아래와 같이 한줄로 모든게 나와버려요저도 한 줄씩 띄어서 보기 좋게 나왔으면 좋겠는데 방법이 없는건가요?2023-05-06T02:12:50.026+09:00 DEBUG 9774 --- [ main] org.hibernate.SQL :insertintomember(username, id)values(?, ?)2023-05-06T02:12:50.027+09:00 INFO 9774 --- [ main] p6spy : 1683306770027|0|statement|connection 4|url jdbc:h2:tcp://localhost/~/jpashop|insert into member (username, id) values (?, ?)|insert into member (username, id) values ('memberA', 1)
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
build 배포 따라하는 도중에 오류가 나네요
아래는 shell에 ./gradlew clean build를 하니 나온 오류입니다. 인텔리제이에서 테스트는 잘 되는데 왜 build가 안되는지 잘모르겠어요.. jpashop ./gradlew clean buildWelcome to Gradle 7.6.1!Here are the highlights of this release: - Added support for Java 19. - Introduced --rerun flag for individual task rerun. - Improved dependency block for test suites to be strongly typed. - Added a pluggable system for Java toolchains provisioning.For more details see https://docs.gradle.org/7.6.1/release-notes.html> Task :test FAILEDJpashopApplicationTests > initializationError FAILED org.junit.runners.model.InvalidTestClassError at ParentRunner.java:5252023-05-06T01:42:49.688+09:00 INFO 9580 --- [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'2023-05-06T01:42:49.689+09:00 INFO 9580 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...2023-05-06T01:42:49.694+09:00 INFO 9580 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.2 tests completed, 1 failedFAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':test'.> There were failing tests. See the report at: file:///Users/shfur2918/Desktop/spring_study/스프링_실전1편/jpashop/build/reports/tests/test/index.html* Try:> Run with --stacktrace option to get the stack trace.> 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.orgBUILD FAILED in 3s8 actionable tasks: 8 executed