월 16,940원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
em.clear() 질문
안녕하세요. 혼자 실습 중에 이해가 안가는 것이 있어 질문드립니다.Member member = new Member(1L, "jiho"); em.persist(member); Member jiho = em.find(Member.class, 1L); em.clear(); Member jiho2 = em.find(Member.class, 1L); System.out.println(jiho == jiho2); tx.commit();를 실행했을 때의 결과가로 나옵니다.false 출력 후에 commit() 호출로 쓰기 지연 저장소에 있던 insert sql문이 실행되야할 것 같은데,실행되었다는 문구도 없고 DB에도 저장되어있지않습니다. em.clear();가 1차캐시 뿐만 아니라 쓰기 지연 저장소에 있는 쿼리문들도 모두 지워버리는건가요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
String query = "SELECT t.members.size FROM Team t"; 오류
아래 내용 검색해보니 SIZE(t.member)로 사용하라고 안내하는데 왜 저는 안되는걸까요...? java.lang.IllegalArgumentException: org.hibernate.query.SemanticException: illegal attempt to dereference collection [com.example.jpql.jpql.Team(t).members] with element property reference [size]Caused by: org.hibernate.query.SemanticException: illegal attempt to dereference collection [com.example.jpql.jpql.Team(t).members] with element property reference [size]
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
엔티티 수정 과정과 쓰기 지연 저장소
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요! 플러시 강의 54초 부분에서 플러시 발생 시 수정된 엔티티가 쓰기 지연 SQL에 등록된다고 하셨는데, 그럼member.setUsername(",,,"); 와 같은 변경 메소드 호출변경은 영속성 컨텍스트에 바로 반영됨쓰기 지연 SQL 저장소에 UPDATE SQL 등록commit()후 flush()가 호출되며 스냅샷과 영속성 컨텍스트에 등록되어있는 엔티티 사이의 불일치 감지변경된 엔티티를 쓰기 지연 SQL 저장소에 등록flush로 쓰기 지연 SQL 저장소의 쿼리를 DB에 전송와 같이 동작하는 것이 맞나요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
강사님의 flush 중복 언급에 대해
강사님이 커밋하며 내부적으로 flush 가 호출된다고 했는데..왜 1번과 4번에 flush 가 두번있는건가요?내부적으로 flush 일어난다는게 1번과 4번 어떤건가요?커밋은 5번인데..처음에 어플리케이션 코드에인 tx.commit() 이것을 호출하면내부적으로 1번의 flush 가 호출된다는건가요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
일대일 단방향 관계
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]일대일 관계에서 외래 키를 대상 테이블에 넣을 때 왜 양방향 관계만 JPA에서 지원하고 단방향은 지원하지 않는지 궁금합니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
양방향 매핑과 단방향 매핑의 차이
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]단방향 매핑이랑 양방향 매핑의 차이점에 대해 생각해보았습니다. 먼저, DB에서 FK 하나만 있으면 양 테이블 Join 조회가 가능해서 FK 는 단방향 매핑처럼 DB 테이블에 존재하면 된다고 이해했습니다. 그래서 단방향 매핑과 양방향 매핑의 차이는FK "하나"를 가지고 단방향 이동을 할것인가 or 양방향 이동을 할것인가의 차이-> 이 경우는 양방향 매핑은 mappedBy 로 객체 세상에서 기존 단방향에서 양방향으로 접근이 가능하게 만들고(DB에선 원래 가능했음), By 쪽에서 DB 세상의 반대쪽 매핑 테이블 값을 변경하지 못하도록 JPA 에서 막는다고 이해했습니다. 제가 이해한 게 맞는지 궁금합니다. 추가적으로 @OneToMany 가 붙은 컬럼은 데이터베이스 테이블에 생성되지 않는건가요 원래?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
프록시 초기화 detach 질문
[질문 내용]안녕하세요 저와 비슷한 질문이 게시판에 올라와있는데 답변이 이해가지 않아서 질문 올립니다 아래 코드에서 강의와 다른점은 System.out.println에서 reference.getClass() 대신 reference를 썼다는 점 입니다. try { Member member1 = new Member(); member1.setName("member1"); em.persist(member1); em.flush(); em.clear(); Member reference = em.getReference(Member.class, member1.getId()); System.out.println("reference = " + reference); em.detach(reference); System.out.println(reference.getName()); tx.commit(); } catch (Exception e) { tx.rollback(); e.printStackTrace(); } finally { em.close(); }reference.getClass()에서 getClass()를 쓰지 않으면 reference.geName()했을때 member1로 출력이 됩니다.그런데 이 이유를 모르겠습니다. 저는 detach(reference)를 하면 프록시 객체 reference가 영속성 컨텍스트에서 분리되어서 getName()을 쓰지 못할거라고 생각했는데 왜 member1이 출력되는지 모르겠습니다 여기서도 에러가 나야하는것 아닌가요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
질문입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Member findMember = em.find(Member.class, member.getId()); em.detach(findMember); System.out.println("findMember.getUsername() = " + findMember.getUsername());프록시를 detach() 했을땐 이름 조회 안되고, find()로 했을 땐 detach() 해도 이름 조회되는게 프록시는 껍질 엔티티를 받는거라서 detach() 하면 안되고, find 로 받으면 실제 엔티티라서 detach() 해도 이름 조회가 되는건가요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
기본 키 매핑 member.getId() 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]섹션 4 기본키 매핑 중 24:56분identity전략을 사용하고 em.persist을 하고난 뒤, member.getId()했을때 select 쿼리가 왜 안날라가는지에 대해 설명하실 때 JDBC 드라이버 관련된 이야기를 하셨습니다.근데 em.persist를 하고 난 뒤면, 해당 멤버에 대한 엔티티가 1차 캐시에 이미 저장되어 있기 때문에 JDBC 내부 동작과는 관련없이 select 쿼리가 안나가는 것 아닌가요? DB까지 갈 필요없이 1차 캐시에 존재하니까..?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
update 모드에서 @Column(unique = true) 추가 시 변경 적용 안
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]update 모드에서 기존엔티티에 @Column(unique = true) 를 사용한다음 재시작을 했는데, 변경 사항이 h2에 적용이 되지 않습니다.그런데 @Column(name="username", unique=true) 를 하니 이번에는 ALTER 쿼리가 나가서 name과 unique 변경사항이 db에 적용이 됩니다.update 모드에서 @Column(unique = true) 를 했을때 적용이 되지 않고 @Column(name="username", unique=true) 이렇게 해야만 적용이 되는 이유를 알 수 있을까요?
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
객체를 테이블에 맞추어 모델링 할때
[질문 내용]안녕하세요강의 진도를 약 40% 가량 나가다가 다시 처음부터 듣는 와중에 이번 강의에서 궁금증이 생겨 질문드립니다.객체와 관계형 DB의 차이중 2번의 연관관계에서"객체를 테이블에 맞추어 모델링"했다고 하셨는데 이게 객체다운 모델링이 아닐 수 있다는건 이해가 갑니다. 그런데 일부러 객체를 테이블에 맞추어 모델링하는 경우가 있나요? 아래와 같이 Member형 필드를 쓰는게 아니라 일부러 id를 쓰는 경우가 있을지 궁금합니다 @Entity class Team { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne Member member; }
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
1:N 을 N:1로 바꿔 페이지네이션을 할 시 데이터 개수를 어떻게 기대한 1쪽에 맞출 수 있을지 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.1:N 관계에서 1을 기준으로 페이지네이션 조회에 대해 질문드립니다.강의에서는 N을 기준으로 조회lazy loading을 이용한 성능을 포기한 조회@BatchSize를 이용한 방법 이 세 가지가 제안되었습니다.만약 이 페이지네이션에서 강의 초반부 예시처럼 N쪽에 조건문이 걸려야 해서 그에 대한 결과물을 가져와야 하는 경우E.g. where m.age = 10 1번 방법으로 조회를 해야할 것 같은데1번 방법에서 N:1임에도 1 입장에서 페이지네이션 개수 그대로 데이터를 추출할 수 있는 방법이 떠오르지 않아 질문드립니다. N:1로 바꿔서 PAGE_SIZE를 10이라고 가정할 때 조회 (memberId가 10개가 나온다) teamId:1, memberId:1 teamId:1, memberId:2 teamId:1, memberId:3 teamId:2, memberId:4 teamId:2, memberId:5 teamId:2, memberId:6 teamId:2, memberId:7 teamId:3, memberId:8 teamId:3, memberId:9 teamId:3, memberId:10 실제 기대하는 조회 (team 이 10개가 나오기를 기대) teamId:1, memberId:1 teamId:1, memberId:2 teamId:2, memberId:3 teamId:2, memberId:4 teamId:3, memberId:5 teamId:3, memberId:6 teamId:4, memberId:7 teamId:5, memberId:8 teamId:5, memberId:9 teamId:5, memberId:10 teamId:6, memberId:11 teamId:6, memberId:12 teamId:7, memberId:13 teamId:7, memberId:14 teamId:8, memberId:15 teamId:8, memberId:16 teamId:8, memberId:17 teamId:9, memberId:18 teamId:9, memberId:19 teamId:10, memberId:20 teamId:10, memberId:20
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
기본 키 매핑
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]기본 키 매핑에서 @GeneratedValue 전략으로 IDENTITY, SEQUENCE, TABLE, AUTO의 특징은 이해했습니다. 하지만 어떤 경우에 어떤 전략이 유리할지 모르겠습니다. AUTO를 사용하지 않고 명시적으로 IDENTITY 또는 SEQUENCE 전략을 채택해야하는 경우가 있을까요?
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
식별자의 의미
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]값타입에는 식별자가 없다고 하는데그래서 식별자가 뭔가요? 식별하는 id같은거라고 생각하고 있는데 정확히 무슨의미로 넣어뒀는지 그리고 식별자의 의미를 모르겠습니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
member.getAddressHistory().add(new ~~~) 는 getter는 조회용
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]member.getAddressHistory().add(new ~~~) 는 getter는 조회용으로 쓰는걸로 아는데 .add해서 값을 변경할 수 있나요?getAddressHistory()는 AddressHistory()를 조회한다. 근데.add를 통해서 넣는다.... 뭔가요?뭔가 생략된 부분이 많아서 해깔리네요.. 이번강의는 굉장히 어렵네요
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
mapped by 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]mapped by를 one to many에서 해줘야하는지many to one에서 해줘야하는지 계속 해깔리는데이걸 쉽게 생각하는방법이 없을까요? 만약에 외래키로 가지고 오는건 many to one 이니외래키로 가지고 온건 실체고 반대쪽은 one to many이니 mapped by를 해줘야 한다.인거 같은데 만약에 mapped by를 안쓰면 어떻게 되는건가요? mapped by의 정의가 뭔가요?
- 해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
테이블 컬럼 생성 순서 문의
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]위와 같이 소스를 구성하고 생성 시 age가 맨 처음에 생성됩니다.검색해보니 알파벳 순으로 만들어진다고는 하는데pk또한 순서가 밀려서 문의드립니다 <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.use_sql_comments" value="true"/> <property name="hibernate.jdbc.batch_size" value="10"/> <!--쓰기지연 SQL에 저장될 개수, 버퍼--> <property name="hibernate.hbm2ddl.auto" value="create" />설정은 위와 같습니다.
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
다대다 관계에 대해서 몇가지 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]비지니스 요구 사항에 맞게 엔티티를 설계할 때 비지니스가 복잡하고 현실과 맞게 설계하기 위해서 고민하다 보니 다대다 관계가 많아지는 것 같습니다 배운대로 OrderItem과 같이 모두 중간에 엔티티를 만들어 1대다로 바꾸었습니다만 몇가지 의문이 드는 부분이 있어서 질문드립니다. 다대다 관계를 위해 중간 엔티티와 테이블을 만들다 보니 의미없는 엔티티와 테이블이 많아지는 것 같습니다. 이런 경우 설계가 잘못되었다고 판단할 수 있나요OrderItem과 같은 중간 엔티티에 대한 리포지토리를 만들면 조회가 편해지고 조인 횟수를 줄일 수 있을 것 같습니다. 그런데 이런 것은 설계적으로 바람직하진 않은가요? 언제나 답변 감사합니다
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
실전예제 1 - 요구사항 분석과 기본 매핑에서 단축키 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요! 강의 9분 8초 쯤에 이거 단축키 어떤 키 쓰신걸까요 ?? 알고싶습니다 ㅜㅜ
- 미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
트랜잭션에 대해서 질문있습니당 ㅠㅠ
[질문 내용]동시성 문제를 공부하던 중 한 트랜잭션 내에서A 와 C 의 중간테이블인 B 를 저장 이후 C의 칼럼을 변경감지를 통해 업데이트하려고 수정하는 상황입니다 찾아보니B를 저장할 때 외래키인 C 에 대해 SLock 을 걸더군요!디버깅해보니@Transactional이 속한 범위 내에서는 쭉 C에 대해 SLock 을 걸더라고요! 근데 제가 알기로 C 에 대해 update 쿼리가 날라갈 때는 XLock 을 거는 걸로 알고있거든요! 결국 C에 대해 @Transactional 이 종료될 언저리 쯤,즉 변경 감지를 통해 C에 대해 update 쿼리가 날라갈때 SLock 에서 XLock 이 되는 과정을 직접 눈으로 보고 싶은데 혹시 어느 클래스의 어떤 메소드에서변경감지를 통해 flush 를 하고 commit 을 하는지 알려주실 수 있을까요??