본문 바로가기

정리/DB4

MyBatis FETCH SIZE에 대해 올해 DBMS를 ORACLE로 변경하면서 있었던 생소한 상황이 기억나 정리를 해보려고 합니다. 전환 후 모니터링을 하고 있던 상황이었고, 다행히 무사히 전환을 완료하나 했습니다. 하지만 그럴리가 없지... 특정 페이지의 로딩 속도가 너무 느리다는 제보를 받았고, 확인을 해보니 확실히 해당 페이지를 로딩하는 부분이 너무 느리다는 것을 알 수 있었습니다. 모니터링 툴을 통해 특정 쿼리 실행 응답이 너무 느린 증상이 있다는 것을 알게 되었는데, 그 부분에서만 10초가 넘는 시간이 걸리고 있었습니다. 문제는 툴에서 해당 쿼리를 조회해 보면 1초 이내로 조회가 가능 했었죠. 결과적으로 아래와 같이 Mybatis 해당 쿼리에 fetchSize를 높임으로서 해결했습니다. select * from Blog where .. 2022. 8. 17.
JPA(3) - 값타입 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 시결자로 지속해서 추적 가능 식별자 있음/생명주기관리/ 공유 값타입 단순히 값으로 사용하는 자바 기본타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적 불가 - 임베디드 타입 값타입을 여러 엔티티에서 공유하면 위험. 대신 값을 복사해서 사용. 값 타입은 불변 객체로 설계하는 것을 추천 생명주기를 엔티티의 의존 값 타입은 공유하면 안됨 값 타입 컬렉션에 변경 사항이 발생하면, 주인 엔티티와 연관된 모든 데이터를 삭제하고, 값 타입 컬렉션에있는 현재 값을 모두 다시 저장한다. 값 타입 컬렉션을 매핑하는 테이블은 몯느 컬럼을 묶어서 기본 키를 구성해야 함. 기본값 타입 - 자바 기본 타입(int, double) - 래퍼 클래스(Integer, Lo.. 2022. 4. 15.
JPA (2) - 기능 정리 개요 JPA 각종 어노테이션, 기능 정리 @Entity JPA한테 관리하라고 name : JPA에서 사용할 엔티티 이름을 지정 @Table 엔티티와 매핑할 테이블 지정 name : 매핑할 테이블 이름 - defalult 엔티티 이름을 사용 catalog : 데이터 베이스 catalog 매핑 schema : 데이터베이스 schema 매핑 uniqueConstratins : DDL 생성 시에 유니크 제약 조건 생성 @Column 컬럼 매핑 name : 필드와 매핑할 테이블의 컬럼 이름 - default 객체의 필드 이름 insertable, updatable : 등록, 변경 가능 여부 - default true nuallable/unique/columnDefinition/length/precision,sca.. 2022. 4. 11.
JPA (1) - JPA? ORM? 개요 JPA를 공부하면서 보게되는 이론적 영역 정리. ORM(Object-Relational Mapping)? 객체는 객체로 설계를 하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계하고 두가지를 매핑 한다는 의미 ORM 프레임워크로 JPA hibernate, iBatis/MyBatis JPA(Java Persistence API)? 자바 진영의 ORM 기술 표준 (사양) JPA는 객체 지향 도메인 모델과 관계형 데이터베이스 시스템 간의 다리 역할 JPA는 자체적으로 어떤 작업도 수행하지 않음(사양일 뿐) Hibernate, TopLink 및 iBatis와 같은 ORM 도구는 데이터 지속성을 위한 JPA 사양을 구현 ORM 도구에서 다른 도구로 애플리케이션을 전환하려는 경우 쉽게 수행 가능 java.. 2022. 3. 16.