본문 바로가기
반응형

[개발] 프레임워크49

MyBatis에서 조회 쿼리 결과 resultMap 확장하는 방법 기존에 사용되고 있는 resultMap을 확장하여 새로운 resultMap을 정의하는 것이 필요했습니다.  extends 키워드를 사용하면 확장할 수 있습니다.  다음은 예시 코드입니다. 2024. 11. 13.
JPA 1차 캐시와 2차 캐시 네트워크를 통해 데이터베이스에 접근하는 시간 비용은 애플리케이션 서버에서 내부 메모리에 접근하는 시간 비용보다 수만에서 수십만배 이상 비쌉니다. 따라서 조회한 데이터를 메모리에 캐시해서 데이터베이스 접근 횟수를 줄이면 애플리케이션 성능을 획기적으로 개선할 수 있습니다.  영속성 컨텍스트 내부에서 엔티티를 보관하는 저장소가 있는데 이것을 1차 캐시라고 합니다.일반적인 웹 애플리케이션 환경은 트랜잭션을 시작하고 종료할 때까지만 1차 캐시가 유효합니다. 하이버네이트를 포함한 대부분의 JPA 구현체들은 애플리케이션 범위의 캐시를 지원하는데 이것을 공유 캐시 또는 2차 캐시라 합니다.       1차 캐시1차 캐시는 영속성 컨텍스트 내부에 있으며 엔티티 매니저로 조회하거나 변경하는 모든 엔티티는 1차 캐시에 저장.. 2024. 11. 12.
낙관적 락과 비관적 락 JPA 영속성 컨텍스트 ( 1차 캐시 ) 를 적절히 활용하면 데이터베이스 트랜잭션이 Read Committed 격리 수준이어도 애플리케이션 레벨에서 반복 가능한 읽기 REPEATABLE READ가 가능합니다. 물론 엔티티가 아닌 스칼라 값을 직접 조회하면 영속성 컨텍스트의 관리를 받지 못하므로 반복 가능한 읽기를 할 수 없습니다. JPA는 데이터베이스 트랜잭션 격리 수준을 READ COMMITTED 정도로 가정한다. 만약 일부 로직에 더 높은 격리 수준이 필요하면 낙관적 락과 비관적 락 중에 하나를 사용하면 됩니다. 스칼라 타입숫자, 문자, 날짜와 같은 기본 데이터 타입     낙관적 락  낙관적 락트랜잭션 대부분은 충돌이 발생하지 않는다고 낙관적으로 가정하는 방법데이터베이스가 제공하는 락 기능을 사용하.. 2024. 11. 3.
build.gradle 파일 문법에 대해서 알아보자. 플러그인 설정Gradle은 다양한 기능을 제공하는 플러그인을 사용할 수 있습니다.plugins { id 'java' // Java 플러그인 적용}  프로젝트 속성 설정group, version, sourceCompatibility 등 프로젝트의 기본 속성을 설정할 수 있습니다.group = 'com.example' // 프로젝트 그룹 IDversion = '1.0.0' // 프로젝트 버전sourceCompatibility = '17' // 사용될 Java 버전 (Java 17)  의존성 관리프로젝트에서 사용되는 라이브러리와 의존성을 선언하는 부분입니다.dependencies 블록을 사용해 의존성을 추가합니다.depedencies { implementation 'org.springframework... 2024. 10. 22.
반응형