묻고 답해요
163만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
ExecutorServic 우아한 종료 isTerminated()에 대해서 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 궁금증이 생겨서 질문을 올립니다.복습을 하던중에이쪽 부분에서 isTerminated() 부분을 호출하면 셧다운 상태를 확인할 수 있다고 해서, 당연히 true가 나올줄 알고 검증을 해보기 위해서 해보았습니다.근데 왠걸? 저와의 예상과는 다르게 false가 나옵니다..뭐가 문제 있는가 생각해봐서 여러 군데에 isTerminated()를 붙여놓고 해봤는데 true가 나옵니다.볼록 된 부분 입니다.근데 왜? 이렇게 되는지 아무리 생각해봐도 이유를 모르겠습니다.혹시 이렇게 되는 이유를 가르쳐 줄 수 있으신가요? 수정1submit로 뭐 좀 해보는게 있었는데 이것을 execute로 안바꾸고 실행해서 사진 수정함 + 인프런 ai가 답변해준 isShutDown()이 궁금해서 추가 된게 있음(이건 블락? 처리) 수정2사진1개 더 추가. 여러 번 돌려보니 에러메시지가 중간에 떠서 다시 올림. 모르겟다.. 답변 부탁 드립니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
p6spy 로그가 안찍힙니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 p6spy를 적용을 시도했는데 로그 출력이 되지 않아서 해결해보려다 실패하고 도움을 요청드립니다. 아래와 같이 코드들을 작성했습니다. > Task :compileJava UP-TO-DATE> Task :processResources> Task :classes> Task :compileTestJava UP-TO-DATE> Task :processTestResources NO-SOURCE> Task :testClasses UP-TO-DATE19:25:53.967 [Test worker] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [jpabook.jpashop.MemberRepositoryTest]: MemberRepositoryTest does not declare any static, non-private, non-final, nested classes annotated with @Configuration.19:25:54.333 [Test worker] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration jpabook.jpashop.JpashopApplication for test class jpabook.jpashop.MemberRepositoryTest19:25:55.119 [Test worker] INFO org.springframework.boot.devtools.restart.RestartApplicationListener -- Restart disabled due to context in which it is running. ____ _ __ _ _/\\ / ___'_ __ _ ()_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/ ___)| |_)| | | | | || (_| | ) ) ) )' |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot :: (v3.3.7)2025-01-26T19:25:55.869+09:00 INFO 18332 --- [ Test worker] jpabook.jpashop.MemberRepositoryTest : Starting MemberRepositoryTest using Java 21.0.2 with PID 18332 (started by dldbs in C:\Users\dldbs\Desktop\Spring강의\spring boot, jpa활용\jpashop)2025-01-26T19:25:55.874+09:00 INFO 18332 --- [ Test worker] jpabook.jpashop.MemberRepositoryTest : No active profile set, falling back to 1 default profile: "default"2025-01-26T19:25:57.515+09:00 INFO 18332 --- [ Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.2025-01-26T19:25:57.570+09:00 INFO 18332 --- [ Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 33 ms. Found 0 JPA repository interfaces.2025-01-26T19:25:58.728+09:00 INFO 18332 --- [ Test worker] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]2025-01-26T19:25:58.896+09:00 INFO 18332 --- [ Test worker] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.5.3.Final2025-01-26T19:25:58.990+09:00 INFO 18332 --- [ Test worker] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled2025-01-26T19:25:59.885+09:00 INFO 18332 --- [ Test worker] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer2025-01-26T19:25:59.974+09:00 INFO 18332 --- [ Test worker] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...2025-01-26T19:26:00.168+09:00 INFO 18332 --- [ Test worker] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection conn0: url=jdbc:h2:tcp://localhost/~/jpashop user=SA2025-01-26T19:26:00.172+09:00 INFO 18332 --- [ Test worker] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.2025-01-26T19:26:02.325+09:00 INFO 18332 --- [ Test worker] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)2025-01-26T19:26:02.369+09:00 DEBUG 18332 --- [ Test worker] org.hibernate.SQL :drop table if exists member cascade2025-01-26T19:26:02.383+09:00 DEBUG 18332 --- [ Test worker] org.hibernate.SQL :drop sequence if exists member_seq2025-01-26T19:26:02.395+09:00 DEBUG 18332 --- [ Test worker] org.hibernate.SQL :create sequence member_seq start with 1 increment by 502025-01-26T19:26:02.401+09:00 DEBUG 18332 --- [ Test worker] org.hibernate.SQL :create table member (id bigint not null,username varchar(255),primary key (id))2025-01-26T19:26:02.413+09:00 INFO 18332 --- [ Test worker] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'2025-01-26T19:26:02.844+09:00 WARN 18332 --- [ Test worker] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning2025-01-26T19:26:02.911+09:00 INFO 18332 --- [ Test worker] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html]2025-01-26T19:26:03.730+09:00 INFO 18332 --- [ Test worker] jpabook.jpashop.MemberRepositoryTest : Started MemberRepositoryTest in 8.647 seconds (process running for 12.331)WARNING: A Java agent has been loaded dynamically (C:\Users\dldbs\.gradle\caches\modules-2\files-2.1\net.bytebuddy\byte-buddy-agent\1.14.19\154da3a65b4f4a909d3e5bdec55d1b2b4cbb6ce1\byte-buddy-agent-1.14.19.jar)WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warningWARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more informationWARNING: Dynamic loading of agents will be disallowed by default in a future release2025-01-26T19:26:04.981+09:00 DEBUG 18332 --- [ Test worker] org.hibernate.SQL :selectnext value for member_seq2025-01-26T19:26:05.235+09:00 DEBUG 18332 --- [ Test worker] org.hibernate.SQL :insertintomember(username, id)values(?, ?)2025-01-26T19:26:05.243+09:00 TRACE 18332 --- [ Test worker] org.hibernate.orm.jdbc.bind : binding parameter (1:VARCHAR) <- [memberA]2025-01-26T19:26:05.244+09:00 TRACE 18332 --- [ Test worker] org.hibernate.orm.jdbc.bind : binding parameter (2:BIGINT) <- [1]OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended2025-01-26T19:26:05.291+09:00 INFO 18332 --- [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'2025-01-26T19:26:05.298+09:00 INFO 18332 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...2025-01-26T19:26:05.322+09:00 INFO 18332 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.> Task :testBUILD SUCCESSFUL in 15s4 actionable tasks: 2 executed, 2 up-to-date오후 7:26:05: Execution finished ':test --tests "jpabook.jpashop.MemberRepositoryTest.testMember"'.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
사이드 이펙트 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]MemberRepository에서 return member.getId();사이드 이펙트로 멤버를 저장하는 메서드이기 때문에 리턴값은 안 만들어도 되고다만, 나중에 멤버 조회할 때 ID 정도 있으면 간단하게 조회할 수 있기 때문에 리턴값 설정해둔 것으로 이해하면 될까요?
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
IOException 예외 처리 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요,IOException 예외 처리 관련해서 질문드립니다. 영상과 교안을 보다보니 어떤 메소드에서는 IOException을 던지고, 어떤 메소드에서는 try-catch문을 이용해서 처리하는데, 기준이 무엇인지 궁금합니다. 예외는 항상 처리해야하는 것이 아닌가? 라고 생각하고 있었는데 코드를 보니 또 그런건 아닌 것 같아서요. 감사합니다!
-
미해결김영한의 실전 자바 - 기본편
클래스 다중상속 모호성 질문!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요.클래스는 메서드가 구현되어 있고, 이름이 같은 메서드가 있을 경우 어떤 메서드를 실행해야할지 모호해서 다중상속이 안 된다고 하셨는데, 인터페이스 다중구현을 설명해주실 때 약간의 의문점이 생겨서 질문 드립니다. 인터페이스 다중구현에서는 만약 InterfaceB b = new Child()라고 하면 b가 InterfaceB를 가리키고 있기에 InterfaceB의 methodCommon()을 만나서 이 메서드는 오버라이딩 됐네! 하고 Child의 methodCommon()으로 내려가는 거잖아요. 그런데 그럼 클래스에서도 ClassB b = new Child()라고 하면 b가 ClassB를 가리키고 있기에 ClassB의 methodCommon()을 선택하면 되는거 아닌가요?? 이런 경우 왜 모호해지는지 잘 모르겠습니다!!!단지 상속이 부모의 기능을 물려받는 것이기에 부모의 기능을 가져올 때 어떤 부모의 기능을 가져와야할지 모호해져서 단일상속이 원칙이 되는건지, 만약 위와같은 자식 클래스에서 오버라이딩 하는 경우에는 모호성이 안 일어나는건지 궁금합니다. 여러 가지 개념이 나오다보니 많이 헷갈리네요. ㅜㅜㅜ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderService의 order() 내에서 Delivery 생성메서드가 아닌 생성자 호출 이유가 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]OrderService의 주문 생성 코드에서 Order와 OrderItem은 생성메서드를 통해 객체를 생성하여 저장하도록 하셨는데, Delivery 객체에 대해서는 따로 생성 메서드를 만들지 않고 직접 생성자 호출을 통해 만든 이유가 있을까요?
-
해결됨실전! Querydsl
DTO 반환 시 JOIN과 FETCH JOIN의 차이점 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]jpa에서 join과 fetch join에 차이점join은 from절에 있는 주체 엔티티만 영속화 fetch join은 연관 엔티티와 주체가 되는 엔티티 모두 영속화한다. 이라고 이해 했습니다그런데 공부하던 중 엔티티 반환이 아닌 DTO을 반환하면 join과 fetch join은 어떻게 영속화 하는지 궁금합니다.
-
미해결김영한의 실전 자바 - 중급 2편
제네릭 out 반환
[질문 내용]여기서 왜 객체에서 유닛을 따로 꺼내줘야만 관련 메서드를 사용할수 있는건가요? Shuttle<T extends BioUnit>으로 Shuttle도 상한타입도 지정해줬음에도 한번 유닛으로 반환받아야 메서드를 쓸 수 있는 이유가 헷갈립니다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
클래스 이름이 똑같으면
[질문 내용]기본 문법과 쿼리 API 영상 12분 32초 쯤에 김영한 강사님께서 "클래스 이름이 똑같으면 어떻게 하냐" 라는 물음에 처음에 이게 무슨 소린가 싶어 생각해봤는데 "엔티티나 자바 객체 내에서 중복된 클래스명이 있으면" 이라는 얘기가 맞을까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
UserLoanHistory Entity
id를 할 때는 Entity에서 자료형 Long을 쓰고, user_id는 자료형 long을 쓰는데 왜 두 개 다른것을 쓰나요? 특별한 이유가 있을까요??
-
해결됨실습으로 배우는 선착순 이벤트 시스템
강사님 강의를 듣고 실제 프로젝트에서 이벤트 응모 시스템을 만들어 봤습니다.
안녕하세요 강사님!강사님의 동시성 이슈와 선착순 이벤트 시스템 강의를 듣고 실제 프로젝트에서 이벤트 응모 시스템을 만들어 봤습니다. 아래는 제가 해당 이벤트 응모 시스템을 만들면서 겪었던 이슈와 고민을 블로그 글로 적었습니다.우선 강사님 덕분에 프로젝트 잘 끝낼 수 있어서 감사했습니다.블로그 글을 쓰면서 든 생각은 여기서 더 개선 시킬점은 없을까? 좀 더 고민 해볼만한 부분은 없을까? 라는 생각이 들었습니다.개발에 정답은 없지만 그래도 좋은 방향은 있다고 생각해서 최근에 제가 쓴 글을 다시 보면서 어떤 부분을 고치면 좋을까 라는 생각을 하고 있습니다.혹시 강사님께서 제 글을 보시고 만약 면접관이시라면 어떤식으로 질문이 들어올 수 있을지 특히 꼬리 질문에 대해 얘기를 해주실 수 있을까요 해주신 내용을 바탕으로 깊게 고민을 해보고 면접 대비도 하고 싶습니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
서버 응답관련 질문
안녕하세요, 조교님 30강 강의를 들으면서 문제가 발생해 질문을 남기게 되었습니다. 이 전까지는 정상적으로 작동하였는데 "책 등록" 기능이 제대로 동작하지 않습니다. 코드에는 문제가 없어 보이고, 서버는 정상 동작합니다. 책 등록에서 저장 버튼을 누르면 위와 같은 메시지가 뜨는 상황인데, 혹시 해결방법을 아실까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
remove(), equals()
[질문 내용]왜 remove() 메소드를 사용하기 위해서 equals() 메소드를 Address와 AdressEntity 메소드에 재정의해야 하나요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
'문제: 짝수 출력' 관련 질문
[질문 내용]'문제풀이 1'의 2번 문제인 '짝수' 출력 관해서 질문 드립니다.강사님이 작성해준 코드와 제가 작성한 내용이 조금 달라서요..!결과값이 동일하긴 한데, 이렇게 진행해도 문제없나요?저는 num 변수만 선언했거든요..package loop.ex; public class WhileEx2 { public static void main(String[] args) { int num = 1; while (num <= 10) { System.out.println(num * 2); num++; } } } package loop.ex; public class ForEx2 { public static void main(String[] args) { for (int num = 1; num <= 10; num++) { System.out.println(num * 2); } } }
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JPA 프록시 객체 AccessType.FIELD에서 getId 시 초기화?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하십니까 선생님! 질문 제목을 보고 얘는 왜 이 질문을 여기에 올렸을까라고 의아해하실 수도 있는데, 사실 제가 영한님 스프링 관련 강의는 다 사서 열심히 보고 있는데(정말 도움 많이 받고 있습니다. 항상 정말 잘 듣고 있습니다!!) JPA는 영한님이 쓰신 JPA 책을 사서 보고 있습니다! 그런데 프록시 객체 파트를 읽어보던 도중 이해가 되지 않는 부분이 있어 질문을 쓰고 싶은데 JPA 쪽에 질문으로 쓰려고 해도 강의를 산 사람만 작성할 수 있어 부득이하게 여기에서 질문하게 되었습니다 죄송합니다 ㅜㅜㅜ 다름이 아니라 지금 JPA의 프록시 객체 파트를 공부하고 있습니다. 그런데 294P의 8.1.2 프록시와 식별자 부분에서 엔티티를 em.getReference, 즉 프록시로 조회할 때 엔티티 접근 방식을 AccessType.PROPERTY로 설정한 경우 getId를 호출해도 프록시를 초기화하지 않는다고 하셨습니다. 그래서 직접 한번 코드를 작성해보았습니다. 우선 AccessType.PROPERTY 방식부터 적용해보았습니다. PROPERTY와 FIELD 두 방식 모두 실험 전 create 옵션으로 Parent 객체 하나를 만들어두고 후에 none으로 바꾸어 진행했습니다. Parent 객체 생성 코드Parent parent = new Parent(); parent.setId(1L); parent.setName("parent1"); em.persist(parent); Parent.java@Entity @Setter @Getter @Access(AccessType.PROPERTY) public class Parent { private Long id; private String name; @Id public Long getId() { return id; } }JpaMain.javapublic static void main(String[] args) { EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); Parent foundParent = em.getReference(Parent.class, 1L); System.out.println(foundParent.getClass()); System.out.println(foundParent.getId()); System.out.println(foundParent.getName()); tx.commit(); em.close(); emf.close(); }해당 코드를 실행시켰을 때이렇게 나온걸 보니 확실히 getId 후에 getName 조회시 프록시 객체를 초기화(select 구문 실행)을 했다는 것을 알 수 있었습니다. 그런데 AccessType.FIELD로 조회하면 getId 를 할때에도 프록시 객체를 초기화한다고 하여 아래와 같이 Parent.java의 코드를 다시 작성하여 JpaMain.java를 실행해보았습니다. Parent.java@Entity @Setter @Getter @Access(AccessType.FIELD) public class Parent { @Id private Long id; private String name; }제 예상으로는 getId 실행시 프록시 객체를 초기화 한다고 하셨으니 실제 출력에는 Parent의 getId()가 실행되기 전에 select 문이 실행되어야 할 것이라고 예상하였습니다. 하지만위와 같이 getId()에는 프록시 객체를 초기화하지 않는 것처럼 보여지는 출력이 나왔습니다.책에서는 AccessType.FIELD 사용시 getId()를 호출하면 JPA는 getId()가 id만 조회하는 메소드인지 다른 필드까지 활용해서 어떤 일을 하는 메소드인지 알지 못하므로 프록시 객체를 초기화한다고 나와있는데 왜 이런 결과가 나온 것일까요? 제가 잘못 이해하고 있는 것이 있을까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
AddressEntity 수정 2
[질문 내용]AddressEntity에 equals()와 hashCode() 메소드 재정의 ADDRESS 테이블에 2개의 값이 저장된다. 그리고 저장된 첫번째 값의 "new1"을 지우고 "new3"을 추가한다. 이렇게 했을 때 추가는 되었지만 삭제가 동작이 잘 되지 않았습니다. DB 쿼리문은 update 쿼리가 나간 상태입니다. 어떻게 해야 좋을지 막막하네요..제가 어디 빠트린 부분이 있을까요?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
AddressEntity 수정
[질문 내용]Address 값 타입을 AddressEntity에 한번 wrapping해서 엔티티로 생성한 후 findMember.getAddressHistory().remove(new AddressEntity("old1", "street", "10000")); findMember.getAddressHistory().add(new AddressEntity("new1", "street", "10000"));값을 삭제 후 다시 등록 하였을 때 DB 안의 데이터가 다 사라졌는데, 제가 확인해 본 바로는 아마 해당 데이터의 id를 명시하지 않으니 어떤 식별자의 데이터인지 확인이 안돼서 로그창에 쿼리도 안나가고 DB의 데이터도 안들어가는건가요? 그리고 이럴 때 해결법은 어떻게 하면 좋을까요?
-
미해결스프링 기반 REST API 개발
자바 빈 스펙을 준수하는지 체크하는 테스트
안녕하세요.07.30 시간에 강사님께서 자바빈 스펙을 준수하게끔 테스트를 진행하십니다. 이 과정이 왜 필요한건지 궁금합니다~builder패턴으로 테스트로만 잘 진행하면 충분하다는 생각이 들었기 때문입니다.생성자로 객체를 만들어야 상태안전하게 만들 수 있고setter를 사용하게 되는 것은 되도록 지양하는 것이라 생각했습니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
컴파일 오류가 왜 뜨는지 이해가 안되네요
Switch코딩처럼 간단하게 하려고 public static void main(String[] args){ int score = 100; String a; if (score >= 90) { a = "A"; } System.out.println("등급 = " + a); 이런 식으로 풀어봤는데 마지막 sout 부분 a에만 컴파일 오류가 뜹니다. public static void main(String[] args) { String a; if (true){a = "s";} System.out.println("a" + a);근데 이건 실행이 되는 게 이해가 안되네요 결국 같은 거 아닌가요??
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
외래키를 사용하지 않아도 되는지 궁금합니다
이렇게 연관관계가 있는 키들은 외래키로 참조하고 있다는 표시를 하지 않아도 되는지 궁금합니다.