본문 바로가기 메뉴 바로가기

pyounani.blog

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

pyounani.blog

검색하기 폼
  • 분류 전체보기 (30)
    • JPA (17)
    • JAVA (0)
    • TIL (5)
    • Security (0)
    • Troubleshooting (8)
  • 방명록

전체 글 (30)
즉시 로딩과 지연 로딩

데이터베이스와 객체 관계형 매핑(ORM)에서 데이터 로딩 방식에는 두 가지 접근 방식이 있습니다. 바로 즉시로딩과 지연로딩입니다. 이번 글에서는 즉시 로딩과 지연 로딩이 어떤 차이점을 갖고 있는지 설명드리겠습니다.  설명드리기 전에 지연 로딩을 할 때 사용되는 프록시 개념부터 정리하고 설명드리겠습니다. 1.  프록시가 왜 필요하지?엔티티를 조회할 때 연관된 엔티티들이 항상 사용되는 것은 아닙니다. 아래 예시를 보겠습니다. // 회원과 팀 출력public void printUserAndTeam(String memberId) { Member member = em.find(Member.class, memberId); Team team = member.getTeam(); System.out.println("회원..

JPA 2024. 6. 8. 11:11
엔티티의 상태 - 준영속

이번 글에서는 엔티티의 준영속 상태에 대해 자세하게 알아보고자 합니다.  준영속은 영속성 컨텍스트에 저장되었다가 분리된 상태를 의미합니다. 영속 상태 엔티티를 준영속 상태 엔티티로 만드는 방법은 크게 3가지가 있다고 소개한 적이 있었습니다. // 엔티티 매니저 팩토리 및 엔티티 매니저 생성EntitymanagerFactory emf = Persistence.createEntityManagerFactory("jpabook");EntityManager em = emf.createEntityManager();// 1. 특정 엔티티만 준영속 상태로 전환em.detach(member);// 2. 영속성 컨텍스트를 초기화em.clear(member);// 3. 영속성 컨텍스트를 종료em.close(member);하..

JPA 2024. 6. 7. 18:26
플러시란?

1. 플러시란?앞선 글에서 엔티티를 CRUD를 하면서 그림에 flush가 많이 나온 것을 알 수 있습니다.   간단하게 정리를 했었는데 정리한 내용을 살펴보면  "트랜잭션을 커밋을 하면 flush가 자동으로 호출이 되는데 flush가 호출이 되는 순간 영속성 컨텍스트에 있는 내용들을 데이터베이스에 반영합니다." 좀 더 정확하게 말하면 플러시는 영속성 컨텍스트의 "변경 내용" 을 데이터베이스에 반영합니다. 영속성 컨텍스트에서는 이 "변경 사항"을 자동으로 데이터베이스에 반영을 해주는 변경 감지 기능이 있었습니다.  다시 한번 변경 감지의 과정을 정리해보도록 하겠습니다. 1. 변경 감지가 동작해서 영속성 컨텍스트에 있는 모든 엔티티와 스냅샷을 비교합니다. 2. 수정된 엔티티를 찾아, 수정 쿼리를 만들어 쓰기..

JPA 2024. 6. 7. 17:37
영속성 컨텍스트의 특징

엔티티를 CRUD를 해보면서 영속성 컨텍스트의 특징을 알아보도록 하겠습니다. 1. 영속성 컨텍스트의 특징🤔 영속성 컨텍스트에 여러 엔티티들이 들어올 텐데 영속성 컨텍스트는 여러 엔티티들을 어떻게 구별할까?식별자 값으로 구별을 합니다. 식별자 값은 @Id로 테이블의 기본 키와 매핑한 값을 의미합니다. 따라서 영속 상태의 엔티티는 반드시 식별자 값을 가지고 있어야 합니다.  엔티티 조회1. 엔티티를 영속//엔티티 생성(비영속)Member member = new Member();member.setId("member1");member.setUsername("회원1");// 엔티티를 영속em.persist(member);Member 객체를 생성한 후 persist()를 통해 엔티티를 영속 상태로 만들었습니다. ..

JPA 2024. 6. 7. 17:10
엔티티의 생명주기

JPA가 제공하는 기능은 크게 두 가지로 볼 수 있습니다. 앞선 글에서 설명드렸던 부분인 엔티티와 테이블을 매핑하는 설계 부분과 매핑한 엔티티를 실제 사용하는 부분입니다. 이번에는 매핑한 엔티티를 실제로 어떻게 사용하는지, 어떻게 작동하는지 자세하게 살펴보도록 하겠습니다.  우선 엔티티가 어떻게 작동하는지 알기 위해서는 몇 가지 용어를 살펴봐야 하는데 용어부터 정리해 보도록 하겠습니다. 1. 엔티티 매니저?  엔티티 매니저 팩토리?  영속성 컨텍스트?엔티티를 사용하기 위해서 JPA는 엔티티 매니저를 활용을 합니다. 엔티티 매니저는 엔티티를 저장하고, 수정하고, 삭제하고, 조회하는 등 엔티티와 관련된 모든 일들을 처리합니다.  이러한 엔티티 매니저를 만드는 공장이 있는데 이를 엔티티 매니저 팩토리라고 합니..

JPA 2024. 6. 7. 16:44
상속 관계 매핑 - @MappedSuperclass

앞서서 다양한 상속 관계의 전략들을 살펴봤습니다. 이번에는 객체 간 상속을 이용하지만 실제로는 Entity나 Table과 관계가 전혀 없을 경우를 살펴보도록 하겠습니다.  앞서서 봤던 슈퍼 타입 - 서브타입은 데이터베이스 테이블에도 상속 관계를  반영하기 위해 3가지 전략을 살펴봤습니다. 이번에는 부모 객체가 가진 속성을 상속하는 자식 클래스를 사용하는 것은 동일하지만 오직 공통된 매핑된 정보만 제공하는 방식입니다.  따라서 부모 클래스는 독립적인 테이블 매핑이 없으며 추상 클래스로 직접 인스턴스화를 하거나 검색은 불가합니다.  예시를 통해 자세하게 살펴보겠습니다. Member 클래스와 Seller 클래스가 있다고 가정해 보겠습니다. 객체에서는 공통 속성을 추상 객체로 이동시키고 자식 객체들이 해당 속성..

JPA 2024. 6. 6. 18:14
이전 1 2 3 4 5 다음
이전 다음
TAG
  • 연관관계
  • @Table
  • onetoone
  • 즉시 로딩
  • @TransactionalEventListener
  • 최적화
  • 영속성 컨텍스트
  • N + 1
  • @Cacheable
  • @joincolumn
  • 비영속
  • @OneToMany
  • 스키마 자동 생성
  • 준영속
  • 단일 테이블 전략
  • 1차 캐시
  • 비동기
  • 변경감지
  • @Entity
  • @GeneratedValue
  • 조인 전략
  • @MappedSuperclass
  • 엔티티 매니저
  • 메일
  • JPA
  • Redis
  • 인메모리 db
  • mappedBy
  • @Id
  • @ManyToOne
more
최근에 올라온 글
최근에 달린 댓글
링크

Blog is powered by Tistory / Designed by Tistory

티스토리툴바