묻고 답해요
163만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 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()호출 시 쿼리를 생성해서 쓰기지연 저장소에 저장하는것인가요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
자바 코드로 직접 스프링 빈 등록하기 강의 관련 질문입니다~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 강의에서 의존성 주입의 3가지 방법에 대한 내용이 나왔는데요.그 중에서 "setter 주입" 방법의 경우, 만약 MemberController를 예를 들면,스프링 서버가 뜰 때, MemberController 객체가 생성될 때 생성자가 호출되는 건 이해를 하는데, setter 주입 방식은 객체 생성 시 생성자 뿐만 아니라 setter도 같이 스프링에서 호출하는 걸까요? 그리고 위와같이 setter 주입 시 private으로 변경해도 스프링 서버 run하는데는 문제가 없던데 이유가 있을까요? 강의에서는 public으로 setter를 노출시키는게 setter 주입 방식의 단점이라고 하셔서요.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
그래들 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]저는 Gradle - Groovy / 3.4.1 / open JDK 17 / 이클립스-STS4로 강의를 설정하려 하는데 계쏙 오류가 나서 질문드려봅니다.메이븐으로 설정할 시에는 위와 같은 옵션 및 이클립스에서 서버 구동까지 문제없이 잘 되는데 그래들로 하는경우 계속 오류가 나서 프로젝트가 설정되지 않습니다.그래들로 할 경우 인텔리제이로 해야하는건가요??
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
sum+=arr[i] 합계 문의
14:28 부분인데요밑에 어느분이 합계 25로 나왓는데 이해가 안간다는 글을 봣습니다. 저도 결과는 다르지만 이 부분이 이해가 안됩니다.for문으로 수행될때....sum=+arr[i]1 0 13 1 26 3 310 6 4i=5는 수행이 안됨 이렇게 해서 sum값이 10이 안될까요?왜 1+2+3+4+5 의 값 15가 되는지 이해가 안되네요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
프로젝트 생성해서 intellij에서 열었는데 오류
[질문 내용]쌤, 이렇게 프로젝트를 생성했는데, 오류가 납니다. ㅠㅠ뭘 해줘야할까요? 프로젝트 지우고 다시 generate해서 압축 풀고 build.gradle로 열어도 또 똑같은 오류가 납니다 ㅠㅠ!
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
멀티 모듈 방식 질문입니다.
안녕하세요 강의 잘 듣고 있습니다.현재 게시글 조회수 부분 보고있는데요 헷갈리는게 있습니다.멀티 모듈 방식 이라 aricle과 view 모듈이 나눠져 있는데요현재는 게시글 조회 api와 게시글 조회수 증가 api가 나뉘어져 있는거같은데요 프론트에서 게시글 조회 시 이 2개의 api를 사용하는 걸까요?게시글 조회 api에서 게시글 조회 -> redis 조회수 1 증가 이렇게 하나의 api가 아니라 실무에서도 api를 나누는 방식으로 진행하는걸까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
ERD 설계 질문
숨고와 같은 구인 구직 사이트인데 특정 작물에 대한 전문가와 매칭해주고 견적이 나오는 서비스를 프로젝트로 만들려고 생각중입니다. 이렇게 종류를 선택하면(위에 사진1에서 아래 사진2으로 넘어감니다.) 서비스일 경우 이런 카테고리는 따로 erd를 만들어 주어야 하나요? 아니면 enum으로 빼는 건지 감이 정말 1도 안 잡혀서 질문 드립니다. 견적 엔티티를 이런식으로 만들고 컨설팅 형태 이런 것도 enum으로 만드나요?나머지는 속성값으로 들어가는 것은 알고 습니다.) 그리고 맨 밑에 경우 만약 사진하고 글을 같이 첨부해서 컨설팅 내용을 신청할경우 이것도 erd로 따로 빼 놓나요?( aws 로 작업할경우 s3로 이미지만 따로 저장하는 것은 알 고 있습니다.)
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
맥북에서 ._Var8.java와 같이 ._*파일이 계속 생겨 오류가 생깁니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)아니오.2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요. 실습중 맥북에서 ._Var8.java와 같이 ._*파일이 계속 생겨 오류가 생깁니다. 맥북 M1입니다.혹시 해결하는 법도 알 수 있을까요..?
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
채팅서버가 2개일때 서버간 socketManager 공유방법
안녕하세요.해당 강의에서는 채팅 서버가 하나지만만약 채팅서버를 2개 운영한다고 가정했을때 (A.jar, B.jar)배포를 위해 A jar 를 내리고 다시 올릴때 서버가 내려가기전 A jar 의 socket 객체정보를 B jar 로 보내려면 어떤 방법을 사용해야할까요? socket 을 직렬화해서 보내려고 했는데 socket 은 제가 만든 클래스가 아니다보니 Serializable 를 상속받지못해 불가능할것같은데.. 실무에서는 채팅 이중화서버운영 무중단 배포를 어떤식으로 하는지 궁금합니다 ㅠㅠ .. 강의보다 심화된 내용이지만 해당 부분에 대한 지식을 쌓기가 힘들어서 글을 작성하게 되었습니다. 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderController 에서 {orderId} 경로변수 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 강의를 듣던 중 궁금한 내용이 생겨 질문합니다.<td> <a th:if="${item.status.name() == 'ORDER'}" href="#" th:href="'javascript:cancel('+${item.id}+')'" class="btn btn-danger">CANCEL</a> </td> function cancel(id) { var form = document.createElement("form"); form.setAttribute("method", "post"); form.setAttribute("action", "/orders/" + id + "/cancel"); document.body.appendChild(form); form.submit(); }위 자바 스크립트 코드를 보면, post 방식으로 전송할때, item.id 를 cancel 함수의 매개변수로 전달하고, 이 item.id 가 /orders/id/cancel 에 들어갑니다. @PostMapping("/orders/{orderId}/cancel") public String cancelOrder(@PathVariable Long orderId){ orderService.cancelOrder(orderId); return "redirect:/orders"; }반면에 , OrderController 의 위 메소드에서는 , 경로변수가 {orderId} 로 설정이 되어있습니다. 왜 itemId 를 받아와서 orderId 로 사용하는 것인지 궁금합니다. 만약 그것이 아니라면 제가 어떤 부분을 놓치고 있는 것인지 궁금합니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
강의자료 파워포인트 기준 361~362 페이지를 보면
이렇게 나타나고 있는데요.path > '00a0z' 아닌가요??
-
미해결김영한의 실전 자바 - 기본편
static2.ex 첫번째 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.Car 클래스 안에 this.carName안에 왜 굳이 carName을 할당했는지 잘 이해가 가지 않습니다. private String carName가 사용되지 않아서 변수 선언도 불필요하다고 생각됩니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
openJDK 23 설치
OpenJDK 21이 없어서 Temurin을 다운 받았는데, 위의 메시지가 뜹니다. 강의 수강에는 딱히 문제가 되지 않나요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
프록시 객체 질문 있습니다.
em.getReference() 를 호출하면, 프록시 객체를 1차 캐시에 저장하고, 해당 프록시 객체를 반환em.find() 를 호출하면, 실제 엔티티 객체를 생성하고 프록시 객체를 초기화 이런식으로 동작하는데2번 과정에서 생성된 실제 엔티티 객체는 1차 캐시에 저장되는지 안되는지가 궁금합니다초기화된 프록시 객체에서 setXXX() 같은 메서드를 호출하면 프록시 객체에 연결된 실제 엔티티의 setXXX() 메서드가 호출될텐데, 이런 경우 update 쿼리가 나가는 것을 보니까 실제 엔티티를 영속성 컨텍스트에서 관리해주고 있는 것 같긴한데프록시 객체와 실제 엔티티 객체의 id값이 같은데 1차 캐시에 두 개 다 저장되는게 맞는건가 싶어서 질문드립니다.
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
타입캐스팅 궁금한점 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 코틀린을 처음 접해봤습니다. 질문이 이상하더라도 양해를 구하며 상세히 알려주시면 정말 감사하겠습니다.fun printAgeIfPerson(obf:Any?){val person = obj as? Person......}여기서 질문 드립니다.앞에서 변수 선언을 할 때 val,var을 배웠는데, 매개변수를 선언하는 부분에서 obf:Any? 대신에 val obj:Any?로는 안 쓰나요? 앞에서 모든 변수에는 var/val 을 붙여서 선언한다고 하셨어서요. obj는 매개변수에서 선언된 변수 아닌가요?2.위 코드에서 obj as? Person 의 값이 결과값 또는 null로 나온다고 하셨는데, 그렇게 되면 lvalue인 val person에도 null이 들어갈 여지가 있으므로 val person? 나 val person:Person?으로 선언이 되어야 하는 것 아닌가요?자바와 다른 점이 많아서 헷갈립니다.
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
묵시적 조인이 안일어나는 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]13:50 쯤에 oi.order.id 부분에서 묵시적 조인이 안일어나는 이유가 orderItem에서 order로가는 외래키가 있어서가 맞나요? 다른 필드에 접근하면 묵시적 조인이 일어나는지 궁금합니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
ArticleRepository의 네이티브 쿼리부분 질문드립니다...
안녕하세요~~ 강의 너무 잘 듣고 있는 1인입니다.다름이 아니라 네이티브 쿼리 작성 부분에서 에러가 나는데 이게 이곳저곳 찾아봐도 해결이 안돼서요ㅠㅠ 자꾸 아래 부분에서 에러가 납니다... 참고로 툴은 vscode로 spring extension받아서 사용중입니다... LIMIT :limit OFFSET :offset " @Query( value = "SELECT article.article_id, article.title, article.content, article.board_id, article.writer_id, " + "article.created_at, article.modified_at " + "FROM ( " + " SELECT article_id " + " FROM article " + " WHERE board_id = :boardId " + " ORDER BY article_id DESC " + " LIMIT :limit OFFSET :offset " + ") t " + "LEFT JOIN article ON t.article_id = article.article_id", nativeQuery = true ) List<Article> findAll( @Param("boardId") Long boardId, @Param("offset") Long offset, @Param("limit") Long limit );
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
15:50초 length 코드 처리순서 질문
15:50초에 3가지 예시의 모든 출력값이hello, world! 라고 하셨는데요마지막 예시인 length 처리순서가 잘 이해가 안갑니다1)문자열 길이 계산에서 0부터 시작되고 13까지 가는건가요?(공백, 콤마, 느낌표까지 포함)2) 다음 줄에 증감++ 되어 13까지 가고 탈출되어 for문으로가는건가요?3) for 문 내 length 변수는 int에서 선언된 값이 들어가는지요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
"회원 도메인과 리포지토리 만들기" 강의까지 듣고 궁금한 점이 있어 질문 남깁니다~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. "회원 도메인과 리포지토리 만들기" 강의까지 듣고 궁금한 점이 있어 질문 남깁니다~ HelloController와 같은 컨트롤러 클래스나Repository 인터페이스의 구현체인 MemoryMemberRepository 클래스 전부 객체가 다 생성되고 동작한다고 보면 될까요?그렇게 생성된 객체들을 스프링 빈이 관리한다고 보면 될까요?