BackEnd/ORM(JPA)

    플러시 (Flush)

    플러시란? 영속성 컨텍스트의 변경내용을 데이터베이스에 반영 플러시가 발생하는 경우 변경 감지 수정된 엔티티 쓰기 지연 SQL 저장소에 등록 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송 (등록, 수정, 삭제 쿼리) 영속성 컨텍스트를 플러시하는 방법 em.flush() - 직접 호출 트랜잭션 커밋 - 플러시 자동 호출 JPQL 쿼리 실행 - 플러시 자동 호출 JPQL 쿼리 실행시 플러시가 자동으로 호출되는 이유 em.persist(memberA); em.persist(memberB); em.persist(memberC); // tx.commit or em.flush()전까지는 DB에 안날라감 // 중간에 JPQL 실행 // JPQL 실행시 persist해놓은 객체들이 DB에 반영되지 않으면 // 아..

    영속성 컨텍스트 (persistence Context)

    JPA에서 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑하기 ( Object Relational Mapping) 영속성 컨텍스트 엔티티 매니저 팩토리와 엔티티 매니저 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어 "엔티티를영구 저장하는 환경"이라는 뜻 EntityManager.persist(entity); 영속성 컨텍스트는 논리적인 개념 눈에 보이지 않는다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근 엔티티의 생명주기 비영속(new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 형태 영속 (managed) 영속성 컨텍스트에 관리되는 상태 준영속 (detached) 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제 (removed) 삭제된 상태 엔티티 생명주기 code // ..

    JPA 구동방식 및 CRUD

    JPA 구동방식 회원 Entity를 활용한 CRUD 더보기 회원 Entity 생성 package hellojpa; import javax.persistence.Entity; import javax.persistence.Id; @Entity public class Member { @Id private Long id; private String name; //Getter, Setter … public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 회원 ..

    JPA 개요

    JPA란? Java Persistence API 자바 진영의 ORM 기술 표준 ORM? Object-relational mapping (객체 관계 매핑) 객체는 객체대로 설계 관계형 데이터베이스는 관계형 데이터베이스대로 설계 ORM 프레임워크가 중간에서 매핑 대중적인 언어에는 대부분 ORM 기술이 존재 JPA의 장점 SQL 중심적인 개발에서 객체 중심으로 개발 생산성 유지보수 패러다임의 불일치 해결 성능 데이터 접근 추상화와 벤더 독립성 (Mysql이나 Oracle등 DB변경에서 자유로움) 표준 목표 - 객체와 테이블 설계 매핑 객체와 테이블을 제대로 설계하고 매핑하는 방법 기본 키와 외래 키 매핑 1:N, N:1, 1:1, N:M 매핑 목표 - JPA 내부 동작 방식 이해 JPA의 내부 동작 방식을 이..