JPA76 4 JPA 플러시(flush) 김영한님의 인프런 강의와 PDF를 바탕으로 정리하였습니다. https://www.inflearn.com/courses?s=%EA%B9%80%EC%98%81%ED%95%9C 플러시 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영하는 것입니다. 플러시가 발생하는 순서는 아래와 같습니다. 1. 변경 감지 (dirty checking) 2. 수정된 엔티티 '쓰기 지연 SQL 저장소'에 등록 3. '쓰기 지연 SQL 저장소'의 쿼리를 데이터베이스에 전송 (등록, 수정, 삭제 쿼리) 영속성 컨텍스트를 플러시하는 방법은 3가지가 있습니다. 1. em.flush() (직접 호출) 2. 트랜잭션 커밋 (플러시 자동 호출) 3. JPQL 쿼리 실행 (플러시 자동 호출) 이제 위의 3가지 방법으로 영속성 컨텍스트를 flu.. 2021. 7. 3. 3 JPA 영속성 컨텍스트 이해하기 김영한님의 인프런 강의와 PDF를 바탕으로 정리하였습니다. https://www.inflearn.com/courses?s=%EA%B9%80%EC%98%81%ED%95%9C 영속성 컨텍스트는 엔티티를 영구 저장하는 환경이라는 의미로, 눈에 보이지 않는 논리적인 개념입니다. 이 영속성 컨텍스트에 접근하기 위해서는 EntityManagerFactory와 EntityManager를 통해 접근해야 합니다. EntityManager, EntityManagerFactory 엔티티의 생명주기 엔티티의 생명 주기에는 4가지 단계가 있습니다. 1. 비영속( new / transient ) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 (ex. A객체를 new했을 때) 2. 영속( managed ): 영속성 컨텍스트에.. 2021. 7. 3. 2 JPA로 CRUD해보기 김영한님의 인프런 강의와 PDF를 바탕으로 정리하였습니다. https://www.inflearn.com/courses?s=%EA%B9%80%EC%98%81%ED%95%9C 데이터베이스 방언 • JPA는 특정 데이터베이스에 종속X • 각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다름 예1 ) 가변 문자: MySQL은 VARCHAR, Oracle은 VARCHAR2 예2 ) 문자열을 자르는 함수: SQL 표준은 SUBSTRING(), Oracle은 SUBSTR() 예3 ) 페이징: MySQL은 LIMIT, Oracle은 ROWNUM • 방언: SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능 JPA는 DB방언들을 잘 처리해줍니다. 현재 h2를 사용하므로, h2의 방언처리를 할 수 있도.. 2021. 7. 2. 1 왜 JPA를 사용해야 하는가? 김영한님의 인프런 강의와 PDF를 바탕으로 정리하였습니다. https://www.inflearn.com/courses?s=%EA%B9%80%EC%98%81%ED%95%9C 객체 지향과 관계형DB의 차이 JPA가 없다면 객체지향 중심적인 개발을 하기가 어렵습니다. Member라는 클래스를 설계할 때에도 DB의 테이블에 맞추어 설계해야합니다. 또 다른 큰 문제가 있는데, 아래의 다이어그램을 보면 객체지향 언어에서의 Album은 Item을 상속받았므로 필드에 id, name, price가 있는 것과 마찬가지입니다. 하여 Album의 id, name, price를 조회하고 싶을 때는 Album.getId(); Album.getName(); Album.getPrice(); Album.getArtist(); 위와 .. 2021. 7. 2. 이전 1 ··· 16 17 18 19 다음