묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
category item 관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]다대다 연관관계가 안좋다해서 중간 엔티티로 categoryitem을 만들어서 해보고있는데 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: mappedBy reference an unknown target entity property: Shop.ShopingMall.domain.Category.category_item in Shop.ShopingMall.domain.CategoryItem.categories 이러한 오류가 떴습니다.. 해결방법이 뭘까요?? 코드는 다음과 같습니다 package Shop.ShopingMall.domain; import lombok.Getter; import lombok.Setter; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity @Getter @Setter public class Category { @Id @GeneratedValue @Column(name = "category_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "category_item_id") private CategoryItem categoryItem; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "parent_id") private Category parent; @OneToMany(mappedBy = "parent") private List<Category> child = new ArrayList<>(); } package Shop.ShopingMall.domain; import Shop.ShopingMall.domain.Item.Item; import lombok.Getter; import lombok.Setter; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity @Getter @Setter public class CategoryItem { @Id @GeneratedValue @Column(name = "category_item_id") private Long id; @OneToMany(mappedBy = "category_item") private List<Category> categories = new ArrayList<>(); @OneToMany(mappedBy = "category_item") private List<Item> items = new ArrayList<>(); } package Shop.ShopingMall.domain.Item; import Shop.ShopingMall.domain.CategoryItem; import lombok.Getter; import lombok.Setter; import javax.persistence.*; @Entity @Getter @Setter public class Item { @Id @GeneratedValue @Column(name = "item_id") private Long id; private String name; private int price; private int stockQuantity; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "category_item_id") private CategoryItem categoryItem; }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
일대일 관계에서의 연관관계의 주인
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]연관관계의 주인을 외래키에 두라고 하신말씀은 알겠습니다.그것이 일대다 인경우는 자동차와 바퀴의 예를 들면서 말씀해주셔서 알겠는데 1대1관계의 경우 어느쪽이 외래키라고 할수 있는걸까요? 오더와 딜리버리의 경우에 오더가 관계의 주인이 되었는데 왜? 라고 물으면 잘 모르겠습니다만약에 예를들어 유저와 유저정보간의 관계가 있다면 그경우의 연관관계의 주인은 어떤것일까요?기준을 좀만 더 정확하게 알려주셨으면 좋겠습니다...
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
beforeEach에 객체를 생성하면....
service에서 private final MemberRepository memberRepository = new MemoryMemberRepository();위 코드를 보면 리포지토리 안에 store가 static으로 되어있으니 당장은 상관없으나 혹시 모르니 다른 객체를 사용하지 않도록 private final MemberRepository memberRepository; public MemberService(MemberRepository memberRepository) { this.memberRepository = memberRepository; }위와 같이 service에서 리포지토리를 주입 받는다라고 했는데요 근데 테스트케이스에서@BeforeEach public void beforeEach() { memberRepository = new MemoryMemberRepository(); service = new MemberService(memberRepository); }BeforeEach에 이런식으로 코드를 작성하면 리포지토리를 주입 받기는 했지만 결국 케이스별로 다른 리포지토리 인스턴스를 주입 받은거 아닌가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
BindingResult에 관해
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의 잘 듣고 있습니다! 학습을 위해 예제 코드를 조금 응용해서 TODO 앱를 만들어보고 있는데 의도한 기능대로 작동이 안 됩니다. 강의 내용과는 조금 방향이 다르지만 BindingResult 관련 질문이기도 하고 하루종일 해봐도 모르겠어서 질문 올립니다. 강의 예제의 [회원 가입] 폼에서 이름을 비워두고 제출한 경우 @Valid 검증 오류가 발생 하여 return "members/createMemberForm" 되고, View에서 <p th:if="${#fields.hasErrors('name')}" th:errors="*{name}"><p>가 삽입되면서 MemberForm의 @NotEmpty 에러 메세지가 출력되는 기능을 조금 바꿔서 해 수정 기능에 적용해 보려고 했습니다. 의도한 기능은 이렇습니다. (코드는 밑에 있습니다)할 일(task) 수정을 누르면 @GetMapping("/tasks/{taskId}/edit")와 매핑된 메서드가 전달된 파라미터의 taskId로 할일 객체를 찾아 TaskForm(할일 Form 객체)에 값을 세팅합니다. 그리고 이 TaskForm 객체를 Model에 "form"이라는 이름으로 값을 담아 전달합니다.View(할일 수정 폼)에서 수정하고자 하는 할일의 현재 name 값, priority 값를 보여줍니다. (수정을 위해 현재 값을 표시해줌)수정 폼을 채우고 제출을 누르면 @PostMapping("/tasks/{taskId}/edit")에 매핑됩니다. 만약 검증에 오류가 있는 경우 return "task/editTaskForm";를 합니다. 즉 editTaskForm.html 문서를 엽니다. 문제 상황 :그런데 editTaskForm.html 파싱에 실패합니다. 해당 Task의 현재 값을 미리보기 해주려면 ${form.name}을 참고해야 하는데 form이 넘어가지 않아서 인 것 같습니다. 그래서 @SessionAttributes("form")로 세션에 저장해주었습니다(스프링 2.7입니다).2. 이제 파싱은 되고 해당 Task의 현재 값 미리보기도 됩니다. 그런데 여전히 <p> 태그가 생성되지 않아서 오류 메세지도 출력이 안 됩니다. BindingResult가 날아간 것 같습니다.3.방법을 바꿔서 View를 바로 여는 게 아니라 @GetMapping으로 리다이렉트를 해보았는데 역시 Model이 초기화되면서 BindingResult가 날아가는 것 같습니다 ㅠㅠ검색해보니 RedirectAttributes를 써야 한다는데 저는 강의와 똑같이 스프링 2.7을 쓰고 있는데 3.1 미만 버전에서는 GET 파라미터로 전달하는 것 외엔 방법이 없을까요? @Controller @RequiredArgsConstructor @SessionAttributes("form") public class TaskController { private final TaskService taskService; @ModelAttribute("form") public TaskForm getTaskFrom() { return new TaskForm(); } @GetMapping("/tasks/{taskId}/edit") public String editTaskForm(@PathVariable Long taskId, Model model) { Task task = taskService.findOne(taskId); TaskForm form = new TaskForm(); form.setName(task.getName()); form.setPriority(task.getPriority()); model.addAttribute("form", form); return "task/editTaskForm"; } @PostMapping("/tasks/{taskId}/edit") public String editTask(@PathVariable Long taskId, @Valid TaskForm form, BindingResult result, SessionStatus sessionStatus) { if (result.hasErrors()) { return "task/editTaskForm"; } taskService.editTask(taskId, form.getName(), form.getPriority()); sessionStatus.setComplete(); return "redirect:/tasks"; } } JPA 활용 2편까지도 들었고 MVC 1까지도 들었는데.. MVC 2의 BindingResult 강의를 듣고 다시 해보는게 좋을까요?하지만 너무 해결하고 싶습니다.........🥺 어느 부분을 체크해보면 좋을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
오류가 떴는데 코드를 봐도 잘 모르겠네요..
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]이유를 잘 모르겠네요...
-
미해결스프링 시큐리티 OAuth2
Session id가 인가 코드와 access token을 교환하는 도중에 변경됩니다.
안녕하세요. 강의 잘 듣고 있습니다.제목에서처럼, session id가 access token을 교환하는 일련의 과정 중에 변경되어 다음과 같은 오류가 브라우저 상에서 보여집니다.해당 에러 메시지를 내뱉는 로직이 OAuth2LoginAuthenticationFilter 클래스의 attemptAuthentication 메소드에 있음을 확인하였습니다. 제가 찾은 원인은 OAuth2AuthorizationRequestRedirectFilter에서 AuthorizationRequest의 저장까지는 성공적인데, OAuth2LoginAuthenticationFilter에서 AuthorizationRequest를 Repository에서 꺼내오려고 시도할 때 바뀐 session id값 때문에 이전의 AuthorizationRequest 객체를 가져오지 못하고 null을 반환하는 것이었습니다. 이렇게 session id가 바뀌는 원인이 무엇인지 알려주시면 감사하겠습니다 ㅠㅠ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
JPA1편 -> JPA2편 -> 기본편 순으로 학습해도 될까요?
김영한 강사님 추천 로드맵 수강 순서를 보면 JPA1편 -> 기본편 -> JPA1편 복습 -> JPA2편으로 되어있는데요 제 시간 사정상 최대한 빨리 익혀야 하기도 하고, API 설계나 DTO가 너무 궁금해서 곧바로 JPA2편으로 학습하고 싶습니다.JPA1편에서 모르는 개념들(영속성 컨텍스트, 머지, 도메인 설계)이 많아서 우선 그냥 코드 따라하기 식으로 하고 있는데요JPA2편까지 따라하다가 기본편 다시 봐도 될까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
aws 서버 비용문제 질문드립니다.
서버 인스턴스를 만든 상태에서 인스턴스 비용이 발생하지 않도옥 중간에 잠시 멈춰둘순없나요??
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Category
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]Category 에 parent와 child의 역할이 뭔지 수업을 듣고도 잘 모르겠습니다 단순히 부모카테고리 자식카테고리로 알고있으면 되는걸까요? 이렇게 만들면 연결된 items 하고도 부모카테고리와 자식카테고리가 어떻게 엮이는지 잘 이해가 안갑니다
-
미해결쥬쥬와 함께 하루만에 시작하는 백엔드 - 스프링, 도커, AWS
2-4 수정중 오류
안녕하세요 쥬쥬님 강의 너무 잘 듣고 있습니다 제가 따라가는건 잘했는데 지금 AGE 부분이 프라이머리 키로 지정이 되어있는 것 같은데 어디서 부터 잘못된건지 모르겠습니다...
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Category-Item의 다대다 관계에 대한 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]다대다 관계는 실무에서 한계가 크다는걸 배우고 다대일 일대다 관계로 중간엔티티 CategoryItem을 만들어서 해보려고 하는데 그떄 어떻게 연관관계를 짜면 될까요?어떤컬럼을 어떤식으로 받아오면되는지 헷갈립니다...
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Fetch Join된 Table과 Fetch Join
안녕하세요. 회사 신규 프로젝트로 Spring Boot와 JPA를 이용해 백엔드를 개발하고 있는 직장인입니다.원래 C#개발자다 보니 수업을 들으며 차근차근 따라가 보지만 의외의 경우가 발생해 힘들지만좋은 강의에 항상 재밌게 배우고 있습니다. 이번에 문의드릴 내용은 fetch join된 table에 다시 fetch join 하는 방법에 대해 문의 드리고자 합니다. 문제의 테이블 구조입니다.Count Table과 Contract Table은 company_code라는 pk로 N:1구조Contract Table은 Company Table과 company_code라는 pk로 N:1구조로구성돼 있습니다. 그리고 Count, Contract Table은 매핑되는 키에 대해서 FetchType을 Lazy로 설정한 상태입니다. 저는 여기서(JPQL기준) Count Table을 기준으로 Contract Table까지는 fetch join에 성공했지만 추가로 Company관련 쿼리가 N+1처럼 추가됐습니다. 혹시 제가 JPQL혹은 Query DSL방법으로 Contract Table과 Company Table을 fetch join 처리 후 다시 Count Table과 fetch join해 쿼리 하나로 해결 할 수 있는 방법이 있을까요? 감사합니다. :D
-
미해결실전! 스프링 데이터 JPA
Pageable에서 sort 내부 property에 대한 유효성 검사
안녕하십니까 영한님.강의 유익하게 잘 들었습니다. 덕분에 궁금증이 많이 해결되었습니다.다름이 아니라, 제가 Pageable를 사용한 페이징 기능을 테스트 해보는 과정에서 sort의 property에 실질적인 entity 정보가 노출된다고 생각되어 고민에 빠진 상태입니다. 페이징 관련된 파라미터를 dto로 받게되면 유효성 검사는 가능하나 sort의 순서를 보장하기 어려워 추가적인 파라미터가 필요하다고 생각됨.pageable로 받은 후 for문을 돌려 유효성 검사를 하게 되면 하위의 단계로 나눠지는 불편함 1) controller에서 dto로 유효성 검사를 위한 for문 2) entity는 service에서만 사용하게끔 유도하기 위해 controller에서는 유효성 검사가 끝난 dto를 service로 넘겨서 entity로 재조립하는 for문등등 여러가지 방법들을 고민해보다 질문드립니다.실질적으로 실무에서 사용되는 Paging 기법이 있거나 개선 사항이 있으면 공유해주시면 감사하겠습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
도메인 getName이 null이라고 test 실행이 안돼요
(사진)
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Spring import 문제 해결을 못하겠습니다...
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]영상대로 따라하다가 도저히 해결을 못하겠어서 질문드립니다...실행되다가 아래 오류 메세지가 나오면서 실행이 안되네요 ㅠㅠ 어떤 오류인지 모르겠습니다.원래는 이클립스로 먼저 했었는데 똑같이 실행하다가 시작할 수 없다는 문구가 나오고 8080을 이미 사용중? 이라는 문구가 나왔네요 부탁드립니다. 아래는 인텔리제이 실행화면입니다.
-
미해결스프링 부트 웹 개발 입문 - 따라하며 배우기
안녕하세요 Ajax강의 잘듣고있습니다. 다름이 아니라 Ajax로 검색할떄 시작일이나 종료일 고객명과 같은 검색조건을 어떻게 구현해야하는지 고민을해보다 질문드립니다.
package com.boot.sailing.v3.controller; import com.boot.sailing.v3.service.MemberSvc; import com.boot.sailing.v3.vo.Cust_info; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; @Slf4j @RestController @RequestMapping ("/v3") public class MemberAjax { @Autowired MemberSvc memberSvc3; @RequestMapping("/member_searchAjax") public List<Cust_info> list( @RequestParam("start_date") String strStartDate, @RequestParam("end_date") String strEndDate, @RequestParam("name") String strName, Model model ) { List<Cust_info> list = memberSvc3.doSerch(strStartDate,strStartDate,strName ); return list; } } $(document).ready(function(){ // 조회버튼클릭 $.ajax({ url : "/v3/member_searchAjax", // 파일경로 method : "GET", // GET, POST contentType : "application/x-www-form-urlencoded", //data : _data, // 서버에 전달할 Parameter dataType: "json", // 서버에서 전달받을 Data 형식 async: false, // 비동기사용여부 true , false success : function(data) { // 성공시 실행 (java try) , JSON.parse 자동적용 RespData console.log(data) let _contents=null; for(let i in data) { _contents += '<tr>\n' + ' <td><input type="checkbox" name="chkCoffeeNo" value="' + data[i].no + '"></td>\n' + ' <td>Ajax' + data[i].no + '</td>\n' + ' <td>' + data[i].cust_id + '</td>\n' + ' <td>' + data[i].name + '</td>\n' + ' <td>' + data[i].email + '</td>\n' + ' <td>' + data[i].role + '</td>\n' + ' <td>' + data[i].reg_day + '</td>\n' + ' </tr>' } $("#t_body").html(_contents); }, error:function(request,status,error){ // 오류시 실행 (java catch) console.log("code = "+request.status +"message = "+ request.responseText +"error = "+ error); }, complete : function (){ // 성공/실패와 상관없이 실행 (java finally) console.log("Finish") } }); }); 고객정보부분에 제가 따로 검색기능을구현시도해보았습니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
pring security관련 질문드려요
저는 msa 구축된 서비스를 인수인계 받아 이해하려고 해당 강의를 듣고있습니다.때문에 지금 강의와 함께 진행중인 공부용 project하나, 운영되고 있는 project하나를 로컬소스로 가지고있는데요.spring secure cofig만 구현해주면 공부용 project에서 구동한 eureka에서 -> 운영project의 microservice가 연동이 됩니다.그리고 eureka서버 콘솔에는 8761로 연결실패했다고 뜹니다(처음에 8761로 공부했다가 7777로 변경) 디펜던씨와 websecurity java를 주석처리하면 정상동작합니다.. 왜그런건가요..도대체.. ? [공부project]Eureka(port:7777)-> gateway(port:8000) -> userservice(port: random)[운영project]gateway(port: 80) -> microservice1(8001)
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
간단한 주문 조회 V1: 엔티티를 직접 노출 관련 오타있어서 질문드립니다.
pdf 14페이지에서 order -> address가 아니라 order -> delivery가 아닌가요?order 클래스를 확인해봤는데, 지연 로딩에 해당하는 부분은 member 하고 delivery입니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
잘 이해가 가지 않아서 여쭤봅니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]스프링부트 + JPA 1편에 이어서 하시는것 같은데 controller 모델이 있지만 api Controller를 다시 만들어서 사용하는 이유가 무엇일까요? 따라하고나서 배운것을 찬찬히 보고있는데 개념이 헷갈립니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
실행이 안되네요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]빌드까지 성공했는데 실행이 안되요