묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결타입스크립트 입문 - 기초부터 실전까지
함수에 매개변수의 객체타입의 인터페이스를 전달할 때
안녕하세요 강의 잘 듣고있습니다!강의와 핸드북으로 인터페이스를 공부하다가 궁금한 부분이 있어 질문드립니다.타입스크립트 핸드북에서 '타입의 조건만 만족한다면 객체의 속성 갯수가 더 많아도 상관 없다는 의미입니다' 이 부분에 대해서 입니다. 핸드북에 예제대로 따로 변수로 선언하고 콘솔에 찍어볼 때는 오류가 발생하지 않는데 같은 객체를 전달하였을 때는 오류가 발생합니다. 왜 그런걸까요?? interface User { name: string; age: number; } function userPrint(user: User) { console.log(user); } let user3 = {name: "Soojin", age: 25, adress: "Incheon"}; console.log(userPrint(user3)) console.log(userPrint({name: "Soojin", age: 25, adress: "Incheon"})); //'{ name: string; age: number; adress: string; }' 형식의 인수는 //'User' 형식의 매개 변수에 할당될 수 없습니다. //개체 리터럴은 알려진 속성만 지정할 수 있으며 'User' 형식에 'adress'이(가) 없습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
List
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요findAll()이 멤버 리스트로 반환해서 각 멤버별 이름을 한번 보고 싶어서 저렇게 for문을 작성했었는데 x가 member임에도 getName()함수가 사용이 안됩니다 혹시 어디가 잘못된걸까요?java를 너무 예전에 해보고 지금 이강의를 듣고있는데, 이것도 왜 안되는지 이유를 몰랐다면 다시 살짝 보고 하는게 좋을까요?
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
도커 이미지와 컨테이너에 대해 제가 이해한 것이 맞을까요??
안녕하세요 선생님! 강의 정말 잘 듣고 있습니다.친절하게 설명 해주셨는데도 감이 잘 잡히지 않아 여러강의를 중구난방으로 들으면서 이해를 하였는데요.제가 이해한 것이 맞는 지 확인 가능하실까요?..==================================== 도커가 다양한 인프라 환경에서 프로그램 설치 및 실행이 쉬운 이유??-> 도커 이미지 때문이다.-> 도커 이미지는 프로그램이 실행하는데 필요한 모든 것을 가진 소프트웨어 패키지 인데,프로그램을 실행 하는 명령어파일 스냅샷 으로 이루어져 있다.파일 스냅샷의 맨 아래에는 OS 기능을 하는 base image가 있다.==> 도커 컨테이너는 한 장비에 여러 어플리케이션을 기동하기 위해 인프라 가상화 기능을 지원하는 것일 뿐이고,사실은 도커 이미지에 존재하는 이 base image 덕분에 인프라 환경에 구애받지 않고 프로그램이 실행될 수 있는 것이다.혹은 이 때문이 아니라 도커 엔진이 리눅스 vm이라서 그런 것일까요?그렇다면 도커를 사용하는 서버 장비에는 무조건 도커 엔진이 설치가 되어야 하는 것이겠죠?... ==> 도커 이미지를 실행하면 도커 컨테이너가 만들어지고 해당 컨테이너에 이미지의 파일 스냅샷이 옮겨진 후 컨테이너가 도커 엔진에 의해 실행되면서 도커 설정파일에 정의된 프로그램 시작 명령어가 실행되며 프로세스가 host OS 위에서 기동된다. 가 저의 정리 입니다.. 혹시 위 내용이 맞을까요?...감사합니다..!
-
미해결홍정모의 따라하며 배우는 C언어
size_t
Unsigned int 는 64비트 OS라고 해서 꼭 64비트 정수를 사용하는게 아니라 32비트 일수도 있다라고 알고있고size_t는 32비트 운영체제에서는 32비트 정수를64비트 운영체제에서는 64비트 정수를 사용한다고 알고있습니다. 우선 제가 궁금한점은size_t 사용의 이점이 뭐가 있어서 Unsigned int대신에 사용하는 건가입니다.단순히 이 코드를 다른 컴퓨터에서도 실행 시켰을때 정상적으로 잘 작동시키는가에 대한 이식성을 높이기 위해서인가요?
-
미해결스프링 시큐리티
Entity에 setter 사용 안할시 ModelMapper 설정
수강생분들에게 정보 공유해드리고 싶어서 게시판에 글 남깁니다. ModelMapper를 사용하면 객체에서 객체로 쉽게 변환할 수 있습니다.그런데 Setter를 사용하지 않은 Entity 또는 객체에서 Dto로 변환할 매핑되지 않는 문제가 발생합니다.이를 해결하기 위해서ModelMapper modelMapper = new ModelMapper(); modelMapper.getConfiguration() .setFieldAccessLevel(Configuration.AccessLevel.PRIVATE) .setFieldMatchingEnabled(true); 위와 같이 설정한뒤 사용하면 됩니다.^^ 저는@Bean public ModelMapper modelMapper() { ModelMapper modelMapper = new ModelMapper(); modelMapper.getConfiguration() .setFieldAccessLevel(Configuration.AccessLevel.PRIVATE) .setFieldMatchingEnabled(true); return modelMapper; }빈으로 등록해서 사용했습니다.ㅎㅎ InheritingConfiguration 클래스에서 ModelMapper 기본 fieldAccessLevel이 fieldAccessLevel = AccessLevel.PUBLIC; 임을 확인 할 수 있습니다.^^public class InheritingConfiguration implements Configuration { //...// /** * Creates an initial InheritingConfiguration. */ public InheritingConfiguration() { parent = null; typeMapStore = new TypeMapStore(this); converterStore = new ConverterStore(); valueAccessStore = new ValueAccessStore(); valueMutateStore = new ValueMutateStore(); sourceNameTokenizer = NameTokenizers.CAMEL_CASE; destinationNameTokenizer = NameTokenizers.CAMEL_CASE; sourceNamingConvention = NamingConventions.JAVABEANS_ACCESSOR; destinationNamingConvention = NamingConventions.JAVABEANS_MUTATOR; sourceNameTransformer = NameTransformers.JAVABEANS_ACCESSOR; destinationNameTransformer = NameTransformers.JAVABEANS_MUTATOR; matchingStrategy = MatchingStrategies.STANDARD; fieldAccessLevel = AccessLevel.PUBLIC; methodAccessLevel = AccessLevel.PUBLIC; fieldMatchingEnabled = Boolean.FALSE; ambiguityIgnored = Boolean.FALSE; fullTypeMatchingRequired = Boolean.FALSE; implicitMatchingEnabled = Boolean.TRUE; preferNestedProperties = Boolean.TRUE; skipNullEnabled = Boolean.FALSE; useOSGiClassLoaderBridging = Boolean.FALSE; collectionsMergeEnabled = Boolean.FALSE; } //...// } 참고하세용^^
-
미해결Vue.js + TypeScript 완벽 가이드
프로젝트 권한요청드립니다.
awdzx456@naver.com감사합니다.
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
[10장 8분 질문]
- 강의 내용외의 개인 질문은 받지 않아요 (개별 과제, 고민 상담 등..)- 저 포함, 다른 수강생 분들이 함께보는 공간입니다. 보기좋게 남겨주시면 좋은 QnA 문화가 될 것 같아요. (글쓰기는 현업에서 중요한 능력입니다!)- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 맛비님 언제나 좋은 강의 제공해주셔서 감사합니다.-질문-445~454 ff은 456~465의 "i_done의 1틱을 캐치 못 함"을 보완하기 위해 만들어졌다고 이해했는데요.그렇다면 둘의 센시티비티 리스트가 같아도 되는 건가요??(둘 다 캐치하는 순간이 같을 것이라고 생각하는데 잘 이해가 가지 않습니다.) 언제나 좋은 하루 되세요.
-
미해결CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
HTTP3 UDP통신
안녕하세요HTTP3에서부터 udp기반으로 돌아간다면udp의 단점인 데이터 신뢰성 문제를 어떤식으로 보완을 하나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-C 질문있습니다.
제가 짠 코드를 아무리 봐도 어디가 잘못됬는지 잘 모르겠습니다.기존의 DFS코드를 그대로 사용하고싶어서 temp라는 배열을 하나 더 만들어서 arr이라는 배열과 빗물 높이에 따라 temp를 0또는 1로 변경하는 식으로 풀었는데 문제의 TC는 다 통과를 하는데 Private TC에서 걸리는거같은데 어디가 잘못됬는지 모르겟습니다.http://boj.kr/a6fae8fdccbf4ad4a01c1497decde016
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
값 타입 컬렉션 대안
값 타입 컬렉션 대안으로 entity에 감싼다고 했는데요예를 들어 @Embedable인 Address를 그냥 처음부터@Entity로 승격시켜버리면 되는데 굳이 왜 감싸나요?
-
해결됨스프링 핵심 원리 - 기본편
특정 클라이언트에 의존적인 필드의 의미가 이해가 안갑니다 ㅠㅠ
https://www.inflearn.com/questions/312754/%ED%8A%B9%EC%A0%95%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%EC%97%90-%EC%9D%98%EC%A1%B4%EC%A0%81%EC%9D%B8-%ED%95%84%EB%93%9C%EA%B0%80-%EC%9E%88%EC%9C%BC%EB%A9%B4-%EC%95%88%EB%90%9C%EB%8B%A4%EB%8A%94%EB%A7%90%EC%9D%B4-%EB%AC%B4%EC%8A%A8%EB%A7%90%EC%9D%B8%EA%B0%80%EC%9A%94위 링크에서 "특정 클라이언트에게 의존적인 필드란 말은 특정 클라이언트를 필요로 하는 필드란 말입니다." 이렇게 말씀 하셨는데 이해가 잘 안가서 질문 드립니다.StatefulService class에서 private int price 필드가 특정 클라이언트를 필요로 하는 필드라면 특정 클라이언트는 statefulService1.order("useerA","10000")을 실행해서 private int price의 값에 변경을 주는 statefulService1이 되는 건가요?
-
미해결스파크 머신러닝 완벽 가이드 - Part 1
현업에서는 scala-spark를 사용하나요? py-spark를 사용하나요?
현업에서는 scala-spark를 사용하나요? py-spark를 사용하나요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
토글버튼 이벤트에 useCallback 사용이유
const onToggleComment = useCallback(() => { setCommentFormOpened((prev) => !prev) }, []) const onToggleComment = () => { setCommentFormOpened(!commentFormOpened) }해당 강의 주차에서 토글버튼에 useCallback을 사용한 이유가 무엇인가요?useCallback을 사용하지 않고 아래와 같이 구현하면 성능에 문제가 생기는 이유때문인지 궁금합니다.
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
BRAM의 동작 방식에 대해 궁금한 점이 있습니다.
- 강의 내용외의 개인 질문은 받지 않아요 (개별 과제, 고민 상담 등..)- 저 포함, 다른 수강생 분들이 함께보는 공간입니다. 보기좋게 남겨주시면 좋은 QnA 문화가 될 것 같아요. (글쓰기는 현업에서 중요한 능력입니다!)- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 일단 메모리 동작 방식에 대해 제가 아는건 Sequential와 Random Access가 있고, 말 그대로 순차적으로 메모리를 접근하는 방식과 임의의 위치에 바로 접근하는 방식으로 알고 있습니다.BRAM을 소개하실 때 Random Access가 가능하다고 하셨는데, 이번 실습은 Sequential Access 방식인거같습니다.간단하게 구현하기 위해 Sequntial 방식으로 구현하신 건가요??? 그리고 mem_ce 신호는 Clock En 신호 같은데 신호를 계속 바꿔주는 이유가 있을까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
두 개의 결과가 동일한데 왜 아래의 방법을 사용해야하나요?
//findMember.getAddress().setCity("new1"); findMember.setAddress(new Address("new1", "street1", "zip1")); 두가지 를 모두 실행했을 때 결과가 동일하였습니다.식별자가 없기 때문에 한번에 다 바꾸어야한다고하였는데어차피 Member 테이블의 address는 하나이므로식별자가 없더라도 명확한 것 아닌가요?따라서 그냥 setCity()와 같이 한 필드만을 바꿔주어도 되는 것이 아닌가 싶습니다. 왜 아래의 코드처럼 전체를 갈아치워야하는지 다시 설명해주시면 감사하겠습니다. ++ 값 타입을 추적이 불가능하다는 뜻을 구체적인 예시와 함께 설명해주시면 감사합니다.
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
buildscript 어디서 가져오나요?
이 부분에서 buildscript는 어디서 가져오셨는지 궁금해요
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
mongoDB root 설정
안녕하세요. mongoDB를 로컬에서 실행할 때, mongoDB root 설정 후에도 mongo -u root -p가 아닌 mongo로도 접속이 되는데 정상인가요?
-
해결됨[코드캠프] 강력한 CSS
클래스 명칭 제작할때 container와 wrapper 차이점
안녕하세요. 'transform, transition(나만의 쇼핑몰 만들기)' 수강 후 과제 진행 중에 있습니다.코딩실습 강의를 들으며 클래스 명칭 제작할때 container와 wrapper를 구분하는 기준을 명확하게 설명해주시지 않은 것 같아 구분 기준을 여쭤보고자 합니다.혹시 제가 이전 강의에서 설명을 놓쳤을 수도 있으니 설명한 강의챕터가 있다면, 안내해주시면 다시 듣도록 하겠습니다..답변 부탁드립니다. 감사합니다.
-
미해결애플 웹사이트 인터랙션 클론!
Normal섹션 글자 넘침 현상
밑에서 먼저 질문 주신 분이 계신데요. 저도 동일 현상을 겪고 있어서 질문 올립니다 ㅠ아래 이미지 처럼 normal섹션은 offsetHeight를 가져오도록 설정해두었는데 글짜 넘침 현상이 있습니다. 원인이 뭘까요..? 원문 파일 적용해도 그런데.. 몇시간 헤매다가 여쭤봅니다 ㅠ
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
H2 Database 사용 에러 질문드립니다.
안녕하세요. 강의 정말 잘 듣고 있습니다. MVC나 부트 JPA 모두 정말 좋은 강의 감사드려요 커뮤니티에 글을 올리게 된 이유는.. 일단 부트 JPA 실전 1편 강의를 다 들었고 그동안H2 Database를 잘 사용하였는데요, 그 다음 과정으로는 JPA 기본편을 들었고이 때에는 뭐가 문제인지 H2 Database가 작동은 하는데, 실전 1편에서 생성한 테이블들이삭제도 안되고 뭔가 락이 걸려있는것처럼 그래서 기본편 듣는동안은 테이블명을 일부러기존에 Member가 있으니 Member1 이런식으로 만들어서 진행했었구요그다음에 이제 다시 실전1편에서 사용한 프로젝트로 돌아와서, 처음부터 다 지우고관계설정같은거 다 스스로 코드 짜서 이제 Test코드 딱 돌렸는데. 테스트는 성공하는데DB에 반영이 아예 안되더라구요심지어 그 프로젝트는 H2 Database를 꺼놔도 OK가 되고, yml에 있는거 다 지워버려도Test가 성공되는데 희한한건 Member join을 한 만큼 findAll()로 조회는 또 되더라구요이게 도대체 무슨 상황인지 살짝 멘붕이 왔지만 그냥 안되겠다 셈 치고 다시 실전 1편 첫 설정대로 프로젝트를 새로 생성하고 H2 Database도 다시 깔았습니다.근데 이번에는 아래처럼 오류가 엄청 나고 있어요gradle은 강의자료에 있는거 그대로 복사했고, yml파일도 띄어쓰기도 꼼꼼히 확인했습니다.지금 약 4시간정도 삽질했는데. 기존 프로젝트 다 날리고 다시 시작해도 좋으니해결방법을 알고싶습니다. ㅜㅜ H2 Database가 싫어질 지경이에요 부탁드립니다!! org.springframework.transaction.UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:752) ~[spring-tx-5.3.2.jar:5.3.2] at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:711) ~[spring-tx-5.3.2.jar:5.3.2] at org.springframework.test.context.transaction.TransactionContext.endTransaction(TransactionContext.java:131) ~[spring-test-5.3.2.jar:5.3.2] at org.springframework.test.context.transaction.TransactionalTestExecutionListener.afterTestMethod(TransactionalTestExecutionListener.java:255) ~[spring-test-5.3.2.jar:5.3.2] at org.springframework.test.context.TestContextManager.afterTestMethod(TestContextManager.java:441) ~[spring-test-5.3.2.jar:5.3.2] at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:94) ~[spring-test-5.3.2.jar:5.3.2] at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) ~[spring-test-5.3.2.jar:5.3.2] at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) ~[junit-4.13.1.jar:4.13.1] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251) ~[spring-test-5.3.2.jar:5.3.2] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) ~[spring-test-5.3.2.jar:5.3.2] at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) ~[junit-4.13.1.jar:4.13.1] at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) ~[junit-4.13.1.jar:4.13.1] at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) ~[junit-4.13.1.jar:4.13.1] at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) ~[junit-4.13.1.jar:4.13.1] at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) ~[junit-4.13.1.jar:4.13.1] at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) ~[spring-test-5.3.2.jar:5.3.2] at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) ~[spring-test-5.3.2.jar:5.3.2] at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) ~[junit-4.13.1.jar:4.13.1] at org.junit.runners.ParentRunner.run(ParentRunner.java:413) ~[junit-4.13.1.jar:4.13.1] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) ~[spring-test-5.3.2.jar:5.3.2] at org.junit.runner.JUnitCore.run(JUnitCore.java:137) ~[junit-4.13.1.jar:4.13.1] at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) ~[junit-rt.jar:na] at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) ~[junit-rt.jar:na] at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) ~[idea_rt.jar:na] at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) ~[junit-rt.jar:na] at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235) ~[junit-rt.jar:na] at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) ~[junit-rt.jar:na]org.springframework.dao.InvalidDataAccessApiUsageException: Unknown entity: jpabook.Member; nested exception is java.lang.IllegalArgumentException: Unknown entity: jpabook.Member at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:374) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691) at jpabook.jpashoppp.MemberRepository$$EnhancerBySpringCGLIB$$eec81b23.save(<generated>) at jpabook.jpashoppp.MemberRepositoryTest.testMember(MemberRepositoryTest.java:31) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74) at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)Caused by: java.lang.IllegalArgumentException: Unknown entity: jpabook.Member at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:723) at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:706) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:311) at com.sun.proxy.$Proxy82.persist(Unknown Source) at jpabook.jpashoppp.MemberRepository.save(MemberRepository.java:15) at jpabook.jpashoppp.MemberRepository$$FastClassBySpringCGLIB$$7fc32dcb.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ... 38 moreorg.springframework.transaction.UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:752) at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:711) at org.springframework.test.context.transaction.TransactionContext.endTransaction(TransactionContext.java:131) at org.springframework.test.context.transaction.TransactionalTestExecutionListener.afterTestMethod(TransactionalTestExecutionListener.java:255) at org.springframework.test.context.TestContextManager.afterTestMethod(TestContextManager.java:441) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:94) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)2023-01-11 18:40:06.250 INFO 11976 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'2023-01-11 18:40:06.251 INFO 11976 --- [extShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'2023-01-11 18:40:06.254 INFO 11976 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...2023-01-11 18:40:06.272 INFO 11976 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.Process finished with exit code -1