데이터베이스/JPA4 일대다 페이징 페치조인이 위험한 이유 public class Team { public Team(Long id, String name) { this.id = id; this.name = name; } @Id private Long id; private String name; @OneToMany(mappedBy = "team") private List members = new ArrayList();}여기 팀이 있다 팀은 일대다로 멤버와 연관되어 있다. public class Member { public Member (Long id, String username, Team team) { this.id = id; this.username = username.. 2026. 2. 27. 지연로딩 vs 즉시로딩 vs 패치조인 vs JPQL일반조인 vs 일반조인 1. 엔티티@Entity@Getter@NoArgsConstructor@AllArgsConstructor@Builderpublic class Post { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "post_id") private Long id; @Column(nullable = false) private String content;} @Entity@Getter@NoArgsConstructor@AllArgsConstructor@Builderpublic class Comment { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) .. 2026. 1. 12. 세션과 커넥션 요약1. 최초에 히카리데이터소스에서 풀엔트리크리에이터 생성 풀 엔트리크리에이터에서 콜() 호출2. 히카리풀에서 createPoolEntry() 호출 PollBase에서 newPollEntry() 호출 뉴커넥션 호출 히카리데이터소스에서 겟커넥션 호출 커넥션 반환 커넥션풀 만큼 커넥션을 만듬3. @Tramsctional 달린 메소드 시작 트랜잭션인터셉터 호출4. TransactionAspectSupport의 invokeWithinTransaction() 호출 createTransactionIfNecessary() 호출 5. 플랫폼트랜잭션매니저의 구현체인 AbstractPlatformTransactionManager에서 겟트랜잭션시작6AbstractPlatformTransactionManager을 상속받은 하.. 2026. 1. 9. 스레드로컬과 세션 public class ThreadLocalSessionContext extends AbstractCurrentSessionContext { private static final ThreadLocal> CONTEXT_TL = ThreadLocal.withInitial( HashMap::new );하이버네이트의 스레드로컬 세션 콘텍스트 클래스스레드로컬은 맵으로 이루어져있으며 세션팩토리를 키로 많은 세션이 들어있다. @Overridepublic Session getCurrentSession() { if ( currentSessionContext == null ) { throw new HibernateException( "No CurrentSessionContext configured" ); .. 2026. 1. 9. 이전 1 다음