학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 강의 잘 듣고 있습니다. cascade,연관 관계를 사용하는 기준이 궁금해서 질문 글을 작성합니다. 1.cascade 질문 제가 이해한 바로는 엔티티를 영속성 컨텍스트 관리를 받기 위해 persist 등록하는 것이며 각 엔티티는 따로따로 persist를 해야 되는데 cascade를 사용하면 하나의 엔티티를 persist할 때 그와 연관된 엔티티를 같이 해주는 것으로 이해했습니다. Order 코드에서 OrderItem과 Delivery에 cascade가 적용됐는데 Member에는 적용을 안 하는 것 같더라고요. 왜 Member는 안 하는지 궁금합니다. 연관 관계 질문 order와 연관된 엔티티 간에 연관관계 메소드를 통해 한쪽에서 서로 등록해주는 것은 이해가 가는데 Item과 Category간에는 어느 쪽에도 연관 관계 메소드가 없는 이유가 궁금합니다. Item과 Category 이 둘은 약간 상수? 느낌이라서 연관 관계를 지을 필요가 없는 것일까요? 답변 주시면 정말 감사하겠습니다.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
orphanRemoval 을 걸지 않았을 경우 책6을 삭제했으나, userLoanHistories를 조회해보면 여전히 책6이 존재한다. orphanRemoval = true 을 걸었을 경우 클린 코드를 삭제했더니 조회시 사라졌다 어째서 orphanRemoval 을 걸어주지 않으면 데이터베이스에 반영이 되지 않는건가요? @Transactional 어노테이션으로 인해 트랜잭션이 시작될 때, 영속성 컨텍스트가 시작되고, 영속성 컨텍스트의 4대 특징 중 하나인 생성/수정 감지로 인해 user 객체의 userLoanHistories 의 값에 변경사항( removeOneHistory )이 발생하여 자동저장이 될거라고 생각했는데 말이죠.. 실제 데이터베이스상에선 userLoanHistories 는 user테이블의 필드가 아니기 때문에, 영속성 컨텍스트가 관리하는 field 에 포함이 되지않는데 orphanRemoval = true 를 걸어주면 비로소 자신이 관리하는 field로 인식하는걸까요? 원리가 너무 궁금해요.. 내용추가1) 바로 다음 강의인 책 대출 리팩토링에선 orphanRemoval 같은 옵션을 주지 않고도 new userLoanHistory 를 add한 내용대로 저장이 되는데, 어째서 userLoanHistory 를 remove하는것은 orphanRemoval 옵션이 없으면 데이터의 변경이 일어나지않는지 궁금합니다.. 제 생각에는 User 에서 userLoanHistories.add 를 하든 userLoanHistories.remove 를 하든 둘 다 User 와 UserLoanHistory 와의 연관관계를 이용한 데이터를 변경하기위한 접근같은데 .. add는 되는데 remove는 안되는게 살짝 이해하기 어렵습니다 ㅠ 내용추가2) returnBook 과 loanBook , removeOneHistory 의 차이점이 뭘까 고민해봤는데 returnBook 과 loanBook 은 UserLoanHistory 라는 Entity에 접근하는 과정 (loanBook은 Entity객체생성, returnBook은 Entity의 property 수정)이 존재하고, removeOneHistory 는 Entity에 직접 접근하는게 아니라 단순히 List에 대한 변경일뿐이고, Entity에 대한 직접적인 수정이나 생성이 이뤄진것이 아니므로 데이터베이스의 변경이 일어나지 않았다. 이렇게 이해했는데 제가 이해한 내용이 맞을까요? 생각을 정리하다보니 질문이 길어진 점 죄송합니다 ㅠ
안녕하세요. 강의 스크립트(자막)을 받을 수 있을까요? 제공되는 노트는(pdf)는 온라인 강의 목차정도만 있고 실제 내용은 강의에서 말로 설명으로 지나가서, 노트 정리를 다시 하려고 하니 영상을 계속 앞뒤로 돌리면서 자막을 보고 있습니다. 챕터별 강의스크립트를 별도로 받을 수 없을까요? 스크립트를 읽고 영상 강의를 듣는 게 정리하는 데 도움이 될 것 같아 문의 드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] id 'java' id 'org.springframework.boot' version '3.2.2' id 'io.spring.dependency-management' version '1.1.4' java { sourceCompatibility = '17' } 현재 쓰는 버전입니다. 애플리케이션 실행에는 문제가 없지만 테스트시에 아래와 같이 오류가 뜹니다. Execution failed for task ':test'. > There were failing tests. See the report at: file:///C:/Workspace/jpa_%EA%B0%95%EC%9D%98/jpashop/build/reports/tests/test/index.html * Try: > Run with --scan to get full insights. 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.5/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD FAILED in 1s 4 actionable tasks: 1 executed, 3 up-to-date 이에 대한 해결 방법을 찾아 보던 중 파일 - 설정 - 빌드,실행,배포 - gradle - 다음을 사용하여 테스트 실행 - IntelliJ IDEA 로 변경을 하여 해결하였습니다. 해결은 했지만 왜 이와같은 오류가 일어났었는지 IntelliJ IDEA 로 테스트를 실행하도록 했을 때 왜 동작하는지 앞으로 다른 문제가 발생하지는 않을지 궁금합니다.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
스프링부트에부터는 내장 톰캣을 사용하는거엔 익숙해져 있는데,과거에는 RedHat JBoss와 같은 외장 WAS들을 사용했다고 하던데 이로 인해 발생하는 단점 같은 것은 없을까요? 예를 들어 기술 지원을 더이상 받지 못한다던가.. 외장 WAS들이 가지고 있는 장점이 사라진다거나 성능의 차이같은 것은 없는지 궁금합니다. 검색을 해보았을 땐 내장 톰캣이 아파치 톰캣 개발자들도 내장 톰캣의 사용에 문제가 없다라고 했다던지, 성능 차이가 크지 않다는 자료들은 찾았는데 아직 여전히 스프링부트를 사용하지 않는 회사들이 많다고 알고 있습니다. 강의 내용처럼 이렇게 편리하다면 스프링부트의 버전업은 몰라도 스프링'만' 쓰는 회사들이 시스템을 스프링부트로 업그레이드 하지 않을 이유는 없을 것 같아서요! 친절한 강의 감사드립니다. 태현님!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 처음에 db delete 안 해주고 실행했을 때도 체크 표시가 떴고 delete 해주고 실행, db에서 회원 목록 조회하니 목록에 아무도 없습니다. test가 db에 연결이 안된 걸까요?
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
HTTP 메서드에 처음 공부할 때 수정의 경우에는 PUT과 PATCH를 사용한다고 배웠는데요. PUT의 경우에는 통째로 갈아끼우는 방식의 갱신이고 PATCH의 경우에는 부분 수정이 가능하다고 배웠습니다. 이 강의에서는 USER의 정보중에 이름만받고 있어서(PUT은 전체 필드를 명시해주어야 한다고 배웠습니다.) PATCH가 더 적당한 방식이 아닌가라는 생각이 들었습니다. PATCH가 아닌 PUTMapping을 사용하신 이유가 있으실까요? 그리고 이와 관련된 블로그 글들이 많은데 저마다 내리는 결론이 달라서 조금 혼란스럽습니다. 강사님의 생각을 듣고 싶습니다. 좋은 강의 만들어주신 태현님을 존중하고 존경하며 이만 글 줄이겠습니다!
Lecture 7 진행 하고 있는데.. 코드를 복사해서 붙여 넣어서 똑같이 만든 다음 봐보니까 lambda.ts에서 오류?가 2개가 나오더라구요.. 내용은 이렇습니다. Bucket: Bucket.Uploads.bucketName TableName: Table.Collections.tableName 여기에 Uploads / Collections 가 속성이 없습니다라고 나오네요.. 확인 부탁드립니다! lambda.ts 오류 내용 MyStack.ts 내용
강의를 보면서 똑같이 user data에 넣어서 인스턴스를 만들다보면 어떤 인스턴스는 브라우저에 화면이뜨고, 어떤 인스턴스는 연결할 수 없다고하는데 이유가 먼가요..? 심지어 같은 sercurity를 사용할때 이런 현상이 나오더라구요. 민약 public lpv4 접속할때 브라우저에 화면이 안떠도 인스턴스 자체에 connect가 되면 상관없는건가요..?
IAM파트 강의보면서 실습중인데(현재는 EC2), 인스턴스 생성을 하려면 vpc를 만들고, 네트워크 설정도 넣어줘야하더라구요 강의 상에서는 이미 만들어져있는것으로 보이는데 해당 값들은 어떻게 줘야할까요? 이해하는데에는 무리가 없어서 일단은 강의를 듣고있는데 어떻게 처리하면 좋을지 궁금합니다
강의로 듣는 사람들은 DB를 제공하지 않는다고 해서 저는 직접 DB를 만들어 실습을 해보고 싶어서 만들어 봤고 아마 저처럼 DB를 직접 만들어 실습하고 싶은 분들이 많을 것 같아서 공유합니다. +EC2말고 RDS로 하면 더 쉽게 DB를 만들 수 있다고 하는데 따로 알아보셔도 좋을 것 같습니다. +비용이 들 수도 있는데 이부분에 대해선 잘 모르겠습니다. 저도 조금 비용이 나가는데 투자한다치고 걍하는중 OS는 window10 입니다. PostgreSQL 설치를 위한 aws EC2 인스턴스 생성 - https://velog.io/@yun8565/AWS-EC2-%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4-%EC%83%9D%EC%84%B1%ED%95%98%EA%B3%A0-%EC%9B%90%EA%B2%A9-%EC%A0%91%EC%86%8D%ED%95%98%EA%B8%B0 * aws 계정 회원가입&로그인 해야합니다. * EC2(EC2 대시보드) > 인스턴스 시작 버튼으로 인스턴스 만들기 * 다운받은 키페어파일(.pem 파일)은 'C:\Windows\System32' 이 경로에 넣어두시면 cmd에서 굳이 pem파일이 있는 경로로 갈 필요 없어서 편리합니다! Ubuntu에 PostgreSQL 설치 - https://velog.io/@yun8565/EC2-Ubuntu%EC%97%90-Postgresql-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0 * \password 명령어로 password 입력할 때 입력한게 안보이는 것이 정상입니다! 입력하고 엔터 누르시면 됩니다! * 접속 확인 단락에 create user로 사용자 생성하고 생성한 user에 비밀번호를 설정하고 권한을 부여할 필요 없습니다! 그냥 기본 postgres 로 사용해도 됩니다.(이것 때문에 index.ts에서 username과 password에 기본으로 있는 postgres로 입력해야 할지 생성한 걸로 입력해야 할지 계속 접속 실패하고 한참 헤매서 ㅠ 인스턴스를 다시 만들고 저도 그냥 기본으로 진행했습니다.) * 사이트 처럼 pgAdmin4를 사용해도 되지만 강의와 똑같이 하고 싶으신 분들은 스킵하고 나중에 DBeaver 설치하고 연동하시면 됩니다! ex) class_backend > index.ts import { DataSource } from "typeorm"; import { Board } from "./Board.postgres"; const AppDataSource = new DataSource({ type: "postgres", host: "**.**.***.**", // 내 인스턴스 우측 맨 위에 있는 퍼블릭 IPv4 주소 port: 5432, username: "postgres", // 기본 계정? password: "******", // cmd에서 \password 명령어로 설정해준 비밀번호 입력 database: "postgres", entities: [Board], // 우리가 만든 테이블 형태 synchronize: true, // 동기화하다, 테이블 만들어 달라는 요청 logging: true, }); AppDataSource.initialize() .then(() => { console.log("DB접속 성공"); }) .catch((error) => { console.log("DB접속 실패"); console.error("원인: ", error); }); [cmd로 내 ubuntu의 postgresql 다시 접속하는 법] AWS > EC2 > 내 인스턴트의 연결로 들어가 SSH 클라이언트 탭에서 밑에 '예:' 밑에 있는 코드를 CMD 에 입력(키페어파일 있는 경로에서) 2. 입력 후 sudo -u postgres psql 명령어 입력(종료할 땐 \q ) [정리] 인스턴스 생성 후 CMD 관리자권한으로 실행 AWS > EC2 > 내 인스턴트의 연결로 들어가 SSH 클라이언트 탭에서 밑에 '예:' 밑에 있는 코드를 CMD 에 입력(다운받은 키페어가 있는 경로에서)하면 내 인스턴스에 연결됨(ssh -i ~ 로 시작하는 거, 위에 있는 건 할 필요 없음) 연결된 상태에서(최초 접속 시 sudo apt update 명령어로 패키지 목록 업데이트(왜하는진모름)) sudo -u postgres psql 명령어 입력하면 내 인스턴스에 설치된 PostgreSQL 에 접속( \q 입력하면 접속 종료, 그 외 명령어들은 검색해서 참고) 강의처럼 테이블 클래스 만들고 index.ts로 db 접속하는 로직 만들고 package.json에서 ts-node로 typescript 파일 실행할 수 있도록 만든 명령어로 실행(ex. yarn ti ), console로 성공여부를 보여주도록 했고 실패하면 오타가 있거나 잘못 적은 것이 있을 것이다. PostgreSQL을 육안으로 더 편하게 보고 관리하기 위해 DBeaver를 설치하여 연결하고 확인해보기(DBeaver 연결도 index.ts에서 입력해준 것처럼 그대로 입력해주면 끝) DBeaver 내 PostgreSQL에 연결하는 법 - https://www.sfdccode.com/95