dev/database 2

엔터프라이즈 ORM과 1차캐시

DB CRUD 작업을 쿼리없이 ORM을 처리하면 참 편리한데,여러 언어들과 다양한 ORM들의 차이를 이해하지 못하면, 난감한 상황이 발생하곤 한다.기본적인 ORM의 뜻대로, 객체와 매핑이 되는건 동일하지만동적 타입 언어들과 정적 타입 언어들은 확실히 다르다. 난감한 상황으로써, ORM의 1차캐시에 대해 알아보자. Java진영의 JPA를 예로 들면, Persistence Context (Enitity Manager) 에서 1차캐시를 관리한다.같은 객체를 한번만 조회하고, 이후에는 캐시에서 읽는 효율적인 쿼리동작을 가능하게 한다.1차캐시를 기반으로, CRUD가 즉시 실행되지 않는 형태가 많다. (장점이자 단점인 부분) 전제>> 1차 캐시는 "트랜잭션 범위 메모리 캐시"이다. DB와 동기화되기 전까지는 메모리..

dev/database 2026.02.24

MariaDB 트랜잭션 사용시 고려사항

트랜잭션 설계시, 주의, 고려 해봄직한 내용 Java기준, 멀티쓰레드 + 커넥션 풀 환경이라면, 단일 서버 + 단일 DB 환경일지라도, 동시성 제어가 필요한 환경이다. 데이터 유실, 업데이트 누락, Read -> Write 불일치 등등 반드시, 트랜잭션 + 잠금이 필요하다. START TRANSACTION을 해주더라도, 원자성을 보장해주다는 개념이지, 동시성 제어와는 무관하다. 위험한 방법 1START TRANSACTION;SELECT gold FROM player WHERE account_id=?; -- 그냥 읽기-- 애플리케이션에서 계산UPDATE player SET gold=? WHERE account_id=?;COMMIT;전형적인 “SELECT→비즈니스 계산→UPDATE”다른 트랜잭션이 중간에..

dev/database 2025.12.26