일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 엔티티 매핑
- 플러시
- n+1문제
- MappedSuperclass
- Spring Data JPA
- 영속성전이
- 즉시로딩
- 순수jpa
- 지연로딩
- Spring
- DiscriminatorColumn
- fetch join
- relational database
- Embeddable
- Flush
- 고아객체
- ROLLBACK
- 영속성 컨텍스트
- commit
- Algorithm
- 페치조인
- 분할상환분석
- JPA
- 정렬
- DiscriminatorValue
- 관계형 데이터베이스
- DB
- Amortized Analysis
- relational DB
- 값타입
- Today
- Total
목록분류 전체보기 (27)
Jun's note
1. resource (리소스, 자원) 리소스는 정적파일과 동적컨텐츠와 같은 웹에 콘텐츠를 제공하는 모든 것들을 말합니다. 웹 리소스는 웹서버에서 관리, 제공합니다. 정적파일은 텍스트 파일, HTML 파일, 마이크로소프트 워드 파일, 어도비 아크로뱃 파일, JPEG 이미지 파일, AVI 동영상 파일 등을 말합니다. 동적파일은 주식 거래, 부동산 데이터베이스 검색 등이 있습니다. 2. URI (Uniform Resource Identifier) '인터넷 자원을 나타내는 고유 식별자'이다. 쉽게 말하면, Identifier가 의미하는 것은 인터넷에 있는 자료의 ID라고 볼 수 있다. 때문에 다른 자료와 같은 이름을 가지고 있으면 안되기 때문에 URI는 유일하다. Uniform: 리소스 식별하는 통일된 방식 ..
1. TCP (1) 특징 연결지향: 받는사람이 컴퓨터가 켜져있는지(연결할 수 있는 상태인지 확인) (ex. 연결할 수 있는 상태일때 보내자) (먼저 연결한 다음에 메시지를 보낸다) 데이터 전달 보증: 내가 메시지를 보냈는데, 받는사람이 못받음-> 패킷이 누락된것을 알 수 있음 순서보장: 내가보낸 메시지 순서대로 받을수있도록 보장(만약 중간에 순서가 바뀌면 서로 서버가 알아서 다시 보내도록함) 신뢰할 수 있는 프로토콜 (2) TCP 3 way handshake 3번 ACK 서로 보냄 (1번, 너 연결 되어있니?. 2번 나 연결되어있다. 3번 둘다 알겠다) 요즘 최적화돼서 3번 ACK보낼때 데이터도 같이 전송함 (최적화) (3) TCP 장단점 장점: TCP는 신뢰할 수 있는 프로토콜 단점: 데이터 전달 보증..
1. 트랜잭션의 개념 "쪼개질 수 없는 업무처리의 단위"를 의미하며, db에서는 "데이터베이스가 수행하는 작업의 단위"를 의미한다. 2. 트랜잭션 예시 ex1) ATM으로 계좌이체를 할 경우, 1. A 은행에서 돈을 출금하여 B 은행에 송금하려고 한다. 2. 송금 중 오류가 생겨, B 은행에 돈이 송금되지 않았는데 A은행에서는 돈이 빠져나갔다. 이와 같은 상황을 막기 위해서는 1,2번 과정이 하나의 작업으로 이뤄져있어야한다. 1번 과정에서 에러가 발생하는 경우 지금까지 했던 과정을 다 취소하고 처음 상태로 복구해야한다. (이 과정은 Rollback이다) ex2) 게시판에 글을 업로드하고 내가 쓴 글을 게시판에서 확인한다. (db측면에서) 이는 질의어(select, insert, delete 등)를 통해 ..
페치 조인(fetch join)이란 JPQL에서 성능 최적화를 위해 제공하는 기능이어서 SQL의 조인 종류와는 다르다. 먼저 페치 조인에 대해 알아보기전에, JPQL과 SQL에 대해 간단히 정리해본다. - JPQL: 엔티티를 대상으로 검색하는 객체지향쿼리 (어차피 JPQL식으로 코드 짜서 나중에 SQL로 자동 변환됨) 장점 -> 특정 데이터베이스 SQL에 의존 X - SQL: 테이블을 대상으로 - QueryDSL사용시 주의사항: 수동 flush해주기 (왜? 영속성 디비에 저장된것을 커밋을 통해 실제 디비에 옮겨주는데, 커밋이 뒤에 나오니깐 결과가 0이어서 제대로 결과값이 나오지 않음-> 그러니 em.flush() 수동으로 해주기) - 동적쿼리!!! , 자바 코드로 쿼리를 짜기때문에 SQL로 오류난 것을 ..
JPA를 사용할 때 변수값을 3가지 타입으로 정의할 수 있다. 1. 기본값 타입 2. 임베디드 타입 (복합 값 타입) (예, 좌표 x,y를 하나의 값으로 함께 사용) 3. 컬렉션 값 타입 (기본값 타입과 임베디드 복합해서 사용?) 1. 기본값 타입 기본타입 vs 객체타입 int, double - 변수를 공유하지 않음 (값 변경 x) (메모리에 각각의 주소에 할당됨) (값을 전달,복사하는 것) Integer, Long(클래스) - 변수를 공유 o (왜? 레퍼런스를 참조하기 때문, 주소를 연결시켜주기 때문에 다른 변수여도 저장소는 같은곳) (참조를 전달) 2. 임베디드 타입 연관되어있는 값끼리 묶어 하나의 클래스로 해결 (엔티티 X) 쉽게 말하면, 1. "회원 엔티티는 이름, 근무 시작일, 근무 종료일, 주..
먼저 영속성 전이에 대해 정리할것이다. 영속성 전이는 프록시나 지연로딩과 관련 없는 내용이다. (연관관계랑 관련 x) 이 점을 주의해야한다! 1. 영속성 전이(CASCADE) 부모 엔티티를 저장할때 자식 엔티티도 저장되도록 (부모를 기준으로 개발) 목적 : 개발의 편리함 때문 부모와 자식은 상속관계는 x 예를 들어, Member엔티티안에 Team도 있다면, Member객체를 저장할때 Team도 자동 저장되도록 엔티티를 영속화할 때 연관된 엔티티도 함께 영속화하는 편리함을 제공 (주의!!!) 사용 방법: cascade 사용 @OneToMany(mappedBy="parent", cascade=CascadeType.ALL) 주의사항 부모랑 자식의 라이프스타일이 비슷할 경우에 사용(둘다 수정한다던지, 둘다 삭제..
프록시와 지연로딩이 서로 연관있기때문에 프록시, 지연로딩, 즉시로딩에 대해 정리해보겠다. 먼저 프록시가 나오게된 상황을 생각해보자. (상황) 예를 들어, 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..