본문 바로가기

동시성3

스프링에서 제공하는 XXTemplate 은 무엇일까? (RestTemplate, JdbcTemplate, TransactionTemplate, HibernateTemplate, SqlSessionTemplate...) 인프런의 토비 스프링 강의 일부 내용을 좀더 딥다이브한 내용입니다.Template 이란 무엇일까? 템플릿이란 어떤 목적을 위해 미리 만들어둔 모양이 있는 틀. 고정된 틀 안에 바꿀 수 있는 부분을 넣어서 사용하도록 만들어진 오브젝트입니다. 우리가 아는 템플릿 메소드 패턴또한 템플릿을 사용합니다.템플릿 메소드 패턴이란?템플릿 메소드 패턴은 고정된 틀의 로직을 가진 템플릿 메소드를 슈퍼클래스에 두고, 바뀌는 부분을 서브클래스의 메소드에 두는 구조로 이뤄진다. 스프링에서 제공하는 `XXTemplate`은 특정 프로세스의 공통 부분을 재사용하면서, 세부적으로 다른 로직을 쉽게 확장할 수 있도록 지원하는 클래스입니다. 이 클래스는 Template 메서드 패턴을 활용하여 변경되는 부분과 고정된 부분을 분리해 줍니다.. 2024. 11. 8.
(수정)DB 에서 하는 동시성제어와 애플리케이션에서 하는 동시성 제어는 어떤게 다른걸까? 데이터베이스에서 하는 동시성 제어와 애플리케이션에서 하는 동시성 제어는 모두 동시성 문제를 해결하는 방법이지만,적용되는 레벨과 사용되는 기술에서 차이가 있다. 이 둘은 각각 다른 목적으로, 다른 상황에서 사용되며, 서로 보완적인 역할을 할 수 있다.1. 데이터베이스에서의 동시성 제어 데이터베이스에서의 동시성 제어는 트랜잭션 관리를 통해 여러 클라이언트가 동시에 동일한 데이터에 접근할 때 발생하는 데이터 무결성과 일관성을 보장하는 것을 목표로 한다. 그래서 자주 사용하는 것은 잠금(Locking), 격리 수준(Isolation Level) 등의 기술을 사용한다.트랜잭션 기반이라는 말은, 데이터베이스는 트랜잭션 단위로 동시성을 제어한다. 트랜잭션은 하나 이상의 쿼리가 실행되며, 트랜잭션이 완료될 때까지 데.. 2024. 10. 8.
동시성에 대해서 생각해보자. 하나의 자원에 여러 프로세스 또는 스레드가 사용하려고 할 때. 사용되는 영역을 임계영역이라 하고, 자원을 점유하기 위해 여러 동시성제어를 할 수 있는 도구를 사용한다. 그럼 여러 동시성제어를 할 수 있는 도구란 무엇을 말하는가? 개념적으로는 뮤텍스, 세마포어, 모니터 가 있을 것이고 실제 코드는 `java.util.concurrent` 패키지에 담겨있다. 그 외 실행자 프레임워크, 동기화 장치(synchronizer) 등이 존재합니다. Java에서는 실행자 프레임워크를 통해서 작업하길 권고하고 있다. [이펙티브 자바 Item81] 그 이유는 위에서 언급한 뮤텍스, 세마포어, 모니터를 조작하기 위해서 wait, notify와 같은 코드를 작성해 동시성을 제어해야 하는데, 이때 복잡성이 더 커지기 때문이다... 2021. 2. 9.