일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 자바
- Spring
- 백내장 금감원
- 코테 합격후기
- 백내장 다초점렌즈 삽입술
- 금감원
- 백준 알고리즘
- 금융감독원 민원신청
- 코드스테이츠 백엔드 부트캠프 합격
- 코드 스테이츠 백엔드 교육과정
- 보험금 지급거절
- 겜스고
- 코드스테이츠 백엔드 후기
- 금감원 백내장 민원
- codestates 국비지원 1기 합격 후기
- 코드스테이츠 합격 후기
- Gamsgo
- 메서드
- 에이치엘비
- Java
- 해시
- 코드스테이츠 합격
- CodeState 후기
- 코드스테이츠 백엔드 교육과정
- 코드스테이츠 부트캠프
- Code States 백엔드 합격 후기
- 백내장
- HLB
- 금융감독원
- 코드스테이츠 부트캠프 합격 후기
Archives
- Today
- Total
개발하는 동그리
[JPA] 이론 정리 본문
반응형
JPA (Java Persistence
- ORM (객체 관계 매핑) 으로 객체와 관계형DB를 각각 설계해서 매핑
- 인터페이스의 모음 ( 구현체 : 하이버네이트.. 등등 )
- SQL 중심 개발 -> 객체 중심 개발
JPA CRUD
- 저장 : jpa.persist(member)
- 조회 : Member member = jpa.find(memberId)
- 수정 : member.setName("변경할 이름")
- 수정하면 자동으로 DB 업데이트
- 삭제 : jpa.remove(member)
JPQL (객체 지향 쿼리)
- SQL을 추상화한 JPQL 객채지향 쿼리 언어
- 엔티티 객체를 대상으로 쿼리 ( SQL은 데이터베이스 테이블 대상 )
- SQL 문법과 유사
- 애플리케이션에 필요한 데이터만 DB에서 부르기 위해 검색조건이 포함된 SQL ⭐
- 페이지 ( .setFirstResult / .setMaxResult )
영속성 컨텍스트
- Entity를 영구적으로 저장하는 환경
- 방법 : EntityManager.persist(entity); <--- Entity 멤버를 영속성 컨텍스트에 저장
- 1차 캐시
- 한 트랜잭션이 끝나면 영속성 컨텍스트를 지움 (1차 캐시가 사라짐)
- DB에서 데이터를 꺼내면 영속성 컨테이너에 저장됨
- 데이터 변경시 트랜잭션 시작할 것
- 트랜잭션은 커밋할 때 INSERT SQL을 데이터 베이스에 보낸다.
- 쓰기 지연 SQL 저장소
- JPA가 1차캐시에 들어온 Entity를 INSERT SQL생성해서 쓰기 지연 저장소에 저장
- transaaction.comit 하면 저장소에 있는 데이터들이 flush하면서 SQL넘어간다.
- 실제 DATA BASE TRANSACTION도 동시에 일어난다.
- 쓰기 지연 SQL 저장소
- 최초로 영속성 컨텍스트에 저장될 때 스냅샷을 저장 (불러오거나 등록할 때)
- commit 되는 시점에 flush() 하면서 스냅샷과 현재값을 비교해서 바뀌었으면 SQL 저장소에 저장하고 반영하고 커밋한다.
플러시 (flush)
- 컨텍스트의 변경내용을 데이터 베이스에 반영
- 변경 감지 (수정된 엔티티 쓰지 지연 SQL 저장소에 등록)
- 쓰기 지연 SQL 저장소의 쿼리를 데이터 베이스에 전송 (등록, 수정, 삭제)
- em.flush() -- 직접 호출
- 트랜잭션 커밋 -- 플러시 자동 호출
- JPQL 쿼리 실행 -- 플러시 자동 호출
준영속 상태
- em.detach(entity) : 특정 엔티티를 준영속 상태로 전환
- em.clear() : 영속성 컨텍스트 초기화
- em.close() : 영속성 컨텍스트 종료
@Entity
- JPA가 관리하는 객체 (데이터 테이블과 매핑)
- 기본값은 클래스 이름 그대로
- JPA는 내부적으로 리프렉션을 쓰기 때문에 동적으로 객체를 생성해야 한다. 따라서 기본생성자가 필요하다. ⭐⭐⭐⭐
@Table
- name = Table 이름
반응형
'IT 정보 > Spring' 카테고리의 다른 글
[인증\보안] Spring Security 기본 (인증/ 인가) (3) | 2022.08.02 |
---|---|
[인증/보안] JWT(Json Web Token) 인증 (8) | 2022.07.29 |
[인증/보안] OAuth2 (2) | 2022.07.29 |
[인증/보안] CORS란!? (5) | 2022.07.28 |
[인증/보안] 보안파트 애너테이션 (4) | 2022.07.28 |