개발자의 삶/JPA

개발자의 삶/JPA

[JPA] Proxy, Lazy & Eager Loading, Cascade, Orphan

## Proxy 프록시 em.find() // DB를 통해 실제 엔티티 객체 조회 em.getReference() // DB 조회를 미루는 가짜(프록시) 엔티티 객체 조회 - 프록시 객체를 초기화 할 때 프록시 객체가 실제 엔티티로 바뀌는 것이 아니라 초기화되면 프록시 객체를 통해서 실제 엔티티에 접근 가능. - 프록시 객체는 처음 사용할 때 한 번만 초기화. - 프록시 ≠ 엔티티. - instanceOf 사용. (객체와 비교) - 프록시 객체는 원본 엔티티를 상속받음 - 영속성 컨텍스트에 이미 엔티티가 존재하면 프록시를 따로 반환하지 않음 (getRefer 해도 프록시가 아닌 엔티티 반환) - 프록시 먼저 호출하고, 엔티티를 호출하면 엔티티도 프록시를 반환함 - 영속성 컨텍스트를 날리면( em.deta..

개발자의 삶/JPA

[JPA] Persistence Context, Relationship Mapping, Inheritance Mapping, MappedSupperClass

- Persistence Context 영속성 컨텍스트 - 1차 캐시 EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try{ Member member = new Member(); member.setId(1); // 멤버 클래스 내 id가 1 em.find(Member.class, member); // 조회 쿼리 날림 em.find(Member.class, member); // 조회 쿼리 날리지 않음 // persistence contex..

개발자의 삶/JPA

[JPA] Entity Mapping

** Transaction 안에서 하는 것이 중요 EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); //do something tx.commit(); em.close(); emf.close(); @Entity //@Table(name = "mbr") // Member 객체를 mbr 테이블에 매핑 public class Member { @Id // primary key // 값 직접 할당 //@GeneratedValue // 값 자동 할당 p..

개발자의 삶/JPA

[JPA] JPA vs hibernate vs Spring Data JPA

JPA ? - Java Persistence API - 자바 진영의 ORM 기술 표준 - 기술명세 ORM ? - Object-Relation Mapping - 객체는 객체대로, DB는 DB대로 - SQL Mapper 로 직접 query를 만들어 DB조회 > mybatis - 객체와 DB의 데이터를 매핑해서 query 자동 생성 > JPA Hibernate ? - JPA의 구현체 - DataNucleus, EclipseLink 등 다른 구현체도 존재. Spring Data JPA ? - JPA를 쉽게 사용하기 위해 스프링에서 제공하는 프레임워크 아래는 유명한 개념도 1. Application 2.1 JPA (Raw JPA 사용) 2.2 Spring Data JPA (Repository 사용) > JPA 3..

개발자의 삶/JPA

[JPA] study note

개발자로 일하면서 거의 대부분의 프로젝트는 mybtis를 사용하여 개발했다 JPA는 겉 핥기식으로 토이프로젝트 정도만 진행해보았다 최근 이직 준비를 하면서 JPA를 사용,요구하는 회사가 많아졌다는걸 깨달았다. 물론 현재 회사에서도 JPA를 사용하진 않는다 JPA를 사용해보지 않았기에, 아무래도 이직 준비할때 JPA를 사용하는 회사들은 선택권에서 제외됐다. (사실 JPA를 사용하는 곳도 지원은 해봤지만 면접에서 JPA에 대한 이해도가 높지 않아 좋은 결과를 맺긴 힘들었다.) 더 효율적인 개발을 위해 단단한 내 자신을 만들기 위해 그렇게 JPA 공부의 서막이 올랐다. 내돈내산으로 김영한님의 JPA 강의를 인프런에서 듣기 시작했고 구글링으로 많은 대단한 개발자분들의 도움을 받을 예정이다. 제대로된 정리 글을 ..

Kedric
'개발자의 삶/JPA' 카테고리의 글 목록