• @Transactional 어노테이션 해체 분해하기

    @Transactional 어노테이션 해체 분해하기

    최근 이벤트 리스너를 활용하면서, 트랜잭션 어노테이션에 깊게 공부할 기회가 생겼다.@Transactional(propagation = Propagation.REQUIRES_NEW)@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT) 위와 같은 어노테이션을 사용했던 것인데, 무의식적으로 사용하다보니, 각 격리 수준이 무엇있고, 어떻게 동작하는지 자세히 뜯어보고 싶어서 나름 파고들어 공부해봤고, 그 내용을 정리하고자 한다.1. 트랜잭션 정의트랜잭션이란, 데이터베이스에서 하나의 논리적 작업을 '원자적으로 처리하기 위한 메커니즘'을 의미한다. 사실 정의라는게 아는 사람이 볼땐 이해가 잘되지만, 처음 접할때는 되게 멀게 느껴지는 그런게 있다. 그럴..

  • [의약품 배송 프로젝트] 실시간 기사 위치 갱신 성능 개선기

    0. 한줄 요약HTTP 단건 조회 -> SSE & Kotlin Flow 방식으로 변경의약품 배송 플랫폼은 제약회사에서 생산된 의약품을 병원,약국 및 기타 클라이언트에게 전달할 때 사용하는 B2B 서비스입니다.해당 서비스의 고객은 생산된 의약품이 의약품 배송 규칙 및 규제에 따라 적절히 배송되고 있는지, 현재 상황은 어떠한지 진행상황을 파악할 수 있고, 실제로 의약품을 배송하기 위해 배차를 생성하여 배송 기사를 지정할 수도 있습니다. (의약품 전문 배달의 민족이라고 보시면...)1. 배경 - 새로고침을 해야만 배송 기사의 최신 위치가 보이는 문제의약품 배송 플랫폼의 사용자 및 관리자 화면에는 실시간으로 배송 기사의 위치가 표시되는 기능이 있습니다.하지만 기존 구조는 단순 HTTP GET 요청으로 화면 최초..

  • [프로그래머스] 문자열 겹쳐쓰기_ReplaceRange 활용

    [프로그래머스] 문자열 겹쳐쓰기_ReplaceRange 활용

    코테를 한동안 놓다가... 코틀린으로 다시 준비할 겸 시작해본다.위 문제는 사실 굉장히 간단한 구현 문제임 1. 내 풀이class Solution { fun solution(my_string: String, overwrite_string: String, s: Int): String { var answer: String = "" for (i in 0..my_string.length - 1) { when { i answer+=my_string[i] s answer+=overwrite_string[i-s] i >= overwrite_string.length+s -> answer+..

  • [CANCER-FINE] 팩토리 메서드 패턴을 활용해 탄탄한 Entity 구성하는 방법

    1. 배경JPA를 사용하여 엔티티를 작성할 때 우리는 보통 정형화된 방식으로 작성합니다. 예를 들어 아래와 같은 형태가 일반적입니다.@Entity@Table( name = "board", indexes = [Index(name = "idx_fts", columnList = "title, content", unique = false)]) class Board( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null @Column(nullable = false) var title: String, @Column(columnDefinition = "TEXT", nul..

  • [CANCER-FINE] 프로젝트 init

    [CANCER-FINE] 프로젝트 init

    1. 프로젝트 개요현재 암환자에 대한 정보는 산재되어 있으며, 각 환자에게 fit한 정보를 찾는것이 너무 어려움암환자를 위한 맞춤형 정보 제공 사이트2. ERD 다이어그램ERD는 다음과 같습니다. 그렇게 복잡하진 않습니다.3. 기술 스택FrontEnd : React.js , html, css, javaScriptBackEnd : SpringBoot 3.3.4, Kotlin1.9, MySQL, Spring Data JPA, AOP, Functional Programming, JUnit54. 참여 인원작성자 혼자 진행5. 핵심 기능1) 회원회원가입로그인로그아웃회원정보수정회원 탈퇴Session 기반 로그인 유지AOP 활용한 SessionCheck회원 본인 정보조회2) 게시글게시글 작성게시글 조회(전체 게시글 ..