전체 글
-
JDBC 살펴보기Backend/학습내용 정리 2024. 9. 12. 15:30
매번 단순하게 Spring properties 들을 이용해 데이터베이스 연결 설정을 하다 실제 어떻게 작동하는지 확인해보고자 간단하게 DriverManager 와 DataSource 에 대해 학습했습니다. 이번 글에서는 간단하게 DriverManager, PrepareStatement, DataSource 데 관해 정리하겠습니다. 글 목차 1. DriverManager 2. Statement vs PreparedStatement 3. DataSource DriverManagerStatic Method 만 제공한다. 단순하게 Connection 을 얻을 수 있는데 DriverManager.getConnection() 메서드를 이용해 Connection 인터페이스 객체를 얻을 수 있습니다.각 DB 밴..
-
Spring @EventListener 사용하기 (2)Backend/학습내용 정리 2024. 7. 19. 16:33
https://jinmook.tistory.com/29 Spring @EventListener 사용하기글 목차1. ApplicationEventPublisher vs ApplicationEventPublisherAware2. 비동기로 진행하기3. 트랜잭션 확인4. 정리 프로젝트를 진행하며 Spring 의 Event 기반으로 개발을 진행했습니다. 사용자가 검색을 진행jinmook.tistory.com 앞선 글에서는 이벤트 리스너와 비동기 설정, 트랜잭션 설정 등에 관해 알아봤습니다.이번 글에서는 이어서 트랜잭션과 관련된 내용 그리고 Tomcat과 Executor 관계에 대해 알아보겠습니다. 글 목차 1. @TransactionalEventListener 2. TaskExecutor 3. @Async..
-
트랜잭션과 JPA 낙관적 락Backend/학습내용 정리 2024. 6. 17. 21:06
트랜잭션과 락 개념 트랜잭션은 작업의 완전성을 보장해 주는 것입니다. 즉, 논리적인 작업 셋을 모두 완벽하게 처리하거나, 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능입니다. 잠금은 여러 커넥션에서 동시에 동일한 자원을 요청할 경우 순서대로 한 시점에는 하나의 커넥션만 변경할 수 있게 해주는 역할을 합니다.트랜잭션의 격리 수준이라는 것은 하나의 트랜잭션 내에서 또 다른 트랜잭션 간의 작업 내용을 어떻게 공유하고 차단할 것인지를 결정하는 레벨을 의미합니다. 락과 트랜잭션은 서로 비슷한 개념 같지만,락은 동시성을 제어하기 위한 기능이고,트랜잭션은 데이터의 정합성을 보장하기 위한 기능입니다 JPA 낙관적 락 낙관적 락은 DB의 락 기능을 이용한 동시성 ..
-
내 코드가 그렇게 이상한가요?Backend/책 정리 2024. 6. 6. 20:07
시작에 앞서...예전에 블로그에 클린 코드나 이팩티브 자바를 읽고 정리하는 내용을 올렸었는데, 관련된 정리 내용은 다른 블로그에도 너무 많은것 같아서 앞으로는 책 정리 내용을 블로그에 올리지는 않을 예정입니다.사실 그전에도 책은 꾸준히 읽고 있었는데 블로그에 정리는 하지 않았고 대신 개인 노트 앱에 정리하고 github에 올리는 방식으로 변경하고 여기 블로그에는 책에 대한 리뷰만 작성하려고 합니다. 내용 정리에 대한 깃허브는 아래 링크를 통해 볼 수 있습니다. 기술 책 정리 github repository](https://github.com/jin-mook/TechBookSummaries\)) 이번 글은 최근에 다 읽었던 '내 코드가 그렇게 이상한가요' 라는 책에 대한 리뷰입니다. 챕터별 리뷰 지금까..
-
Spring @EventListener 사용하기Backend/학습내용 정리 2024. 5. 29. 01:03
글 목차1. ApplicationEventPublisher vs ApplicationEventPublisherAware2. 비동기로 진행하기3. 트랜잭션 확인4. 정리 프로젝트를 진행하며 Spring 의 Event 기반으로 개발을 진행했습니다. 사용자가 검색을 진행하면 해당 키워드로 이벤트를 생성하고 EventListener 부분에서는 관련된 로직을 처리하도록 개발했습니다. 이렇게 이벤트 기반으로 로직을 분리하면서 메인 로직인 기사 검색에 집중할 수 있었고, 이벤트 처리 로직에서는 키워드 순위와 관련된 로직을 처리할 수 있었습니다. 이번 글에서는 Event 처리 기반으로 구현하면서 공부했던 내용을 정리했습니다. ApplicationEventPublisher vs ApplicationEventPub..
-
Server Sent Event 정리Backend/학습내용 정리 2024. 5. 16. 13:46
글 목차1. Server Sent Event 개념2. Spring 에서 SseEmitter 클래스 확인하기3. SseEmitter 클래스 동작 방식4. Spring 코드 흐름 확인5. 마무리6. 참고 블로그 Server Sent Event 개념 전통적으로 웹 페이지는 새로운 데이터를 얻기 위해 서버로 요청을 보내야 하는 구조입니다. 즉, 서버로 데이터를 요청해야 합니다. 하지만 Server-Sent Events 방식으로 웹페이지의 요청 없이도 언제든지 서버가 새로운 데이터를 보내는 것이 가능합니다. 이렇게 보내진 메시지는 웹페이지 안에서 이벤트와 데이터로 다룰 수 있습니다. Server-Sent Events 방식을 사용할 때 주의할 점이 Http/2 프로토콜을 사용하지 않는다면 최대 커넥션 개수가 부..
-
Github Actions CI 구성Project 2023. 8. 22. 22:51
이번 글에서는 초기 프로젝트 세팅을 하며 진행한 Github Actions의 CI 구성 작업 과정에 대한 내용을 작성하겠습니다. 이번에 세팅을 진행하며 가장 신경 쓴 부분이 바로 github의 secrets를 이용하여 application-prod.yaml 파일의 변수들을 환경변수로 주입시키는 부분이었습니다. 예전 프로젝트에서는 방법을 찾지 못하여 미리 작성한 application-prod.yaml 파일을 base64로 인코딩 시킨 값을 직접 github의 secrets으로 등록하여 진행했는데 이러한 과정에서 application-prod.yaml 파일이 변경이 생기는 경우 매번 인코딩과 secrets 수정을 진행하는 부분이 불편하다고 느꼈기 때문에 이번에는 직접 환경변수를 넣을 수 있는 방법으로 진행하..
-
mono-repo / multi-module 프로젝트에서 spring 자동 설정 이용하기Project 2023. 8. 22. 00:49
이번 글에서는 새로운 프로젝트를 진행하며 자동 구성을 이용해 여러 모듈에서 공통으로 쓸 수 있도록 설정한 부분에 대해 정리하도록 하겠습니다. 현재 프로젝트 구조는 아래와 같습니다. gradle을 이용한 mono-repo / multi-module 형식의 프로젝트 구조입니다. live_feed | | - LiveFeedCommon | - LiveFeedCrawler | - LiveFeedParser | - LiveFeedSaver | - LiveFeedService 각 모듈별로 각각의 역할을 갖고 있는데 이때, LiveFeedCommon 모듈의 경우 다른 모듈에서 공통으로 사용하는 부분을 묶어서 관리하고 싶었기 때문에 Common이라는 이름을 갖는 모듈로 만들었습니다. 대부분의 다른 모듈에서 모두 kafk..