본문 바로가기

개발공부/DATABASE

(5)
[DynamoDB] DyanamoDB의 기본 개념 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 다이나모 개념에 대해서 다시 복습하고자 정리하려고 합니다. DynamoDB란? NoSQL(Not Only SQL) 데이터베이스 매우 빠른 쿼리 속도 Auto-Scaling 기능 탑재 (중요한 특징입니다. 처음 데이터베이스를 만들면 크기가 정해지는데, Auto-Scaling의 경우는 데이터 크기 초과/축소 될 때 테이블이 알아서 늘어나고 줄어듭니다. 이는 비용에 대한 이점이 있습니다.) key-value 데이터 모델 지원 테이블 생성시 스키마 생성 필요 없음 (실시간으로 들어오는 데이터를 보관하는데 탁월합니다.) 모바일, 웹, loT데이터 사용시 추천 SSD 스토리지 사용..
[JPA] 임베디드 타입이란? 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 임베디드 타입을 다시 복습하고자 정리했습니다. 임베디드 타입(Embedded Type)이란? 복합 값 타입을 의미합니다. 새로운 값 타입을 직접 정의할 수 있습니다. JPA는 임베디드 타입(embedded type)이라고 불려집니다. 주로 기본 값 타입을 모아서 만들어서 복합 값 타입이라고도 하며, int, String과 같은 값 타입을 의미합니다. 💡 JPA의 데이터 타입 분류 엔티티 타입 @Entity로 정의하는 객체입니다. 데이터가 변해도 식별자로 지속해서 추적 가능합니다. 예)회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 int, Intege..
[JPA] 프록시와 지연로딩/즉시로딩의 관계 💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요. 안녕하세요! 키크니 개발자 입니다. 🦒 Team과 Member가 1 : N 으로 매핑된다고 가정합니다. 이 때 Member를 조회할 때 Team도 함께 조회해야 할까요? 이는 비즈니스 상황에 따라 다르게 해야합니다. 비즈니스 로직에서 Team을 필요로 하지 않을 때에는 꼭 Member를 조회할 때 Team까지 조회할필요가 없습니다. 왜냐하면 성능저하(낭비)가 발생할 수 있기 때문입니다. JPA는 이러한 낭비를 하지 않기 위해 지연로딩과 프록시라는 개념으로 해결합니다. 프록시(Proxy)란? 간단하게 말해서 가짜 객체를 의미합니다. EntityManager에는 em.find()와 em.getReference()..
[JPA] 상속관계 매핑 (조인 전략, 단일테이블 전략, 구현클래스마다 테이블 전략) 안녕하세요! 키크니 개발자 입니다. 🦒 오늘은 상속관계 매핑에 대해서 알게 되어서 정리해보았습니다. 항상 JPA는 @ManyToOne, @OneToMany으로 연관관계만 알고있었는데 상속관계에 대해서도 매핑을 할 수 있다는 점을 처음알게되었습니다. 상속관계에서의 매핑은? - 관계형 데이터베이스는 상속 관계가 없습니다. - 슈퍼타입, 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다고 볼 수 있습니다. - 상속관계 매핑은 객체의 상속과 구조와 DB의 슈퍼타입, 서브타입 관계를 매핑합니다. - 크게는 조인 전략, 단일테이블 전략, 구현클래스마다 테이블 전략으로 볼 수 있습니다. 슈퍼타입, 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 - 각각 테이블로 변환 -> 조인 전략 - 통합 테이블로 변환 ..
[JPA] 영속성 컨텍스트란? 그리고 영속성 관리 안녕하세요! 키크니 개발자 입니다. 🦒 인프런 김영한님 강의를 보면서 정리하는 글입니다. 1. 영속성 컨텍스트란? JPA를 이해하는데 가장 중요한 용어이며, 엔티티를 영구 저장하는 환경이라는 뜻을 가지고 있습니다. DB에 저장을 한다는 것이 아니라 영속성 컨텍스트를 통해서 엔티티를 영속화 한다는 뜻입니다. 영속화란? 영속성 컨텍스트에 관리되는 상태로 만드는 것을 말합니다. EntityManager.persist(entity); 영속성 컨텍스트는 엔티티 매니저를 통해서 접근합니다. 2. 엔티티의 생명주기 - 비영속(new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태를 의미합니다. 객체를 생성한 상태로 볼 수 있습니다. Member member = new Member(); member..