일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- open-session-in-view
- 스프링부트 도커
- 스프링
- Atomicity
- spring formatter
- method refetence
- 스프링 시큐리티 설정
- 토비의 스프링
- IOC
- ioc컨테이너
- 스프링 포매터
- 스프링di
- Spring
- fetch join
- jpa no session
- 소프트웨어의 품격
- 자바 필터
- java predicate
- jpa lazy
- 도커 이미지 빌드
- 그래프큐엘
- 수정자주입
- 정적팩토리메서드
- 생성자주입
- kotlin ::
- 비기능적 요구사항
- 동적파라미터
- 스프링시큐리티
- 기능적 요구사항
- kotlin 리팩터링
- Today
- Total
목록JPA (9)
공부기록
연관관계의 주인 public class Member { @ManyToOne @JoinColumn(name = "team_id") private Team team; ... } 이렇게만 있어도 member.getTeam() 으로 객체그래프를 탐색할 수 있다. 하지만 반대쪽인 Team 객체에서는 List members 등과 같은 필드가 없기 때문에 Team에서 Member객체를 탐색할 수 없다. 추천하지는 않지만 아래와 같이 Team에서도 Member를 탐색할 수 있게끔 양방향관계를 갖고있다고 생각해보자. public class Team { @OneToMany(mappedBy = "team") private List members = new ArrayList(); ... } 엄밀히 말해서 엔티티에서는 양방향 ..
준영속 상태 영속상태의 엔티티가 영속성 컨텍스트에서 분리(detached) 영속성 컨텍스트가 제공하는 기능 사용 불가. 준영속상태로 만드는 방법 em.detach(entity) -> 특정 엔티티만 준영속 상태로 전환 em.clear() -> 영속성 컨텍스트를 완전히 초기화. em.close() -> 영속성 컨텍스트를 종료.
플러시 영속성 컨텍스트의 변경내용을 데이터베이스에 반영. 1차캐시가 없어지진 않는다. 쓰기지연SQL이 flush 될 뿐. 영속성 컨텍스트를 비우지 않음. 영속성 컨텍스트의 변경내용을 DB에 동기화 플러시 순서 변경감지 수정된 엔티티를 쓰기 지연 SQL저장소에 등록 쓰기 지연 SQL 저장소의 쿼리를 DB에 전송 플러시하는 방법 em.flush() -> 직접호출 트랜잭션 커밋 -> 자동호출 JPQL -> 자동호출 #jpa
영속성 컨텍스트 EntityManagerFactory에서 고객의 요청이 있을 때 마다 EntityManager를 생성한다. 이렇게 생성된 EntityManager는 커넥션풀에서 커넥션을 가져와 사용한다. EntityManagerFactory는 어플리케이션 통틀어서 단 하나! EntityManager는 쓰레드간 공유하면 안된다. 영속성 컨텍스트 "엔티티를 영구 저장"하는 환경이라는 뜻. EntityManager.persist(entity) entity를 DB에 저장하는 것이 아니라, 영속성컨텍스트에 저장한다. 엔티티 매니저를 통해 영속성컨텍스트에 접근한다. 트랜잭션이 끝나면 영속컨텍스트 또한 종료된다. 엔티티의 생명주기 비영속(new / transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 ..