일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CS
- CSS
- HTML
- 완전탐색
- jpa
- 알고리즘
- java
- Algorithm
- 프로그래머스
- PYTHON
- DFS
- 운영체제
- websocket
- It
- BFS
- 트랜잭션
- redis
- 자료구조
- 데이터베이스
- Docker
- 영속성 컨텍스트
- 백준
- OS
- Data structure
- 플로이드-워셜 알고리즘
- javascript
- nosql
- db
- mysql
- spring
- Today
- Total
목록Java/JPA (4)
If at first you don't succeed, try again
* 개요JPA를 공부하다 보니, flush와 commit에 대한 개념이 너무 헷갈렸다.두 개의 작업은 데이터를 데이터베이스에 반영한다는 점에서는 비슷하지만 엄연히 다르다고 한다.이를 정리하기 위해 글을 쓰게 되었다. * flush()란?flush()는 영속성 컨텍스트의 변경사항을 즉시 데이터베이스에 반영(동기화)하는 역할을 한다.즉, 데이터베이스와 영속성 컨텍스트 사이의 스냅샷을 일치시키는 작업이다. - 스냅샷 : 엔티티를 영속성 컨텍스트에 보관할 때, 최초 상태를 복사해서 저장해두는 것 다만, 트랜잭션을 커밋하지는 않는다.이는 에러 발생 시, ROLLBACK이 가능한 단계까지만 반영하는 작업임을 알 수 있다.그리고 flush()가 호출되면 변경된 엔티티가 SQL로 변환되어 실행되지만, 트랜잭션이 끝난 ..
* 영속성 컨텍스트란?엔티티를 영구 저장하는 환경이라는 뜻이다. 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다.em.persist(member);persist() 메서드는 엔티티 매니저를 사용해서 회원 엔티티를 영속성 컨텍스트에 저장한다. * 엔티티의 생명주기- 비영속(new / transient) : 영속성 컨텍스트와 전혀 관계가 없는 상태 - 영속(managed) : 영속성 컨텍스트에 저장된 상태- 준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태- 삭제(removed) : 삭제된 상태 * 비영속// 객체를 생성한 상태(비영속)Member member = new Member();member.setId("member1");..

* Entity Manager란?Entity Manager는 내부적으로 영속성 컨텍스트를 유지하며, 현재 관리 중인 엔티티 객체들을 캐싱하고 관리한다. * Entity Manager 생성 과정 1. 엔티티 매니저 팩토리 생성JPA를 시작하기 위해 persistence.xml의 설정 정보를 사용해서 엔티티 매니저 팩토리를 생성해야 한다.EntityManagerFactory emf = Persistence.createEntityManagerFactory("test");엔티티 매니저 팩토리를 생성할 때, JPA 구현체에 따라서 데이터베이스 커넥션 풀도 생성할 수 있으므로 비용이 크다. 따라서 엔티티 매니지 팩토리는 애플리케이션 전체에서 딱 한번만 생성하고 공유해서 사용해야 한다. 2. 엔티티 매니저 생성Ent..

* JPA란?JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준이다. JPA는 애플리케이션과 JDBC 사이에서 동작한다. * ORM이란?ORM(Object-Relational Mapping)은 객체와 데이터베이스를 매핑한다는 뜻이다. ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해준다. * MyBatis vs JPA특징MyBatisJPA방식SQL 기반 매핑객체 중심 매핑 (ORM)쿼리 작성 방식직접 SQL 작성 (XML 또는 Annotation)JPQL, Criteria API, Native SQL성능SQL 튜닝 가능 (최적화 용이)캐싱, 지연 로딩 지원 (대량 데이터 처리 유리)복잡한 쿼리복잡한 JOIN, 서브쿼리 최적화 가능복잡한 쿼..