묻고 답해요
154만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
트랜잭션을 리포지토리가 아닌 서비스계층에 적용하는 이유가 궁금합니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.왜 서비스에 트랜잭션을 적용하냐는 다른 분의 질문에 하나의 트랜잭션으로 묶어서 사용하기 위함이라고 답글이 달린걸 봤는데 이것또한 그러한 이유때문인가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
H2 테이블 생성이 되지 않습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요, 이전 강의의 MEMBER (id, username으로 구성된 테이블) 까지는 잘 생성이 되었는데 [엔티티 클래스 개발] 부터 DB가 업데이트 되지 않는 것 같습니다. 개발 환경 특이사항스프링부트 3.3 / JUnit5 현재 문제 상황애플리케이션 실행 시 Started Application까지 문제 없이 실행된 이후 쿼리가 찍히지 않음DB에는 변동이 없음 (MEMBER는 이전에 생성했던 테이블) 질문 전 확인 완료 사항프로젝트 처음 생성 시 생성되는 Application 클래스의 패키지 하위에 엔티티 클래스들이 위치함h2로 테이블 생성이 안됩니다.ddl-auto 옵션이 create로 설정되어 있음h2 테이블 생성이 안됩니다application.yml의 들여쓰기를 확인함h2 데이터베이스 테이블 생성이 안됩니다. DB url을 정확히 입력함 확인 부탁 드립니다. 감사합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강의자료 import부분
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]1.프로젝트 환경설정 파일의 MemberRepositoryTest 파일의 import 부분이 강사님의 구조와 달라요!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품카테고리테스트/ 테스트디비접속오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 안녕하세요, 제가 강사님 강의를 듣고 강의 부분에 없는 카테고리 부분을 테스트 해보았는데요https://drive.google.com/file/d/1ahr-kGf3jim0rx8vVzROBz_Qk_DchCSi/view?usp=sharing테스트시 초록색표시로 통과는 됐는데 막상 테스트 db로 접속해서 (테스트코드에 transactional commit 어노테이션했습니다). 보려니 테스트 디비로 들어가지지 않습니다 ㅜ 테스트 디비로 들어가는 방법을 잊어서 어떻게 들어가서 확인을 해야하는지 모르겠는데 방법 가르쳐주실 수 있을까요?
-
미해결[Django] 장고로 인프런 따라만들기
ckeditor에서 richtextuploadingfield부분이 생성이 안되는 부분
board_text=richtextfield(null=true)를 넣으면 원하는 형태의 richtextfield가 출력이 되는데board_text=richtextuploadingfield(null=true)로 바꾸면 단순히 listbox(textbox)가 나옵니다. 똑같이 코드를 하였는데 ,뭐가 잘못된 것인가요?환경은 windows 10입니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
entity manager와 스프링 빈
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@Repositorypublic class MemberRepository { @PersistenceContext private EntityManager em; ....} 위 코드에서 질문이 하나 있는데요, EntityManagerFactory가 스프링 빈으로 디폴트로 등록이 되고 위 em에다가 entitymanager를 만들어서 주입을 해 주는 것인지,아니면 EntityManager가 스프링 빈으로 아예 등록이 되고 저 위에다가 주입이 되는 것인지(아닐 것 같기는 합니다!)궁금합니다
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
getItem 질문입니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요'getItem' 함수가 'setDelivery' 메소드처럼 사용자가 직접 만든 메소드가 아닌데 그러면 스프링 자체에 내장되어 있는 함수인가요? 아니면 어떤 라이브러리를 추가했기 때문에 사용이 가능한 것 인가요?1번 질문과 별개로, getItem()을 하면 어떻게 Item에 대한 정보를 가져오나요? 마찬가지로 getStatus()또한 컨트롤좌클릭해서 경로를 따라가니 private DeliveryStatus status;로 이동이 되더라구요. 대소문자 차이도 있는데 어떤 원리로 연결이 되고 함수가 자동적으로 생성이 되어있는지 궁금합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
에러 해결이 안돼 질문 드립니다ㅠㅠ
본 강의 섹션7. 홈화면과 레이아웃 강의를 듣다가 jpaShopApplication을 실행하면 서버에 연결될 수 없다고 뜨면서 에러가 납니다ㅠㅠ다음은 에러 메세지입니다! 10000자 이하로 작성하라고 해서 부득이하게 사진으로 첨부합니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
createQuery에서 i와 m의 차이점이 뭔가요? (select i from i / select m from m)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요강의에 나오는return em.createQuery("select i from Item i", Item.class)저 부분이 JPQL?을 만드는 쿼리 문장이라고 기억합니다.근데 저 부분이 예전에는 "select m from m"이라는 식으로 진행 되었던 것에 비해, 이번 강의에서는 "select i from i"식으로 진행이 되길래 이 i와 m은 무엇의 차이인지 궁금합니다.그리고 i와 m이 각각 무엇을 위해 쓰이는지도 궁금합니다긴 글 읽어주셔서 감사합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요 public void, public Item, public Member ... 등등 고민입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요!강의 내용에서 메소드를 만들 때 public void + 메소드명public Member + 메소드명public Item + 메소드명이런식으로 붙는데 왜 public void로 통일 되지 않는지 궁금합니다.★1. 왜 public Member 혹은 Item이 붙는지★2. 그 붙은 Member와 Item은 어떤 역할을 하는지★3. 제가 이 부분에 대해 왜 무지한지(자바 혹은 스프링 중 어떤 부분이 제가 부족한 것 인지) --위 부분들에 대하여 궁금합니다!답변 해주시면 정말 감사하겠습니다!긴 글 읽어주셔서 감사합니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 영화 사이트 만들기
movieTitle
movieTitle 값이 안나와요ㅜㅜㅜ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
'다대다' 속성 value 타입은 'Category'일 수 없습니다. 오류
안녕하세요 강의를 따라하던중 다음과 같은 오류가 발생합니다.교안과도 같은 코드이고 인텔리제이도 껐다 켰는데 왜 이런 문제가 발생하는지 모르겠습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
초반 진행 시 오류
Execution failed for task ':JpashopApplication.main()'.> Process 'command 'C:\Program Files\Java\jdk-17\bin\java.exe'' finished with non-zero exit value 1 이런 오류가 계속 나고 있습니다. 최대한 똑같이 따라하고 있다 생각했는데 어디가 잘못된 걸 까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
스크린 샷 문의
안녕하세요 인프런에서 업데이트를 한 것인지 어제까지만 해도 잘 되던 스크린샷 기능이 오늘부터 갑자기 안되네요..ㅜㅜ예전에는 이런 식으로 강의 노트에 스크린샷 기능을 통해서 전체화면 말고 필요한 부분만 캡쳐하고 정리했었는데..혹시 인프런 자체의 일시적인 문제일까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 메소드 질문입니다.
1.빨간색 화살표 옆에 질문올려놨습니다.2. 생성메소드createOrder를 10번 호출하면 order 변수가 담긴 order 1.....10까지 만들어질텐데요. 미리 정의된 setMember,setDelivery로 의해 order테이블, orderitem과 들어가게 되는건가요?//==생성 메서드==//public static Order createOrder(Member member, Delivery delivery, OrderItem... orderItems) {Order order = new Order();order.setMember(member);order.setDelivery(delivery);for (OrderItem orderItem : orderItems) {order.addOrderItem(orderItem);}order.setStatus(OrderStatus.ORDER);order.setOrderDate(LocalDateTime.now());return order;} 3.setStatus는 기본 메소드이고 setMember가 오버라이딩 메소드인가요?테스트 코드를 보면 연관관계메소드는 호출이 안되고 생성자 메소드가 호출되는데 연관관계메소드가 엔티티 관계를 재정의 해주는걸로 이해해도 되나요?카테고리 클래스 일부 중 //==연관관계 메서드==// public void addChildCategory(Category child) { this.child.add(child); child.setParent(this); } 프로젝트를 보면 연관관계메소드가 호출이 안되어있습니다. 그렇다는건 카테고리가와 item의 필드가 비어져있는데 왜 프로젝트는 오류가 안나는 건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강의교안과 영상 코드 차이 문의
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]아무래도 영상 촬영 시점도 차이가 있겠지만,강의영상에서 쓴 코드와pdf 코드 중 어떤 코드로 최종 작성해야하는지 문의드려요!예를 들어 ItemService.java에서findItem으로 썼는데,pdf에서는 Item으로 했더라구요. 둘 다 같이 보면서 공부해나가고 있는데두개가 다른 특별한 이유가 있는지,그러면 pdf와 강의 코드 중 어떤 걸로공부하고 작성하는 게 좋을지 문의드립니다!감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
[긴급] 프로그램 진행이 중단된 상황입니다ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]JPA 1편 완강한 상황입니다.다음 2가지 문제가 있어서 프로젝트 진행이 안 되는 상황입니다.어떻게 해결하면 좋을지 문의드립니다!!!!!'구글 드라이브 링크' 삭제합니다!(답변 감사합니다!!)1. '회원 목록'을 눌렀을 때 다음 에러가 나옵니다.This application has no explicit mapping for /error, so you are seeing this as a fallback.There was an unexpected error (type=Internal Server Error, status=500).org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'member'org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'member' Caused by: java.lang.IllegalArgumentException: org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'member' Caused by: org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'member' '상품 주문'을 눌렀을 때 다음 에러가 나옵니다.This application has no explicit mapping for /error, so you are seeing this as a fallback.There was an unexpected error (type=Internal Server Error, status=500).org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'member'org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'member' Caused by: java.lang.IllegalArgumentException: org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'member' Caused by: org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'member'
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 영화 사이트 만들기
npm run dev 연결이 안됩니다ㅜㅜ
PS C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master>npm run dev> react-boiler-plate@1.0.0 dev> concurrently "npm run backend" "npm run start --prefix client"[0] [0] > react-boiler-plate@1.0.0 backend[0] > nodemon server/index.js[0] [1] [1] > client@0.1.0 start[1] > react-scripts start[1] [0] [nodemon] 1.19.4[0] [nodemon] to restart at any time, enter rs[0] [nodemon] watching dir(s): .[0] [nodemon] watching extensions: js,mjs,json[0] [nodemon] starting node server/index.js[0] node:internal/modules/cjs/loader:1147[0] throw err;[0] ^[0][0] Error: Cannot find module 'bcrypt'[0] Require stack:[0] - C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\server\models\User.js[0] - C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\server\routes\users.js[0] - C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\server\index.js[0] at Module._resolveFilename (node:internal/modules/cjs/loader:1144:15)[0] at Module._load (node:internal/modules/cjs/loader:985:27) [0] at Module.require (node:internal/modules/cjs/loader:1235:19) [0] at require (node:internal/modules/helpers:176:18)[0] at Object.<anonymous> (C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\server\models\User.js:2:16)[0] at Module._compile (node:internal/modules/cjs/loader:1376:14) [0] at Module._extensions..js (node:internal/modules/cjs/loader:1435:10)[0] at Module.load (node:internal/modules/cjs/loader:1207:32) [0] at Module._load (node:internal/modules/cjs/loader:1023:12) [0] at Module.require (node:internal/modules/cjs/loader:1235:19) [0] at require (node:internal/modules/helpers:176:18)[0] at Object.<anonymous> (C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\server\routes\users.js:3:18)[0] at Module._compile (node:internal/modules/cjs/loader:1376:14) [0] at Module._extensions..js (node:internal/modules/cjs/loader:1435:10)[0] at Module.load (node:internal/modules/cjs/loader:1207:32) [0] at Module._load (node:internal/modules/cjs/loader:1023:12) { [0] code: 'MODULE_NOT_FOUND',[0] requireStack: [[0] 'C:\\Users\\Samsung\\Desktop\\project\\boilerplate-mern-stack-master\\server\\models\\User.js',[0] 'C:\\Users\\Samsung\\Desktop\\project\\boilerplate-mern-stack-master\\server\\routes\\users.js',[0] 'C:\\Users\\Samsung\\Desktop\\project\\boilerplate-mern-stack-master\\server\\index.js'[0] ][0] }[0][0] Node.js v20.11.0[0] [nodemon] app crashed - waiting for file changes before starting...[1] [HPM] Proxy created: / -> http://localhost:5000[1] i 「wds」: Project is running at http://192.168.11.5/[1] i 「wds」: webpack output is served from[1] i 「wds」: Content not from webpack is served from C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\client\public[1] i 「wds」: 404s will fallback to /[1] Starting the development server...[1][1] Error: error:0308010C:digital envelope routines::unsupported[1] at new Hash (node:internal/crypto/hash:68:19)[1] at Object.createHash (node:crypto:138:10)[1] at module.exports (C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\client\node_modules\webpack\lib\util\createHash.js:135:53)[1] at NormalModule._initBuildHash (C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\client\node_modules\webpack\lib\NormalModule.js:417:16)[1] at handleParseError (C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\client\node_modules\webpack\lib\NormalModule.js:471:10)[1] at C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\client\node_modules\webpack\lib\NormalModule.js:503:5[1] at C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\client\node_modules\webpack\lib\NormalModule.js:358:12[1] at C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\client\node_modules\loader-runner\lib\LoaderRunner.js:373:3 [1] at iterateNormalLoaders (C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\client\node_modules\loader-runner\lib\LoaderRunner.js:214:10)[1] at iterateNormalLoaders (C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\client\node_modules\loader-runner\lib\LoaderRunner.js:221:10)[1] C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\client\node_modules\react-scripts\scripts\start.js:19[1] throw err;[1] ^[1][1] Error: error:0308010C:digital envelope routines::unsupported [1] at new Hash (node:internal/crypto/hash:68:19)[1] at Object.createHash (node:crypto:138:10)[1] at module.exports (C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\client\node_modules\webpack\lib\util\createHash.js:135:53)[1] at NormalModule._initBuildHash (C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\client\node_modules\webpack\lib\NormalModule.js:417:16)[1] at C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\client\node_modules\webpack\lib\NormalModule.js:452:10[1] at C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\client\node_modules\webpack\lib\NormalModule.js:323:13[1] at C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\client\node_modules\loader-runner\lib\LoaderRunner.js:367:11 [1] at C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\client\node_modules\loader-runner\lib\LoaderRunner.js:233:18 [1] at context.callback (C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\client\node_modules\loader-runner\lib\LoaderRunner.js:111:13)[1] at C:\Users\Samsung\Desktop\project\boilerplate-mern-stack-master\client\node_modules\babel-loader\lib\index.js:59:103 {[1] opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],[1] library: 'digital envelope routines',[1] reason: 'unsupported',[1] code: 'ERR_OSSL_EVP_UNSUPPORTED'[1] }[1][1] Node.js v20.11.0[1] npm run start --prefix client exited with code 1
-
미해결실전! 스프링 부트와 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를 왜 안하시나요?