쿠폰 발급 개수 제한
미해결
실습으로 배우는 선착순 이벤트 시스템
쿠폰을 100개까지만 발급하고 싶으면 조건이 count >= 100 return이 맞지 않을까요?
- java
- docker
- spring-boot
- kafka
- redis
172만명의 커뮤니티!! 함께 토론해봐요.
미해결
실습으로 배우는 선착순 이벤트 시스템
쿠폰을 100개까지만 발급하고 싶으면 조건이 count >= 100 return이 맞지 않을까요?
미해결
김영한의 실전 자바 - 중급 1편
[질문 내용] 여기에 질문 내용을 남겨주세요. 7:36에서 obj1, obj2를 출력하는데, obj1, obj2의 객체 정보가 출력이 되었는데, 이유가 메인메서드 처음부분에, obj1과 obj2의 객체가 만들어 지는데, 이때 obj1의 객체 안에는(obj1, Object)클래스 정보가들어있고 obj2객체 안에는(obj2, Object)클래스정보가 들어있는데 System.out.println()메서드 안에 객체를 넣으면 내부에서 자동적으로 객체명.toString()메서드가 실행이 되는데, 자식클래스(obj1, obj2)모두가 toString()을 오버라이딩 하지 않아, Object의 toString()이 호출이 되는데, 호출하는 변수가 각각 obj1, obj2여서 호출하는 변수 타입의 객체 정보가 출력이 된다. 맞나요? 잠시 헷갈렸는데 맞을까여?
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
A problem occurred configuring root project 'hello-spring'. > Could not resolve all artifacts for configuration 'classpath'. > Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.4.1. Required by: root project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.4.1 > Dependency requires at least JVM runtime version 17. This build uses a Java 8 JVM. * Try: > Run this build using a Java 17 or newer JVM. > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org . 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.11.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. 인텔리제이에서 open 폴더로 hellospring 열었는데 해당 오류가 뜨네요 이거 뭔가요?
미해결
김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. "초과 스레드가 작업을 처리할 때 마다 시간은 계속 초기화된다" 7:36초에 말씀을 해주셨는데, 한가지 궁금한 점이 생겨 질문 드립니다! 큐가 가득 차서 초과 스레드가 이미 만들어 졌다고 가정한 상황입니다. 이후에 작업이 없어서 큐가 비어있다고 가정을 하겠습니다. 즉, 상황은 큐가 비어있고, 스레드 풀에 기본 스레드 2개, 초과 스레드 2개가 있습니다. 이 때, Executors 에 새로운 작업이 들어오면 이 작업은 무조건 기본 스레드가 초과 스레드 보다 먼저 작업을 수행하게 되나요? 만약, 기본 스레드가 먼저 작업을 무조건 수행하게 된다면 이는 BlockingQueue의 내부 구현인 ReentrantLock 과 Condition 으로 인해 WAITING인 기본 스레드 부터 깨우게 되는 것인가요?
미해결
김영한의 실전 자바 - 중급 1편
[질문 내용] 여기에 질문 내용을 남겨주세요. 강의 볼 때마다 신기한 단축키를 잘 사용하시던데, 전 단축키가 잘 안외워지는데 부럽네요.. 단축키 유용한거는 어떻게 알아가는건가요,, 강의는 다 잘 이해되서 큰 문제는 아닌거같은데, 단축키 잘 쓰시는게 넘 부럽네여..
미해결
스프링과 JPA 기반 웹 애플리케이션 개발
강의 잘 듣고있습니다. 현재 service단의 update메서드에는 merge로 병합처리를 하고있지만 accountRepository에서 findById와 같이 수정할 account객체를 찾아내서 영속화를 시켜준뒤에 수정을 하면 dirty checking으로 인한 수정법이 더 안전한 방법일까라고 생각이되서 질문드립니다.
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예 [질문 내용] 안녕하세요, 강의 너무 잘 보고 있는 취업 준비생입니다 ! 인텔리제이를 사용하며 강의를 따라가는 중인데, 윈도우 cmd에서 실행 시 하단 사진처럼 뜨더라고요 찾아보니 jre의 버전 문제라고 하는데, UnsupportedClassVersionError 라는 오류라고 하더라고요 컴파일된 클래스 파일이 현재 사용중인 jre 버전보다 더 최신 버전으로 컴파일되었다고 하는데, 이것을 해결할 방법이 있을까요 ? 혹은 해결하지 않고 이 버전을 유지하며 이번 강의 내용은 머리로만 이해하는 것이 좋을지 궁금합니다. 해결에 도움이 될 수 있을까 하여 구체적인 오류를 남깁니다 ! Exception in thread "main" java.lang.UnsupportedClassVersionError: com/example/demo/DemoApplication has been compiled by a more recent version of the Java Runtime (class file version 67.0), this version of the Java Runtime only recognizes class file versions up to 66.0 at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1023) at java.base/ java.security .SecureClassLoader.defineClass(SecureClassLoader.java:150) at java.base/ java.net .URLClassLoader.defineClass(URLClassLoader.java:524) at java.base/ java.net .URLClassLoader$ 1.run (URLClassLoader.java:427) at java.base/ java.net .URLClassLoader$ 1.run (URLClassLoader.java:421) at java.base/ java.security .AccessController.doPrivileged(AccessController.java:714) at java.base/ java.net .URLClassLoader.findClass(URLClassLoader.java:420) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:592) at org.springframework.boot.loader.net .protocol.jar.JarUrlClassLoader.loadClass(JarUrlClassLoader.java:107) at org.springframework.boot.loader.launch.LaunchedClassLoader.loadClass(LaunchedClassLoader.java:91) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:529) at java.base/java.lang.Class.forName(Class.java:508) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:99) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64) at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40) 현재 이렇게 실행하니 8080 서버는 들어가지는 것 같은데, hello 라는 부분 클릭 시 넘어가질 않네요 .. 추가로, 실행한 파일을 종료할 때 ls -arlth 라는 것을 입력하시던데, 이 명령어가 종료 명령어가 맞을까요 ..? 거북이 마음으로 하나씩 의문들을 해결해나가겠습니다 좋은 강의 제공해주셔서 항상 감사드립니다 !!
미해결
김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 영한님, 같이 개발 공부하는 친구와 함께 영한님 예시 코드로 서로 채팅이 되는지 확인하고 싶어 친구의 IP 주소를 받아 서로간 실행을 해보았습니다. 통신이 될거란 기대와 다르게 Operation timed out 오류만 뜨게 되었습니다. 방화벽 문제인가 싶어 양쪽 컴퓨터의 방화벽을 잠시 끈 상태에서 다시해보아도 같은 오류가 뜨고, 서버쪽 프로그램을 실행하지 않고 클라이언트 프로그램만 실행시켜 connection refuesed 오류를 확인했지만 동일하게 Operation timed out 오류가 떴습니다. 무엇이 문제일까요?
미해결
김영한의 실전 자바 - 기본편
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예 [질문 내용] student1 = new Student(); 이런 식으로 객체를 만들게되면 student1에 Student의 형식에 맞춘 새로운 공간을 할당하고 주소를 배정한다고 이해해도 되는걸까요?
미해결
[2025 신규] 어서와, Fast API는 처음이지?
강의에서는 fastapi 앱 서버, dash 앱서버 각각 실행을 한 상태에서 dash에서 request를 수행하셨는데 dataframe을 사용하지 않고 fastai 결과 dictionary 를 받아서 dashboard를 그리는데 유리한 부분이 있을까요? (속도 측면?) fastapi와 dash를 같이 사용할 때 일반적인 방법이나 추천하는 방법이 따로 있을까요?
미해결
실전! 스프링 데이터 JPA
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 22:00 @Query어노테이션안에 countQuery는 안넣고 그냥 @Query("select m from Member m left join fetch m.team t")으로만 썻는데 count쿼리가 join을 하지 않고 나가는데 이것도 하이버네이트가 버전 업 되면서 최적화 된거라고 봐도 좋을까요? 내용 추가합니다 ! left fetch join은 데이터의 수가 원래것보다 더 많아지지 않아서 left fetch join이든 left join이든 둘다 count할때는 join하지 않는건가요?
미해결
김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
안녕하세요 영한님 강의 JPA때부터 잘 보고 있습니다. future에 대해서 질문이 있는데.. future.get()을 호출 했을때 값이 있으면 그 값이 바로 나오지만 아직 결과값이 나오지 않는 상태이면 호출 스레드는 wating상태가 맞지 않나요?? 제가 알기로는 wating 상태에서는 인터럽트나 이런걸로 깨울 수 있고 블로킹 같은 경우에는 깨우지 못한다는 차이가 있어서(더 많은 차이도 있을거라 생각합니다) 두가지가 같다고 보기 힘든것 같은데... wating과 블로킹이 같은건가요...??? 감사합니다!
해결됨
스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
게시글 구현까지 보고 질문드립니다! 지식공유자님의 깊이가 느껴지는 강의인 것 같습니다.. 구현 난이도(저점-고점)에 상관없이 쭉쭉 구현해나가시는게 대단하십니다 조그맣게 몇가지 질문이 있습니다 강의와 관련된 질문과 그렇지 않은 질문이 섞여있는점 양해부탁드립니다..! 테스트코드 @Test를 만드시고, 따로 밑에 메서드를 추가하시는건 반복호출을 위해서인게 맞을까요!? 그렇다면 JUnit의 @ParameterizedTest, @CsvSource 이거를 활용하면 좋을것같은데 사용 안하신 이유나 실무에서 요거를 잘 안쓰시는지 궁금합니다! 저도 WebClient나 RestClient로 api테스트를 하긴 하는데요! 그 API Docs 만들어주는 RestDocs는 테스트객체 : RestTemplate, WebTestClient, RestClient 와 테스트방법 (WebMvcTest, SpringBootTest)과 상관없이 플러그인만 추가하면 api docs가 만들어지는걸까요? 지식공유자님은 현업에서 Swagger, RestDocs중에 어떤걸 쓰시는지 궁금합니다 TestContainer 등의 방법은 사용하지 않으시는지!? JPA & Spring Controller에서 @PageableDefault()로 받는 방법은 주로 사용되지 않는 것일까요..? DTO로 반환해서 Response를 내려주시긴 하시지만 ResponseBody나 ResponseEntity 등으로 감싸서 내려주시지는 않으시는데, 이유가 있으신지요!? 강의에서처럼 커버링인덱스와 무한스크롤을 구현하려면 nativeQuery를 사용하지 않고 JPA와Hibernate로 해결하는 방법(JQPL/QueryDsl/Creteria)이나 Raw Library(Spring Data JDBC/JdbcTemplate)으로 해결하는 방법은 없는걸까요? Next 제가 아직 모든 강의를 다 본것은 아니지만.. 챕터를 보면 각각 다른 모듈끼리 Join을 하는 경우는 없는 것 같아보입니다..! 혹시 나중에 또 강의를 내신다면 샤드키와 DB 이중화의 fail over에 대한 실전강의, 다른 DB 스키마, 모듈을 사용하는 상황에 하나의 View에 다건의 Join이 들어갈 경우 설계 방법..이나 DDD, 클린 아키텍처에 대해서도 다룰 에정이 있으신지 궁금합니다! 마지막 덧붙임 정말 잘 보고 있습니다!! 미취업자(취준생)에 비해서 중-고급 경력직은 그렇게 많지 않아서 강의 수요가 적기도 하고 각자 나름의 위치에서 배운 self best practice가 있어서 그들만의 생각이나 태클이 들어올 수 있을 것 같은데.. 이런저런 이유에도 불구하고 이런 귀한 중고급 강의를 내주셔서 정말 감사합니다! 강의 끝까지 수강하고 궁금한점 생기면 종종 질문 올리겠습니다
미해결
김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 invokeAny 메서드 실행시 어떨 때는 인터럽트 예외가 발생하고 어떨 때는 발생하지 않고 모든 task가 완료 되고 있습니다. 스레드가 한번에 모두 실행이 완료돼서 그런걸까요 아니면 제가 코드를 잘못 작성했을까요? 읽어주셔서 감사합니다. 여기에 질문 내용을 남겨주세요.
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 강사님과 똑같이 코드를 짯는데 저는 실행이 돼지 않습니다. ViewResolver setup!이라고 문구가 발생하는데 어떤 부분을 확인해야할까요 강사님과 같은 JAVA 및 HTML 파일 작성 실행했으나 500 ERROR 발생 파일의 경로 및 소스코드 확인했으나 이상 없음
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 현지 저는 사정상 이클립스로 진행을 하고 있는데요 model.addAttribute 부분에서 model.addAttribute (attributeName:"data", attributeValue:"hello!!"); 로 하면 오류가 나고 model.addAttribute ("data","hello!!");로 수정하면 오류가 나지 않습니다 차이가 뭔지 알 수 있을까요
해결됨
실리콘밸리 엔지니어와 함께하는 Gradle
안녕하세요? gradle init로 그레들 프로젝트 생성했습니다.(그레들 버전 : 8.12) Type : Application 나머진 수업해서 지정한 그대로 입니다. (java, groovy, ..) 아무런 변경 없이 gradle app:test 혹은 gradle app:build를 실행했습니다. 그럼, 다음의 예외가 발생합니다. java.lang.ClassNotFoundException: org.example.AppTest at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606) 실습한 환경은 윈도우즈이고 CLI는 윈도우즈의 cmd입니다. 혹시, 도움 받을 힌트가 있을까요? 참고로 이클립스 프로젝트로 import하고 build 태스크를 실행하면 정상적으로 test가 진행됩니다.
해결됨
스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
Primary Key 생성 전략에서 많은 것들을 알기 쉽게 설명해주셔서 감사합니다 🙂 제가 개인적으로 생각하는 가장 베스트 방법 2가지만 설명 드리도록 하겠습니다. Primary Key 값을 Snowflake 알고리즘으로 해결 장점 인덱스 탐색에 있어서 정렬된 순서로 차례대로 저장 하다보니 범위 검색에 있어서 장점이 될 수 있다. 단점 Secondary Index 생성시 각각 Leaf Node 에 PK 값 (포인터) 를 가지고 있다보니 아무래도 생성된 Snowflake 알고리즘 값은 길이가 길어서 인덱스 저장용량이 증가 될 수 있다. PK 생성 전략을 Auto_Increment 로 하고 샤딩키(article_id) 값을 Snowflake 알고리즘으로 설정 해서 저장 한다. (단 client 에게는 PK 값 대신 article_id 으로 노출 한다.) 장점 Secondary Index 생성시 각각 Leaf Node 에 PK 값 (포인터) 값이 용량이 작아 인덱스 저장 용량 부담이 없다. 인덱스 탐색에 있어서 정렬된 순서로 차례대로 저장 하다보니 범위 검색에 있어서 장점이 될 수 있다. 단점 client 으로 부터 요청시 샤딩키(article_id) 값으로 데이터 조회를 해야 하기 떄문에 Secondary Index -> Clustered_Index 까지 두번 인덱스 트리를 탐색 해야 하는 단점이 있다. 일단 이렇게 각각의 장단점을 설명 드렸습니다. 여기서 제가 궁금한것은 실무에서 데이터베이스 테이블 설계시 이 두가지 방법 중 하나를 선택 하는데 있어서 각각 어떤 경우에 적합한지 판단 내리기가 힘든 부분이 있습니다. 각각 케이스 마다 장단점을 알고 있지만 아무래도 자세하게 수치화 된 지표 가 없어 선택하는데 있어서 어려움이 있는데요. 선생님 경우는 실무에서 이 두가지 중 선택시 어떤 경우에 적절하게 판단 하시는지 노하우를 알려주시면 정말 감사 하겠습니다 🙂
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
안녕하세요. 트랜잭션 커밋전에 쿼리를 생성해서 쓰기지연저장소에 저장하는것인지, 아니면 트랜잭션 커밋 이후 내부적으로 flush()호출 시 쿼리를 생성해서 쓰기지연 저장소에 저장하는것인지에 대해서 강의와 다른질문들, 구글링을 종합해보면 insert, update, delete 를 할때에 쓰기지연저장소에 SQL쿼리를 생성해서 저장하는 시점 이 약간 다른거같아서 아래와 같이 정리해 보았는데, 전체적으로 제가 이해한바가 맞는지 확인하고 싶어서 질문드립니다. 감사합니다. <update> 0. em.find()나, em.persist()로 인해 이미 1차캐시에 있는 엔티티의 필드값 변경 1. 트랜잭션 커밋. JPA는 트랜잭션을 커밋할때 변경된 엔티티 유무와 상관없이 항상 내부적으로 엔티티매니저의 flush()가 호출된다. 2. 영속성컨텍스트의 엔티티와 스냅샷을 비교한다. 3. UPDATE SQL을 생성해서 쓰기지연SQL저장소에 SQL쿼리를 저장한다. 4. 쓰기지연SQL저장소에있는 쿼리를 데이터베이스에 전송(=flush)한다. 5. 쓰기지연SQL저장소에있는 쿼리를 데이터베이스에 전송하고나서, 엔티티트랜잭션에 의해 트랜잭션이 커밋된다. <insert> 1. em.persist()를 하면, 해당 엔티티가 1차캐시에 추가되고, INSERT SQL을 생성해서 쓰기지연SQL저장소에 SQL쿼리를 저장한다. 2. 트랜잭션 커밋. JPA는 트랜잭션을 커밋할때 변경된 엔티티 유무와 상관없이 항상 내부적으로 엔티티매니저의 flush()가 호출된다. 3. 쓰기지연SQL저장소에있는 쿼리를 데이터베이스에 전송(=flush)한다. 4. 쓰기지연SQL저장소에있는 쿼리를 데이터베이스에 전송하고나서, 엔티티트랜잭션에 의해 트랜잭션이 커밋된다. <delete> 1. em.remove()를 하면, 해당 엔티티가 1차캐시에서 제거되고, DELETE SQL을 생성해서 쓰기지연SQL저장소에 SQL쿼리를 저장한다. 2. 트랜잭션 커밋. JPA는 트랜잭션을 커밋할때 변경된 엔티티 유무와 상관없이 항상 내부적으로 엔티티매니저의 flush()가 호출된다. 3. 쓰기지연SQL저장소에있는 쿼리를 데이터베이스에 전송(=flush)한다. 4. 쓰기지연SQL저장소에있는 쿼리를 데이터베이스에 전송하고나서, 엔티티트랜잭션에 의해 트랜잭션이 커밋된다.
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
강의 내용에서, 트랜잭션 커밋전에 em.persist나 em.remove를 하면, 영속성컨텍스트의 1차캐시에 값이 저장 또는 삭제되고, 쿼리를 생성해서 쓰기지연저장소에 저장한다고 하셨는데요. 트랜잭션 커밋전에 쿼리를 생성해서 쓰기지연저장소에 저장하는것인가요? 아니면 트랜잭션 커밋 이후 내부적으로 flush()호출 시 쿼리를 생성해서 쓰기지연 저장소에 저장하는것인가요??