일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바
- react
- Proxy
- Algorithm
- Kafka
- Spring
- mongoDB
- C
- redis
- design pattern
- OS
- JPA
- 컴퓨터구조
- Data Structure
- 알고리즘
- Heap
- c언어
- Java
- spring webflux
- 네트워크
- 파이썬
- IT
- 운영체제
- JavaScript
- MSA
- MySQL
- Galera Cluster
- 디자인 패턴
- 자료구조
- 백준
- Today
- Total
목록분류 전체보기 (214)
시냅스
Redis in-memory 데이터 자료구조 저장소 아래와 같이 쓰일 수 있다. Database Cache Message broker Streaming engine Redis가 지원하는 자료구조 String Hash List Set Sorted Set Bitmap Hyperloglog Geospatial Indexe Stream atomic 한 연산을 지원한다. Redis Model Transactions Pub/Sub Lua scripting Keys with a limited time-to-live LRU eviction of keys Automatic failover 특징 Key-Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템이다. RA..
Spring Security가 framework로 하는 일 ServletContext 내부로 가지 않고 Filter 수준에서 보안을 설정한다. 어플리케이션의 모든 상호작용에 사용자 인증 요구 디폴트 로그인 폼 생성 user 라는 이름과 콘솔에 출력한 비밀번호를 사용한 폼 기반 인증 지원 BCrypt로 저장할 비밀번호 보호 사용자 로그아웃 지원 CSRF 공격 방어 Session Fixation 방어 보안 헤더 통합 HTTP Strict Transport Security로 요청을 보호 X-Content-Type-Options 통합 Cache Control (어플리케이션에서 특정 스태틱 리소스에 캐시를 허용하도록 재정의할 수 있다.) X-XSS-Protection 통합 X-Frame-Options 통합으로 클..
경로 표현식 .(점) 을 찍어 객체 그래프를 탐색하는 것 select m.username // 상태 필드 from Member m join m.team t // 단일 값 연관 필드 join m.orders o // 컬렉션 값 연관 필드 where t.name = '팀A' 상태 필드 state field 단순히 값을 저장하기 위한 필드 연관 필드 association field 연관관계를 위한 필드 단일 값 연관 필드 @ManyToOne, @OneToOne 대상이 엔티티 묵시적 내부 조인 발생, 탐색이 가능하다. select m.team from member m 에서 m.team.name으로 갈 수 있음 컬렉션 값 연관 필드 @OneToMany, @ManyToMany 대상이 컬렉션 명시적 조인 join 키..
JPA의 데이터 타입 분류 엔티티 타입 @Entity 로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 값 타입 int, integer string 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적 불가 기본값타입 자바 기본 타입 (int, double) 래퍼 클래스 (Integer, Long) String 생명주기를 엔티티에 의존 값 타입은 공유해서는 안된다. 회원 이름 변경시 다른 회원의 이름도 함께 변경되면 안됨 int, double 같은 기본 타입(Primitive type) 은 절대 공유해선 안된다. 기본 타입은 항상 값을 복사함 (깊은 복사) Integer 같은 래퍼 클래스나 String 같은 특수한 클래스는 공유 가능한 객체이지만 변경..
즉시 로딩과 지연 로딩 즉시로딩은 엔티티를 로딩하면서 관련된 모든 엔티티를 함께 로딩 하는것 지연로딩은 필요한 시점에 가져오는 것을 말한다. 가급적 지연 로딩만 사용해야 한다. 즉시 로딩을 적용하면 JPQL에서 N + 1 문제를 일으킨다. 만약 Member가 외래키를 갖고 있는 주인이고, Member가 3개에 각 Member의 소속된 팀이 전부 다르다면 쿼리는 4번이 실행된다 (member, team1, team2, team3) 이런 문제는 N(team) + 1(member)이라고 한다. @ManyToOne, @OneToOne은 기본이 즉시 로딩으로 반드시 LAZY로 설정해야 한다. 영속성 전이 : CASCADE 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들 수 이싿. 종류 ..
프록시 em.find() 데이터베이스를 통해서 실제 엔티티 객체 조회 em.getReference() 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 데이터베이스에 조회가 필요할 때 필요한 시점에 조회한다. 데이터베이스에 쿼리가 실행이 되지 않았음에도 조회가 되는 것 프록시는 실제 클래스를 상속 받아 만들어져 겉 모양이 같다. 클라이언트는 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 됨 프록시 객체는 처음 사용할 때 한 번만 초기화한다. 프록시 객체를 초기화 할 때 프록시 객체가 실제 엔티티로 바뀌는 것은 아니고, 초기화 되면 프록시 객체를 통해서 실제 엔티티에 접근 가능하다. 프록시 객체는 원본 엔티티를 상속 받는다, 따라서 타입 체크시 주의해야함 프록시 내부에는 실제 객체의 참조를..
MappedSuperclass 상속관계 매핑과는 관련이 없다. 엔티티, 테이블과 매핑할 수 없다. 부모 클래스를 상속 받는 자식 클래스에 매핑 정보만 제공한다. 테이블과 관계 없고 단순히 엔티티가 공통으로 사용하는 매핑 정보를 모으는 역할 조회, 검색 불가. (em.find(BaseEntity) 불가) 직접 생성해서 사용할 일이 없으므로 추상 클래스를 권장한다. 주로 등록일 수정일 등록자 수정자 등 전체 엔티티에서 공통으로 적용하는 정보를 모을 때 사용한다. 참고로 @Entity 클래스는 엔티티나 @MappedSuperclass로 지정한 클래스만 상속 가능하다. @MappedSuperclass public abstract class BaseEntity { private String createdBy; p..
상속관계 매핑 관계형 데이터베이스는 상속 관계가 없다. 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다. 상속관계 매핑 : 객체의 상속과 구조와 DB의 슈터파입 서브타입 관계를 매핑 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 조인전략 각각 테이블로 변환 장점 테이블 정규화 외래 키 참조 무결성 제약조건 활용 가능 저장공간 효율화 단점 조회시 조인을 많이 사용, 성능 저하 조회 쿼리가 복잡함 데이터 저장시 Insert sql 2번 호출 단일 테이블 전략 통합 테이블로 변환 장점 조인이 필요 없으므로 일반적으로 조회 성능이 빠름 조회 쿼리가 단순함 단점 자식 엔티티가 매핑한 컬럼은 모두 Null 허용 단일 테이블에 모든 것을 저장하므로 테이블이 커질 수 있음, 상황에 따라 ..
JPA 연관관계 다중성 다대일 @ManyToOne 속성 optional : false 로 설정하면 연관된 엔티티가 항상 있어야 한다. fetch : 글로벌 페치 전략 (FetchType.Lazy) cascade : 영속성 전이 targetEntity : 연관된 엔티티의 타입 정보를 저장한다. 거으 ㅣ사용하지 않는다. @JoinColumn 속성 name : 매핑할 외래 키 이름 referencedColumnName : 외래키가 참조하는 대상 테이블으 ㅣ컬럼명 foreignKey(DDL) : 외래 키 제약조건 직접 지정 unique nallable, insertable updatable columnDefinition table 일대다 @OneToMany 속성 mappedBy : 연관관계의 주인 필드를 선택한..
엔티티 매핑 객체와 테이블 매핑 @Entity JPA가 관리하는 클래스 테이블과 매핑할 클래스 기본 생성자(public, protected)를 필수로 생성해야 한다. @Table 속성 name JPA에서 사용할 엔티티 이름을 지정한다. 기본값 : 클래스의 이름을 그대로 사용한다. 같은 클래스 이름이 없으면 가급적 기본값을 사용한다. catalog 데이터베이스 catalog 매핑 schema 데이터베이스 schema 매핑 uniqueConstraints DDL 생성 시에 유니크 제약 조건 생성 필드와 컬럼 매핑 @Column 컬럼 매핑 속성 name 필드와 매핑할 테이블의 컬럼 이름 insertable, updatable 등록, 변경 가능 여부 nullable(DDL) null 값의 허용 여부 unique..