본문 바로가기

데이터베이스4

스프링에서 제공하는 XXTemplate 은 무엇일까? (RestTemplate, JdbcTemplate, TransactionTemplate, HibernateTemplate, SqlSessionTemplate...) 인프런의 토비 스프링 강의 일부 내용을 좀더 딥다이브한 내용입니다.Template 이란 무엇일까? 템플릿이란 어떤 목적을 위해 미리 만들어둔 모양이 있는 틀. 고정된 틀 안에 바꿀 수 있는 부분을 넣어서 사용하도록 만들어진 오브젝트입니다. 우리가 아는 템플릿 메소드 패턴또한 템플릿을 사용합니다.템플릿 메소드 패턴이란?템플릿 메소드 패턴은 고정된 틀의 로직을 가진 템플릿 메소드를 슈퍼클래스에 두고, 바뀌는 부분을 서브클래스의 메소드에 두는 구조로 이뤄진다. 스프링에서 제공하는 `XXTemplate`은 특정 프로세스의 공통 부분을 재사용하면서, 세부적으로 다른 로직을 쉽게 확장할 수 있도록 지원하는 클래스입니다. 이 클래스는 Template 메서드 패턴을 활용하여 변경되는 부분과 고정된 부분을 분리해 줍니다.. 2024. 11. 8.
(수정)DB 에서 하는 동시성제어와 애플리케이션에서 하는 동시성 제어는 어떤게 다른걸까? 데이터베이스에서 하는 동시성 제어와 애플리케이션에서 하는 동시성 제어는 모두 동시성 문제를 해결하는 방법이지만,적용되는 레벨과 사용되는 기술에서 차이가 있다. 이 둘은 각각 다른 목적으로, 다른 상황에서 사용되며, 서로 보완적인 역할을 할 수 있다.1. 데이터베이스에서의 동시성 제어 데이터베이스에서의 동시성 제어는 트랜잭션 관리를 통해 여러 클라이언트가 동시에 동일한 데이터에 접근할 때 발생하는 데이터 무결성과 일관성을 보장하는 것을 목표로 한다. 그래서 자주 사용하는 것은 잠금(Locking), 격리 수준(Isolation Level) 등의 기술을 사용한다.트랜잭션 기반이라는 말은, 데이터베이스는 트랜잭션 단위로 동시성을 제어한다. 트랜잭션은 하나 이상의 쿼리가 실행되며, 트랜잭션이 완료될 때까지 데.. 2024. 10. 8.
비관적 잠금, 낙관적 잠금 그런 동시성 이슈 해결하기 우리가 개발하는 프로덕트에 동시성 이슈는 어떤 것이 있을까? 사실은 그다지 많지 않을 수 있을 것 같다. 특히, 트래픽은 적은 회사에서는 더욱 그러지 않을까 싶다. 그래서 언제든 맞닥뜨리더라도 당황하지 않았으면 좋겠다. 먼저 동시성 이슈가 무엇인지부터 살펴보자. 하나의 Table Row 을 Client 1과 Client 2가 서로 업데이트를 하려고 하다보니, 동시성 이슈가 발생한다. 좀 더 구체적으로 어떤 상황에서 동시성 이슈가 발생하는가? 참고 할 만한 예시 테스트 코드는 다음과 같다. https://github.com/take-small-steps/understanding-concurrency-Issue/blob/9eea5414c1a35ec09484f2281e51e1b18380dd93/src/test.. 2023. 1. 11.
Hibernate, JPA, Querydsl는 과연 좋은 도구일까? Photo by Annie Spratt on Unsplash 오늘도 여전히 사이드프로젝트를 진행하며 함께 하는 형님과의 대화에서 또다른 깨달음을 얻었습니다. 들어가기 최근 회사에서 시간이 남아, Querydsl 을 사내서비스에 적용하는 방안을 고려하기 위해서 학습하던 중, 나왔던 이야기입니다. Querydsl, SwaggerCodegen, ProtocalBuffer 등의 도구들은 이전에 가졌던 문제를 제 3의 관점으로 넘겨, 개발자는 비지니스 로직에만 집중 할 수 있게 해준다는 관점에서 좋은 도구라는 이야기를 남겼었습니다. 그러나, 이전에 지인과 식사를 하면서 가볍게 Querydsl과 Jpa 의 단점을 이야기 하면서 나눴던 부분에 대해서 내용을 남겨두면 좋겠다 싶어 이렇게 포스팅하게 되었습니다. 우리가 .. 2020. 10. 16.