강의노트/JPA - 기본편
-
[JPA] 플러시 (flush)강의노트/JPA - 기본편 2021. 5. 27. 10:25
플러시란? 영속성 컨텍스트의 변경 내용을 DB에 반영하는 것 트랜잭션 commit이 일어날 때 플러시가 동작하는데, 이때 쓰기 지연 저장소에 쌓아 놨던 INSERT, UPDATE, DELETE SQL들이 DB에 전달된다. [주의] 영속성 컨텍스트를 비우는 것은 아니다. 플러시의 동작 과정 변경을 감지한다. (Dirty Checking) 수정된 Entity를 쓰기 지연 저장소에 등록한다. 쓰기 지연 저장소에 저장된 SQL을 DB에 전달한다. 플러시가 발생한다고 해서 commit이 이루어지는 것이 아니고 플러시 다음에 실제 commit이 일어난다. 플러시가 동작할 수 있는 이유는 데이터베이스 트랜잭션(작업 단위)이라는 개념이 있기 때문이다. 트랜잭션이 시작되고 해당 트랜잭션이 commit되는 시점 직전에만 ..
-
[JPA] JPA 소개강의노트/JPA - 기본편 2021. 3. 31. 10:25
SQL 중심적인 개발의 문제점 지금 시대는 객체를 관계형 DB에 관리 객체를 관계형 데이터베이스에 저장 객체를 자바 컬렉션에 저장 하듯이 DB에 저장할 수는 없을까? JPA의 탄생 배경 SQL 중심적인 개발의 문제점 무한 반복, 지루한 코드 (CRUD) SQL 의존적인 개발을 피하기 어렵다 패러다임의 불일치 객체 vs 관계형 데이터베이스 객체와 관계형 데이터베이스의 차이 상속 연관관계 참조 vs FK를 이용한 조인 객체는 한 방향으로 관계를 맺음 vs 테이블은 양방향으로 관계를 맺음 데이터 타입 데이터 식별 방법 객체 그래프 탐색 객체는 자유롭게 객체 그래프를 탐색할 수 있어야 한다. '.'을 찍어서 연관된 객체를 탐색하는 것을 객체 그래프 탐색이라 한다. 객체 그래프 탐색은 처음 실행하는 SQL에 따라..