묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 입문강의 질문이요
김영한선생님 스프링입문강의10강 회원 도매인과 리포지토리테스트2:50초 나오는 코드 똑같이 쳤는데 오류가 나오네요 원인이 무엇인가요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
CRUD에 따른 ResponseDto를 보내는 유형 및 ResponseDto 구성 방식에 대한 질문
안녕하십니까 영한님.영한님 덕분에 JAVA Spring 기반 백엔드 개발의시작을 할 수 있었고,이제는 5개월 차 스타트업 백엔드 개발자로써 커리어를 시작하게 되었습니다. 현업에 와서는 오히려 취준생 때 보다 더 많은 고민을 하게 되느데요, 질문 1. 그중 최근에 CRUD의 각 상황별 API 응답을 어떻게 보내는게 적절할지, 질문 2. 그리고 ResponseDto를 어떻게 구성하는것이 적절할지에 대한 고민을 팀장님과 함께 하고있어서, 영한님의 생각을 여쭙고자 질문글을 올리게 되었습니다.답변 해주시면 정말 감사할 거 같습니다! Q1. 생성, 조회 , 수정, 삭제 API의 응답을 각각 어떻게 보내시는지 여쭤보고 싶습니다. 가장 먼저 조회의 경우는 말 그대로 path의 Entity 및 관련된 Entity 정보를 조합하여 응답 DTO로 변환하여 보내고 있습니다. 그런데 나머지 Write Operation에 대한 응답을 어디까지 보내야 하냐가 이슈 입니다.예를들면 엔티티의 생성의 경우 엔티티의 응답 DTO를 보내면 - 프론트에서 별도의 조회 API 호출 없이 바로 프론트가 화면에 뿌려줄 수 있으니깐 저는 생성의 경우에도 조회와 마찬가지로 Entity의 정보를 조합하여 응답 DTO로 변환하여 보내고 있었습니다. 그런데 이러한 부분이 Command Query Sperate 원칙에 어긋나는것 같아, 영한님께서는 혹시 생성한 Entity의 Key만 보내시는지, 아니면 Entity의 정보를 DTO로 변환하여 보내시는지 궁금합니다. 만약 Entity의 Id만 보내신다면 이후에 별도로 조회API를 호출해야 하고 그 또한 비용일텐데 이러한 부분은 어떻게 하시는지 여쭤보고 싶습니다. 이제 수정 API인데요,제가 다룬 비즈니스 로직의 경우 수정 비즈니스 로직이 다양하고 , 각 비즈니스 로직의 경우 다뤄지는 Entity의 종류가 다른 경우였습니다. (중심 Entity는 동일하지만, 연관된 Entity를 누구까지 건드리냐의 차이) 그래서 하나의 통일된 응답으로 보내기 모호한 점이 첫 번째 이유이고,애초에 수정 후에 프론트 화면에서 그 엔티티의 정보를 보여줄 필요가 없어서 라는 두번째 이유에 의해서 에초에 엔티티의 Id값도 보내지 않고 있었는데요,이 수정 API의 응답을 영한님은 어떻게 진행하지는지 그 이유가 궁금합니다. 마지막으로 삭제의 경우는 정말, 프론트에게 보낼 응답이 없어도 되는 경우 라고 생각했는데요,팀장님의 의견은 만약에 나중에 삭제한 Entity를 복구하는 요구사항이 추가되는것을 고려하여Id 정도는 넘기자는 의견을 내어주셨습니다.마찬가지로 삭제의 경우도 어떤식으로 수행하시는지 그 이유가 궁금합니다. Q3. 마지막으로 Entity의 ResponseDto의 필드를 어떤식으로 구성하시는지 궁금합니다 예를들면 저의 경우는 API는 프론트와 서버 간의 스펙이라고 생각하고, Entity의 단건조회의 경우는 단건 조회용 ResponseDto를, 전체조회의 경우는 전체 조회용 SummaryResponseDto를 별도로 만들어서 사용하고 있었습니다. 저희 팀장님 께서는 프론트쪽도 일을 해오시다가 , 백엔드쪽 분야로 전향하신 케이스 인데요,그렇다 보니 어떻게 해야 프론트의 생산성이 올라가는지를 고려하시는 분이셨고,팀장님의 생각은 서버에서 넘겨주는 응답에 일관성이 있어야 그 응답을 사용하는 프론트 측도 학습이 되고 놓치는 부분 없이 생산성이 올라간다는 의견이셨습니다. 그래서 Entity별로 당장 사용하지 않더라도 가능한 모든 필드를 담은 ResponseDto를 하나만 만들고,해당 ResponseEntity의 조합으로 각 API별 응답 Dto를 만들어서 사용하면 ,프론트 측 에서는 일관성 있는 응답값을 사용할 수 있다는 의견이셨습니다.물론 이 방법이 네트워크 패킷의 양을 쓸데없이 증가시킨다는 것을 알고 계시면서도,생산성에 큰 영향을 미치는 부분이라고 생각하셨습니다. 예를들어 다음과 같이 각 Entity의 응답 Dto의 조합별로 API의 ResponseDto를 만들 수 있습니다.ResponseDto{ UserDto{id : 1,name : “aaa”… // User엔티티의 거의 모든 필드} ItemDto{ id : 2,name : “bbb”,… // Item엔티티의 거의 모든 필드}} 저는 이러한 부분에 대해 생각해 본 적이 없이,그냥 제가 “해당 API를 호출하는 화면에서 필요한 정보들만을 담아 (혹은 여러 화면에서 쓰인다면 여러개를 고려) ResponseDto를 각각 만들어서” 넘겼는데요 영한님께서는 이러한 ResponseDto를 구성하는 부분에 있어서상황별로 필드를 재구성 하여 ResponseDto를 정의하여 사용하시는 편 인지 (SummaryResponseDto 등의 별도 Dto에 사용될 Entity의 필드들을 풀어서 정의하시는지)아니면 생산성을 고려하여 각 Entity별 Dto를 만들고, 이들을 조합하여 ReponseDto를 정의하시는 편 이신지 ,혹은 다른 규칙이 있으신지 궁금합니다. 물론 그렇다고 , 팀장님의 의견에서 전체조회시 사용하는 DTO와 단건조회시 사용하는 DTO가 동일하더라도,전체조회 후 단건조회를 할때 단건조회 API를 호출하지 말고 기존 Front가 가지고 있는 값을 쓰지는 말자는 의견 이십니다 (단건조회API는 별도로 호출해야 한다)그저 핵심은 프론트가 다루는 ResponseDto의 일관성을 위해서 입니다 (결론은 생산성을 위해) 긴글 읽어주셔서 감사합니다.항상 건강하셨으면 좋겠고,다음 강의들도 손꼽아 기다리고 있습니다!
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
Compile 안됩니다...
강의 내용대로 컴파일을 시도했는데 안됩니다...저 폴더를 인식을 못하는 걸까요..[INFO] BUILD FAILURE[INFO] ------------------------------------------------------------------------[INFO] Total time: 4.095 s[INFO] Finished at: 2023-11-15T01:23:56+09:00[INFO] ------------------------------------------------------------------------[ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources) on project studyolle: /Users/swnam/Documents/IntelliJ/java/whiteship/target/classes/static/node_modules/.bin/jdenticon -> [Help 1][ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.[ERROR] Re-run Maven using the -X switch to enable full debug logging.[ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: 오류 내용은 이렇습니다.시도한 내용.pom.xml에서 노드 얀 버전도 맞춰봤습니다.깃허브에서 클론 가져왔습니다.조금 밑에있는 커밋들은 제대로 동작을 하는데 최신 커밋내용은 안되는것같습니다..
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
출력할 때 BufferedWriter? StringBuilder?
안녕하세요 강사님 좋은 강의 감사합니다:)다름이 아니라, 출력문을 사용할 때 BufferedReader와 StringBuilder를 사용하는게 일반적으로 사용하는게 좋다고 알고있는데 해당 강의에서는 BufferedWriter를 사용하신 이유가 궁금해서 글을 작성하게 되었습니다. 감사합니다!
-
해결됨Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부
Sinks multicast의 subscribe에 질문있습니다.
안녕하세요.Sinks multicast 예제에서 질문이 있습니다. 질문1Many<String> sinks = Sinks.many().multicast().onBackpressureBuffer(); Flux<String> flux = sinks.asFlux(); sinks.emitNext("1", EmitFailureHandler.FAIL_FAST); sinks.emitNext("2", EmitFailureHandler.FAIL_FAST); flux.subscribe(data -> System.out.println("Subscribe1 : " + data)); flux.subscribe(data -> System.out.println("Subscribe2 : " + data)); sinks.emitNext("3", EmitFailureHandler.FAIL_FAST);위 코드를 실행하면 결과는 아래와 같이 출력됩니다.Subscribe1 : 1Subscribe1 : 2Subscribe1 : 3Subscribe2 : 3강사님이 말씀하신대로면 Subscribe1 : 1Subscribe1 : 2Subscribe2 : 1Subscribe2 : 2Subscribe1 : 3Subscribe2 : 3이렇게 동작될것같은데 다르게 출력되어 질문올립니다. 질문2sinks.emitNext("3", EmitFailureHandler.FAIL_FAST);마지막 emitNext는 2개의 subscribe()가 동작이되고 다음에 동작되는데 어떻게 subscribe를 할 수 있는걸까요?
-
미해결스프링 시큐리티 OAuth2
강사님 로그인 요청시 궁금한 점이 있습니다.
POST /login으로 요청시JwtAuthenticationFilter는 실행되지만JwtAuthorizationMacFilter는 왜 실행되지 않는 이유가 궁금합니다. FilterChainProxy에 additionalFilters 목록을 보게 되면, JwtAuthenticationFilter와 JwtAuthorizationFilter가 담겨있고 UsernamePasswordAuthenticationFilter앞에 있는것을 확인할 수 있는데, JwtAuthorizationMacFilter을 넘어가는 이유가 뭔지 궁금합니다 디버깅 중에 왜 안나왔는지 알게되었네요JwtAuthenticationFilter는 인증 성공후에 doFilter 를 안넘겨서 그 이후 체인이 실행하지 않아 검증 필터가 실행되지 않았습니다. 혹시 체인을 안태운 이유가 가장 마지막 필터인 FilterSecurityInterceptor or AuthorizationFilter 에서 SecurityContextHolder.getContext().getAuthentication 에 null 체크 예외 발생 때문에 일부러 안넘기신건가요?? 토큰 인증 필터 성공 이후에 체인 안넘기신 이유가 궁금합니다.안넘기게 되면 컨트롤러단까지 요청이 안가서 index 페이지가 안나와서
-
미해결실전! 스프링 데이터 JPA
엔티티, DTO 유효성 검사 관련 질문드립니다!
https://www.inflearn.com/questions/548289/%EC%97%94%ED%8B%B0%ED%8B%B0-dto-%EC%9C%A0%ED%9A%A8%EC%84%B1-%EA%B2%80%EC%82%AC%EC%97%90-%EB%8C%80%ED%95%B4-%EC%A7%88%EB%AC%B8-%EB%93%9C%EB%A6%BD%EB%8B%88%EB%8B%A4안녕하세요 강사님!위 질문글을 보고 이유에 대해 궁금증이 생겨서 질문 드립니다!"엔티티, DTO를 둘 다 유효성 검사를 하나요?" 라는 질문에 대해서"저는 주로 파라미터로 넘어오는 DTO에 유효성 검사를 선호하는 편입니다."라고 답변 주셨는데 혹시 그 이유를 알 수 있을까요? 그러면 RequestDto에서만 유효성 검사를 해주고Entity에는 validation관련 어노테이션 같은 걸 따로 안해주시는 건가요? 이유가 궁금합니다!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링입문시 인텔리제이 버전 및 필요한 자바 개념
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요김영한님 자바 버전 스프링 입문시 자바 버전은 11로 해야 되는 것을 알 고 있습니다-다만 인텔리제이버전(커뮤니티,무료기준)은 무엇으로 해야 되나요 ?- 인텔리제이가 어떤 버전이든 상관없나요 ?참고로 저는 지금 2023년 2월(커뮤니티)버전 인텔리 제이를 사용 중입니다 .그리고 자바는 스프링 프레임워크에 필요한 개념들 위주로 공부중입니다 .<stream, 삼항 연산자, Optional, 어노테이션, 인터페이스, 업/다운 캐스팅, 다형성, 추상 클래스, 상속, 생성자, 오버라이딩, 오버로딩, Getter/Setter, exception/throw/catch/finally, 람다식, 제네릭, 접근제한자위주로요 >-이 앞의 정도의 <개념>이면 스프링프레임워크를 학습 시 큰 문제가 없을 까요 ? -혹시 김영한님의 오프라인부트캠프 신설 계획이 있으신가요 ?유튜브에서 김영한님의 영상을 잘 보았습니다늘 항상 좋은 강의 감사드립니다 .
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2 db 파일 생성 안됨
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강의와 강의 자료를 바탕으로 해도 계속 이런 에러가 발생합니다.db 파일이 제대로 생성되지 않아서 생긴 오류일까요?
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
강의 내용 수정 요청드립니다.
안녕하세요~ 수강생입니다 강의 정말 잘 듣고있습니다^^다름이 아니라18강 6:08 에서 lastOrNull 설명이 "첫번째" -> "마지막" 으로 변경되어야 할 것 같습니다. 감사합니다~!
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
현업에서 제네릭 쓰나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]가끔 오류날 때 recompile 해보곤 하는데..G:\spring\spring-data-project\jpashop\src\main\java\jpabook\jpashop\api\MemberApiController.java:uses unchecked or unsafe operations.Recompile with -Xlint:unchecked for details. 이게 뭔가하고 찾아보니, @Data @AllArgsConstructor static class Result<T>{ private int count; private T data; }여기 이 부분이..물론 파란색이라 에러같은 느낌은 아니고, 그냥 안내 정도로 보이긴 하는데,https://bgpark.tistory.com/33 근데 제가 언뜻 왠만하면 제네릭 쓰지 말라고 들었던거 같긴 한데 기억이.. 잘못들었는지 왜곡되었는지..옛날 라이브러리들은 제네릭으로 구현된게 많아서 그냥 그거 쓰고 제네릭으로 따로 구현하지 말랬던거 같은데.. 제가 잘못 기억하고 있는 거겠죠?
-
미해결누구나 따라하면서 배우는 JSP 커뮤니티 게시판 만들기
이클립스 WebContent나오지 않음 질문
혹시 이 부분에서 강의의 Webcontent라는 폴더를 webapp이라는 폴더와 같은 부분으로 봐도 무방한가요?? 안에 META-INF와 WEB-INF가 있어서요..
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
카테고리 관련 질문드립니다!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예 )2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예 )[질문 내용]그러면 ManyToMany는 안쓴다고 하셨는데 .보통 카테고리는 실무에서 다는 알수 없겠지만 대략적으로 이해될수 있게 어떤 형식으로 entity를 구성하는지 알수있을까요보통 3뎁스 정도로 잡는다고 한다면요 ..실무에 이번에 jpa도입 할려고 하는데 카테고리는 어떤식으로 하는지 궁금합니다 .Mybatis를 주로 쓰고 관계형 테이블에서는 대충 감이 오는데 엔티티로 할려니 어떤식일까 강의 듣는 내내 .. 궁금해서요 ...id , parentid, level, name 등이 있다고 가정한다면요 ..
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
JPQL을 사용할 때 질문 있습니다.
현재 저는 MyBatis를 사용하고 있습니다.그래서 xml을 작성할 때 먼저 DB에 쿼리를 작성하고 인덱스를 사용했는지원하는 인덱스가 사용됐는지 등등 EXPLAIN 으로 확인해보고 작성을 합니다. 제가 JPQL을 실무에서 사용해보지 않아서 궁금증입니다.그런데 JPQL로 작성하게 되는 상황이라면 SQL을 작성해보고 -> JPQL로 만드시나요? 아니면 다른 방법을 사용하시는지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2에 Member 테이블이 생성되지 않아요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]이렇게 컴파일 할 때 테이블이 실행되는 줄이 강의처럼 출력되지 않고 h2 에도 실제로 만들어지지 않아요.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
비밀번호 해결 문제입니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 비밀번호가 맞지 않는다고 하는데 어떻게 해결하면 좋을까요?? ㅠㅠㅠ
-
미해결스프링 시큐리티 OAuth2
Consent Page에서 기존 다른 OAuth처럼 필수 동의와 선택 동의를 구분해서 받을 수 있는지 궁금합니다.
기존 Default Consent Page는 선택적 동의만 받을 수 있도록 되어 있는 것 같습니다.Custom Consent Page 예시를 보더라도 Consent Page를 만드는 예시일 뿐 필수동의와 선택동의를 구분하는 방법은 찾을 수 없었습니다.결론적으로, Consent Page에서 선택 동의와 필수동의를 구분해서 받을 수 있는지와, 만약 가능하다면 어떻게 구성해야하는 지 궁금합니다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
스프링부트 2.x버전에서 복합키 매핑 오류 관련 문의
(기존의 질문드렸던 내용https://www.inflearn.com/questions/1022839/%EB%B3%B5%ED%95%A9%ED%82%A4-%EB%81%BC%EB%A6%AC%EC%9D%98-%EB%A7%A4%ED%95%91-%EC%A7%88%EB%AC%B8-%EB%93%9C%EB%A6%BD%EB%8B%88%EB%8B%A4의 추가 질문 입니다.) 안녕하세요.항상 좋은 강의감사드립니다! 😉😉현재 회사에서 팀내사용을 목적으로 백엔드 프로젝트를 제작 중인 개발자입니다.기존에 복합키 끼리의 매핑 관련해 질문을 드렸었습니다.해당 부분은 스프링부트 3.x버전으로 진행했는데 이번에 운영목적으로 사용될 서버가 java11까지만 지원해 어쩔 수 없이 java17에서 java11로, 스프링 부트는 3.x에서 2.x버전으로 버전 변경을 진행했습니다. 근데 버전을 변경하고 나서 해당 복합키 매핑 관련진행시org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: referencedColumnNames(company_code) of com.0.0.entity.Contract.company referencing com.0.0entity.Company not mapped to a single property at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1804) ~[spring-beans-5.3.26.jar:5.3.26] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.26.jar:5.3.26] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.26.jar:5.3.26] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.26.jar:5.3.26] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.26.jar:5.3.26] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.26.jar:5.3.26] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.26.jar:5.3.26] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1156) ~[spring-context-5.3.26.jar:5.3.26] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:910) ~[spring-context-5.3.26.jar:5.3.26] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.26.jar:5.3.26] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.10.jar:2.7.10] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) ~[spring-boot-2.7.10.jar:2.7.10] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.10.jar:2.7.10] at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.7.10.jar:2.7.10] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.7.10.jar:2.7.10] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.7.10.jar:2.7.10] at com.0.0.0.main(DzscrapingStlmApplication.java:10) ~[main/:na]Caused by: org.hibernate.AnnotationException: referencedColumnNames(company_code) of com.0.0.entity.Contract.company referencing com.0.0.entity.Company not mapped to a single property at org.hibernate.cfg.BinderHelper.createSyntheticPropertyReference(BinderHelper.java:203) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:104) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processEndOfQueue(InFlightMetadataCollectorImpl.java:1750) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processFkSecondPassesInOrder(InFlightMetadataCollectorImpl.java:1694) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1623) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:295) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1460) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1494) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) ~[spring-orm-5.3.26.jar:5.3.26] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.3.26.jar:5.3.26] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-5.3.26.jar:5.3.26] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-5.3.26.jar:5.3.26] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.3.26.jar:5.3.26] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.26.jar:5.3.26] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.26.jar:5.3.26] ... 16 common frames omitted 이러한 오류가 발생하면서 빌드가 진행되지 않습니다.버전 문제라고 생각한 이유는 코드를 그대로 보존 후(jakarta-> javax import변경) 진행했는데 java17에서는 오류없이 진행되고 java11에서는 위와같은 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: referencedColumnNames(company_code) of com.0.0.entity.Contract.company referencing com.0.0entity.Company not mapped to a single property오류가 발생합니다.해당 오류가 발생하는 원인과 해결방법을 알 수 있을까요? 감사합니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Execution failed for task ':compileJava'. 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요 강의수강 잘 하고 있는 한 수강생입니다 자바 버전11버전으로 설치하고 셋팅도 맞춰서 했는데 왜 계속 오류가 나는지 모르겠습니다..
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
"그래서 DB에 저장할 객체에는 상속 관계 안쓴다."
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)'SQL 중심적인 개발의 문제점' 강의를 복습하다가 짚고 넘어갈 부분이 생겨 질문드려요.각각의 테이블에 따른 조인 SQL 작성 등 때문에 번잡해서 DB에 저장할 객체에는 상속 관계를 잘 안쓴다고 강의에서 설명하십니다.현재 맥락에서 말하는 상속 관계란 왼쪽 그림과 같은 '객체에서의 상속 관계'를 의미하는 것이 맞겠죠?