전체 글 381

JPA 사용 시 스프링 트랜잭션 애노테이션 누락을 유의해야되는 경우들

JPA 에서의 영속성 컨텍스트와 스프링 트랜잭션JPA 에서 영속성 컨텍스트는 엔티티를 영구 저장하는 환경으로서 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. 이때 영속성 컨텍스트가 엔티티를 관리하면 여러가지 이점이 있다. 대표적으로 1차 캐시, 트랜잭션을 지원하는 쓰기 지연, 변경 감지, 지연 로딩 등이 있다. 스프링이나 J2EE 컨테이너 환경에서 JPA 를 사용하면 영속성 컨텍스트의 생존 범위가 스프링  트랜잭션의 범위와 같다. 즉 스프링에서 지원하는 트랜잭션을 시작할 때 영속성 컨텍스트가 생성되고 해당 트랜잭션이 끝날 때 영속성 컨텍스트를 종료하는 것이다. 참고로 같은 트랜잭션 안에서는 항상 같은 영속성 컨텍스트에 접근한다.  스프링 트랜잭..

Technology/JPA 2024.04.25

트랜잭션 격리수준 Repeatable Read 가 필요한 이유

Non-Repeatable Read 는 언제 문제가 되는가? MySQL 의 InnoDB 스토리지 엔진에서 기본으로 사용되는 트랜잭션 격리수준은 Repeatable Read 이다. 이때 Repeatable Read 에서는 다른 트랜잭션 격리수준인 Read Uncommitted 나 Read Committed 에서와 달리 Non-Repeatable Read 현상이 발생하지 않는다. 여기서 Non-Repeatable Read 란 하나의 트랜잭션에서 같은 값을 두 번 select 했을 때 각각 다른 값이 읽히는 현상이다. 참고로 ANSI SQL 1992 에서는 Non-Repeatable Read 현상을 아래와 같이 서술하고있다. 하나의 예시로서 아래와 같은 시나리오들이 존재할 수 있다. 참고로 트랜잭션 A 의 경..

Technology/MySQL 2024.03.23

팀 개발을 위한 커뮤니케이션에 대한 고민

커뮤니케이션의 중요성을 실감하는 요즘.. 부트캠프 당시 팀 프로젝트를 수행하거나 팀원들을 모집하여 사이드 프로젝트를 수행하면서 커뮤니케이션의 중요성을 자주 느끼곤 했었지만, 실무에서 팀원들과 함께 서비스를 개발하고 운영해나가고 있는 요즘 커뮤니케이션의 중요성을 더욱더 느끼고있는 중에 있다. 사실, 개발뿐만 아니라 모든 직장을 포괄해서 더 나아가 인생에 있어 커뮤니케이션의 중요성을 느끼지 않는 사람은 거의 없으리라 생각한다. 😅 '커뮤니케이션'과 '커뮤니케이션을 잘한다' 에 대한 나름대로의 정의 우선, 커뮤니케이션의 사전적 정의는 '사람들끼리 서로 생각, 느낌 따위의 정보를 주고받는 일'이라고 한다. (그냥, 한국말로 하면 의사소통...) 이때, '커뮤니케이션를 잘한다.' 라는 의미에는 굉장히 많은 의미가..

데이터 마이그레이션을 위한 Update 쿼리 성능 개선

실행 시간이 1시간 이상 소요되는 악성 SQL... 오늘은 실무 초기에 SQL 을 작성하면서 실수했었던 부분에 대해 다루고자 한다. 🐥 실무에서 데이터 마이그레이션을 위해 Update 쿼리를 작성해본 경험이 있었는데, 테스트 환경에서 실행해본 결과 실행 시간이 무려 1시간을 훌쩍 넘긴 일이 있었다...👀 뭔가 잘못됐음을 직감하고 일단 SQL 실행계획부터 확인해보기로 했다. SQL 의 형태는 대략 아래와 같은 구조였다. (참고로, 이름은 임의로 명명했다.) UPDATE a_table a JOIN b_table b ON CAST(a.index_id AS CHAR) = CAST(b.id AS CHAR) JOIN c_table c ds ON b.c_id = c.id SET a.text = ... WHERE a...

Technology/MySQL 2024.02.25

SOP(Same Origin Policy)의 한계와 쿠키(Cookie)의 SameSite 속성의 활용

목차 1. SOP 와 SameSite 와 관련한 추억..💫 2. SOP 의 필요성 2-1. SOP 란? 2-2. Same Origin vs Cross Origin 2-3. SOP 매커니즘 이해하기 2-4. Preflight Request 란? 3. Spring boot 의 Preflight Request 처리 과정, 간단하게 살펴보기! 4. SOP 의 한계 5. 쿠키의 SameSite 속성에 대해 알아보자! 5-1. SameSite 란? 5-2. Same Site vs Cross Site 6. SameSite 속성별 필요성 6-1. SameSite = None 6-2. SameSite = Strict 6-3. SameSite = Lax 7. 오늘날 SameSite 사용에 대한 고찰 1. SOP 와 Sam..

Technology/Web 2024.02.20