일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Algorithm
- ROLLBACK
- DiscriminatorValue
- MappedSuperclass
- n+1문제
- 값타입
- 분할상환분석
- 플러시
- relational database
- 고아객체
- 페치조인
- fetch join
- Flush
- 영속성 컨텍스트
- 영속성전이
- 지연로딩
- 순수jpa
- Spring Data JPA
- relational DB
- DB
- JPA
- commit
- 엔티티 매핑
- Embeddable
- Amortized Analysis
- 관계형 데이터베이스
- Spring
- 정렬
- 즉시로딩
- DiscriminatorColumn
- Today
- Total
목록Programming (16)
Jun's note
프록시와 지연로딩이 서로 연관있기때문에 프록시, 지연로딩, 즉시로딩에 대해 정리해보겠다. 먼저 프록시가 나오게된 상황을 생각해보자. (상황) 예를 들어, Member와 Team이 서로 연관되어있다. Member를 조회할때 Team을 항상 조회해야할까? 이 둘을 같이 조회해야되면 같이 조회하면되지만, 그렇지 않을때도 있다. 필요하지도 않는데 항상 같이 조회하면 성능이 저하될 수도 있다. 이럴땐 어떻게 해야하나? (답은) 필요할때만 해당 엔티티를 조회하면 된다.(즉시로딩) (이 상황에 대해 더 쉽게 생각해보면, 게시물을 조회할때 댓글창을 클릭하지도 않았는데 댓글도 같이 조회되어야하는가? 성능문제와 관련있기 때문에 이 문제에 있어 생각해봐야한다) 즉시로딩에서 실제 엔티티안에는 프록시라는 가짜 엔티티가 있다! ..
1. 상속관계매핑 객체는 상속 관계 O, 관계형 데이터베이스는 상속 관계 X 이를 슈퍼타입 서브타입 관계라는 모델링 기법으로 해결 3가지 방법 1) 조인 전략 : 각각 테이블로 변환 (일반적인 방법, 각 테이블 연결) 2) 단일 테이블 전략 : 통합 테이블로 변환 (부모클래스 하나에 합치기) 3) 구현 클래스마다 테이블 전략 : 서브타입 테이블로 변환 (자식 클래스에 부모 속성이 들어있음) 2. 관련 어노테이션 @Inheritance(strategy=InheritanceType.XXX) JOINED: 조인 전략 SINGLE_TABLE: 단일 테이블 전략 TABLE_PER_CLASS: 구현 클래스마다 테이블 전략 @DiscriminatorColumn(name=“DTYPE”) @DiscriminatorVal..
1. 다대일 가장 많이 사용하는 연관관계 다대일의 반대는 일대다 다쪽이 외래키(columnjoin) 2. 일대다 일대다 단방향은 일대다(1:N)에서 일(1)이 연관관계의 주인 항상 다(N) 쪽에 외래 키가 있다. 객체와 테이블의 차이 때문에 반대편 테이블의 외래 키를 관리하 는 특이한 구조 단점 엔티티가 관리하는 외래 키가 다른 테이블에 있다. 연관관계 관리를 위해 추가로 UPDATE SQL 실행 일대다 단방향(양방향) 매핑보다는 다대일 양방향 매핑을 사용하자 3. 일대일 일대일 관계는 그 반대도 일대일 외래키를 두 테이블 중 하나로 고를 수 있다. 다대일(@ManyToOne) 단방향 매핑과 유사 다대일 양방향 매핑 처럼 외래 키가 있는 곳이 연관관계의 주인 (반대편은 mappedBy 적용) 외래키 설정..
1. 엔티티 매핑 소개 객체와 테이블 매핑: @Entity, @Table 필드와 컬럼 매핑: @Column (엔티티 속성) 기본 키 매핑: @Id (식별자) 연관관계 매핑: @ManyToOne,@JoinColumn 위 어노테이션을 적어야 JPA가 관리할 수 있다. 잊지말고 적기!! 위에서 말한 4가지 엔티티 매핑에 대해 정리해본다. 2. 객체와 테이블 매핑 @Entity JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 @Table 3. 필드와 컬럼 매핑 @Column @Enumerated EnumType.STRING 사용하기!!! (EnumType.ORDINAL를 사용하면, 정의된 숫자로 저장되기 때문에 나중에 데이터끼리 혼란을 줄 수 있음, 그리고 ORDINAL이 기본값이기 때문에 무조건..
JPA에서 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑하기 영속성 컨텍스트 1. 영속성 컨텍스트란? “엔티티를 영구 저장하는 환경”이라는 뜻 엔티티 매니저를 통해서 영속성 컨텍스트에 접근 EntityManager.persist(entity); (-> 이를 통해 영속상태가 됨) JPA 안에 존재 2. 영속성 컨텍스트 이점 1차 캐시 동일성(identity) 보장 트랜잭션을 지원하는 쓰기 지연 변경 감지(Dirty Checking) em.update() 는 없음. 대신 set메서드를 통해 값을 수정 스냅샷을 통해 값이 변경 되었는지 감지한다. (스냅샷에는 가장 처음 값이 저장됨) 스냅샷과 값이 다르면, 3번 과정인 update 쿼리를 쓰기 지연 SQL 저장소에 생성한다. 지연 로딩(Lazy Loadi..
JPA에 대해 자세히 알기전에 ORM, JDBC와의 관계를 정확히 알고 넘어가야 그 다음 내용도 이해하기 쉽다. 이전 포스팅에 JPA의 정의와 개념, ORM, JDBC에 대해 정리했다. 지금부터는 JPA에 대한 자세한 내용을 정리한다. 1. JPA 동작 과정 JPA는 애플리케이션과 JDBC 사이에서 동작 JPA가 DB에 값을 저장할때 JPA가 DB로부터 값을 조회할때 2. JPA 장점 1. SQL 중심적인 개발 -> '객체' 중심으로 개발 Java에서 객체 중심으로 개발하고 이를 DB에 객체 형태로 저장하고 싶은데, JPA를 사용하면 이 문제가 해결된다. 2. 생산성 CRUD가 간단하게 구현된다. 저장: jpa.persist(member) 조회: Member member = jpa.find(memberI..
JPA 강의를 듣다가, 관계형 데이터베이스에 대해 잠깐 언급된 적이 있다. 관계형 데이터베이스를 정확히 알아보고자 이 글을 쓰게 되었다. 관계형 테이터베이스란 무엇일까? 1. 관계형 데이터베이스(relational database) 테이블(table)로 이루어져 있으며, 이 테이블은 키(key)와 값(value)의 관계를 나타내는 데이터베이스이다. 현재 가장 많이 사용되고 있는 데이터베이스의 한 종류이다. 데이터의 종속성을 관계(relationship)로 표현하는 것이 관계형 데이터베이스의 특징이다. 2. 관계형 데이터베이스의 Relation 구조 릴레이션(relation): 데이터들을 표로 표현한 것 (=table, entity) 릴레이션은 스키마와 인스턴스로 구성된다. 스키마: 속성(attribute..
JPA (Java Persistence API) 자바 ORM 기술에 대한 표준 명세로, JAVA에서 제공하는 API이다. (순수 JPA를 의미) (객체를 DB에 매핑) 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다. ORM이기 때문에 자바 클래스와 DB테이블을 매핑한다. (sql을 매핑 x 즉 sql 직접 짜는것이 아님) ORM의 한 종류이다 (JAVA기반) 그럼 ORM은 무엇일까? ORM (Object-Relation Mapping, 객체-관계 매핑) Object - 매핑 - DB 데이터 객체를 디비에 자동으로 매핑해준다. (매서드로 데이트를 조작할 수 있고, 객체간 관계를 바탕으로 sql을 자동으로 생성함) 객체를 통해 간접적으로 디비 데이터를 다룬다. 종류: JPA..