본문 바로가기
반응형

[개발] 프레임워크39

낙관적 락과 비관적 락 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.
QueryDSL에 대해서 알아보자. QueryDSL란?자바 기반의 데이터베이스 질의 언어로, 타입 안전하고 직관적인 방식으로 작성할 수 있도록 지원하는 라이브러리 QType이란?QueryDSL이 제공하는 정적 타입 기반의 쿼리 작성 방식을 구현하기 위한 클래스QType은 보통 Q 접두사가 붙은 엔티티 클래스를 의미하며, 쿼리를 작성할 때 사용되는 타입 안전한 표현식 객체엔티티 클래스를 기반으로 필드와 메서드에 대한 메타 정보를 담고 있어, 쿼리 작성 시 컴파일 시점에 타입 검사 가능 주요 특징타입 안정성: 쿼리를 문자열로 작성하는 대신, 자바 코드로 작성하기 때문에 컴파일 시점에 타입 오류를 검증할 수 있습니다.동적 쿼리 지원: 조건에 따라 동적으로 쿼리를 생성할 수 있어 복잡한 검색 조건을 처리하기에 유용합니다.통합성: JPA뿐만 아니라.. 2024. 10. 20.
MyBatis useGeneratedKeys 조심히 사용하기 회사 코드 중에 알림톡을 발송하는 로직이 있었고 로직은 다음과 같이 구현이 되어 있었습니다.  비즈니스 로직을 수행알림톡 이벤트 발행알림톡 이벤트 소비알림톡 발송 이벤트를 발행할 때는 다음과 같이 비즈니스 로직에서 수행된 결과값 중 하나를 사용하고 있었습니다.이를 컬럼 'happyCallId' 라고 하겠습니다. 아래는 이벤트 발행에 사용되는 JSON 객체입니다.{ "happyCallId" : 1234567 [Long 타입] ...}  id의 값의 정상적인 범위는 2_000_000 ~ 2_500_000 범위 값이 되어야 합니다.하지만 간헐적으로 알림톡에 발행될 때 입력되는 id 값이 17_000_000 ~ 18_000_000  범위 값인 경우가 있었습니다. 여러가지 로그를 찍으며 의심되는 범위를 좁혀갔고 .. 2024. 10. 7.
반응형