전체 글

좋은 영향력을 전파하기 위해 노력하는 엔지니어 리오입니다.
서론 데이터 베이스를 통해 데이터를 처리하고 관리하는데 SQL을 사용하였지만 데이터베이스에서 어떻게 SQL을 동작시키고 최적화시키는지 이해하고 쓰지 못하고 사용을 하면서 쿼리튜닝을 하는데 있어서 어려움을 겪었던 적이 있다. 이러한 삽질을 줄이고 쿼리의 성능을 개선해야될 때 쿼리의 동작을 이해하고 예상가능한 범위내에서 동작시키는 것이 중요하기 때문에 공부를 시작했다. SQL 옵티마이저 SQL 옵티마이저는 우리가 요청한 작업을 효율적으로 수행할 수 있도록 도와주는 DBMS의 핵심 엔진이다. 옵티마이저의 최적화 시키는 동작은 보통 아래와 같이 데이터 딕셔너리에 미리 수집해둔 오브젝트 및 시스템 통계 정보를 통해 예상비용을 산정하고 최저 비용이 드는 경로를 선택한다. 실행 계획과 비용 SQL 옵티마이저는 자동차..
· JAVA/JPA
보호되어 있는 글입니다.
· JAVA/JPA
보호되어 있는 글입니다.
· JAVA/JPA
복합키란? 복합 키(Composite Key)는 두 개 이상의 PK를 하나로 PK로 지정하는 것을 말한다. 이러한 복합키를 가지고 있는 논리 모델은 식별 관계와 비식별 관계로 구분되어 사용한다. 식별 관계 부모테이블의 기본키를 상속 받고 자식 테이블의 기본키 + 외래키의 구조로 사용되는 구조 입니다. 비식별 관계 비식별 관계는 부모 테이블의 기본키만 받아서 자식 테이블의 FK로 사용하는 것이 비식별 관계입니다. 이러한 관계는 FK가 Null이냐 아니냐에 따라서 필수적 비식별 관계와 선택적 비식별 관계로 구분되어집니다. JPA는 이러한 식별, 비식별 관계를 모두 제공합니다. JPA에서의 복합키 JPA에서는 아래와 같은 두개의 식별자를 사용하려면 오류가 발생하기 때문에 별도의 식별자 클래스를 만들어야합니다...
· JAVA/JPA
데이터 베이스에서 상속 관계 관계형 데이터베이스에서는 상속이라는 개념이 존재하지 않는다. 그래서 보통 슈퍼타입과 서브타입으로 분리시키는 방식으로 구현을 한다. 이러한 논리 모델을 구현하기 위해서는 세가지 방법이 존재하는데 각각 방법에 대한 장점과 단점을 알아보자 조인전략: 각각의 테이블로 변환 각각의 논리 모델을 모두 테이블로 만들고 부모테이블의 PK를 받아서 기본키와 외래키를 통해 사용하는 전략이다. 해당 방법을 사용할 때 주의할 점은 객체에서는 타입으로 구분할 수 있지만 데이터베이스에는 그런 개념이 없기 때문에 타입을 구분하는 전략을 사용해 주어야한다. Table 구조 Entity 구조 부모 클래스(Product) @Entity @Inheritance(strategy = InheritanceType...
· JAVA/JPA
JPA를 공부하다가 1:1 관계에서는 FetchType.LAZY 를 사용해도 지연 로딩이 되지 않고 바로 객체를 불러온다고 한다. 책에 있는 내용을 통해 해당 링크를 찾아봤지만 어떠한 원리로 일어나고 해결방법은 어떤 것이 있는지 알고 있어야 실무에 실제로 사용할 때 주의할 수 있을 것 같다. 발생 원인 class A { private Set bees; public Set getBees() { return bees; } public void setBees(Set bees) { this.bees = bees; } } class B { // Not important really } 보통 하이버네이트에서 프록시객체를 생성할 때 위와 같은 클래스 구조가 있고 하이버네이트가 Class A를 호출하게 되면 일단 초기..
ri5
리오의 개발일지