본문 바로가기

전체 글

(106)
[JPA] 낙관적 Lock, 비관적 Lock 개요 JPA에는 동시에 여러 사용자가 접근하여 데이터를 조작할 때 발생할 수 있는 문제를 다루기 위해 Lock을 지원하고 있습니다. 이 중에 낙관적 Lock(Optimistic Lock), 비관적 Lock(Pessimistic Lock)에 대해서 알아보려 합니다. 낙관적 Lock 낙관적이란 단어에서 알 수 있듯이 데이터 갱신 시 충돌이 발생하는 것을 막는 것이 아닌 충돌이 일어났을 때 처리하는 Lock입니다. @Entity class Book( @Id val bookId: String, val bookName: String, @Version val version: Int ) JPA에서는 위와 같이 Entity에 version 필드를 지정하여 사용합니다. version 값을 통해서 Entity의 변경사항을..
[Kafka] Kafka를 편하게 Kafkactl 명령어 Github https://github.com/deviceinsight/kafkactl GitHub - deviceinsight/kafkactl: Command Line Tool for managing Apache Kafka Command Line Tool for managing Apache Kafka. Contribute to deviceinsight/kafkactl development by creating an account on GitHub. github.com 설치 homebrew: # install tap repostory once brew tap deviceinsight/packages # install kafkactl brew install deviceinsight/packages/kafk..
[Java] Virtual Thread(가상 쓰레드) Virtual Thread 2023년 9월에 릴리즈 예정인 Java 21부터 제공되는 기능으로써 기존의 스레드 이외에 추가되는 경량 쓰레드입니다. 기존의 스레드 VS 가상 스레드 기존 스레드 OS (Operating System)이 관리하고 스케쥴링 한다. 즉, 기존 Java에서 스레드를 사용하는 것은 OS의 스레드를 사용하는 방식이다. OS 커널 스레드를 새로 생성하는 것은 비용이 크다. 그래서 스레드 풀 (Thread Pool)을 사용했었다. OS에서 context switch가 될 경우 시간이 오래 걸리기 때문에 non-blocking I/O 방식 혹은 비동기 방식으로 사용해야 조금 더 효율적으로 스레드를 사용할 수 있다. 가상 스레드 JVM에 의해 관리되고 스케쥴링 된다. 가상 머신에 의해 관리되..