일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ssafy
- 싸피
- 싸피10기
- 싸피11기
- 자바스크립트 자료구조
- 자바 코딩테스트
- 싸피 대전캠퍼스
- 싸피 11기
- 자료구조
- 싸피 12기
- swea
- 리액트
- 싸피셜
- 자바 알고리즘
- 자바스크립트
- 인프런
- 비동기
- 코드트리
- jpa
- 백준
- 코딩테스트 자바
- 싸피 10기
- 알고리즘
- 싸피 기자단
- 프로그래머스
- 코딩테스트
- 개발자
- SSAFYcial
- 프론트엔드
- 알고리즘 자바
- Today
- Total
목록분류 전체보기 (71)
병아리의 코딩 일기
전에도 말했듯이, JPA 에서 가장 중요하게 알아야 할 것은 영속성 컨텍스트, JPA의 내부 동작 방식에 대한 매커니즘적 측면과 객체와 데이터베이스를 어떻게 매핑해서 사용하는지에 대한 실제 설게적인 측면이다. 오늘은 설계적인 측면인 엔티티 매핑에 대해서 알아보자! 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑 : @ManyToOne, @JoinColumn 1. 객체와 테이블 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리하는 엔티티이다. 이게 붙지 않으면 그냥 내 마음대로 쓰고 싶은 클래스다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수! 기본 생성자 필수! (파라미터가 없는 public 또..
플러시란 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영하는 것을 말한다. DB 트랜젝션이 커밋될 때 플러시가 일어나는데 우리가 쌓아놨던 insert, delete, update 등의 쿼리들이 DB로 날라가는 것이다. 영속성 컨텍스트의 변경사항과 DB를 맞추는 작업이 flush이다. transaction 이 커밋되어 플러시가 발생하면 생기는 일 1. 변경 감지 2. 수정된 엔티티 쓰기 지연 SQL 저장소에 등록 3. 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송(등록, 수정, 삭제 쿼리) 영속성 컨텍스트를 플러시하는 방법 1. em.flush() - 직접 호출 2. 트랜잭션 커밋 - 플러시 자동 호출 3. JPQL 쿼리 실행 - 플러시 자동 호출 (그냥 그렇구나 하고 이해만 하기) 플러시는! 영..
저번 시간에는 영속성 컨텍스트란 무엇인지에 대해 알아보았다. 이번엔 '영속성 컨텍스트가 가진 이점'에 대해 알아보자! 1. 1차 캐시에서 조회한다. Member member = new Member(); member.setId("member1"); member.setName("회원1"); //1차 캐시에 저장됨 em.persist(member); //1차 캐시에서 조회 Member findMember = em.find(Member.class, "member1"); 멤버 객체를 만들고 영속성 컨텍스트에 담으면 @Id : "membrer1"를 Key , Entity : Member 를 값으로 하는 1차 캐시가 생성된다. 그래서 findMember를 할 때 1차 캐시에서 조회한다. 즉, 실행해보면 select ..
JPA에서 가장 중요한 2가지 1. 객체와 관계형 데이터베이스 매핑하기(ORM = Object Relational Mapping) 2. 영속성 컨텍스트 영속성 컨텍스트란? JPA를 이해하는데 가장 중요한 용어 "엔티티를 영구 저장하는 환경" EntityManager.persist(entity); -> 사실 db에 저장한다는 것이 아니라 엔티티를 영속성 컨텍스트라는 곳에 저장한다는 것! 엔티티 매니저? 영속성 컨텍스트? 영속성 컨텍스트는 논리적인 개념이다. 눈에 보이지 않는다. 엔티티 매니저를 통해 영속성 컨텍스트에 접근한다. EntityManager 를 실행하면 PersistenceContext 가 생성이 된다. 엔티티의 생명주기 엔티티는 생명주기가 4가지 있다. 비영속 : 최초에 entity를 생성한 ..
이번 시간에는 JPA 구동 방식에 대해 알아보자. 1. JPA는 Persistence 라는 클래스로부터 시작한다. 2. 여기서 META-INF/persistence.xml 에 우리가 설정한 설정 정보를 읽어서 3. EntityManagerFactory 라는 클래스를 만든다. 4. 이 공장에서 뭔가 필요할 때마다 EntityManager 라는 걸 찍어내서 돌리면 된다. 위의 내용을 코드로 확인해보자. 주의!! 1. 엔티티 매니저 팩토리는 하나만 생성해서 애플리케이션 전체에서 공유된다. 2. 엔티티 매니저는 쓰레드 간에 공유하지 않는다. (사용하고 버려야 한다.) 3. JPA의 모든 데이터 변경은 트랜잭션 안에서 실행해야 한다. (매우 중요!)