본문 바로가기

전체 글

(36)
[JPA] 코멘트 신고 기능 도입 및 벌크 연산과 배치 작업을 통한 기간 정지 구현 현재 사이드 프로젝트로 진행중인 프로젝트 모카콩(https://github.com/mocacong/Mocacong-Backend)은 부적절한 코멘트에 대해 처리를 하는 신고 기능 로직이 없었습니다. 이후, 커뮤니티 기능도 도입할 예정이기 때문에 아래의 조건에 해당하는 회원에 한해 60일동안 모카콩 서비스에 접근할 수 없도록 기간 정지 기능을 구현했습니다. 5번 이상 신고당한 코멘트 -> 코멘트 내용 마스킹, 코멘트 작성자에게 경고 1회 부여 11번 이상 경고를 받은 유저 -> 60일간 모카콩 서비스 접근 금지 (member의 status가 ACTIVE->INACTIVE) 1. 코멘트 신고 기능 도입 이후 커뮤니티 기능을 확장시킬 예정이기 때문에 신고 기능을 따로 Report 클래스로 두어 구현했습니다. ..
[JPA] 인터셉터를 활용한 JWT Token 기반 로그인 구현 정리 1. 인터셉터1) 인터셉터란?인터셉터(Interceptor)는 스프링 프레임워크에서 요청과 응답을 가로채서 처리하는 기능입니다. 컨트롤러가 호출되기 전에 요청을 가로채서 다양한 처리를 할 수 있습니다.ex) 로그인 체크, 권한 체크, 인코딩 설정, 로깅 등등...이렇게 핸들러(컨트롤러)의 수정없이 핸들러 수행 전/후처리 동작을 추가해 중복되는 코드를 줄이고 코드의 유지보수성 또한 높일 수 있다 2) HandlerInterceptor 인터페이스인터셉터는 HandlerInterceptor 인터페이스를 구현해 작성해야 합니다.HandlerInterceptor 인터페이스에는 다음 3가지 메서드가 정의됩니다.public interface HandlerInterceptor { default boolean pr..
[JPA] JPA 변경 감지를 이용하여 상태 변경을 반영 1. JPA의 변경감지 1) 정의 JPA 에서 변경 감지는 엔티티 객체의 상태를 추적하여, 변경된 Entity 를 데이터베이스에 자동으로 반영하는 메커니즘입니다. 2) 작동 원리 ① JPA 는 EntityManager 를 사용하여 엔티티를 관리한다. EntityManager 는 엔티티를 영속성 컨텍스트에 저장하며, 이후에 엔티티를 조회하거나 수정할 수 있다. ② 이때 영속성 컨텍스트는 EntityManager 가 관리하는 엔티티의 상태를 추적하고, 변경된 엔티티를 데이터베이스에 자동으로 반영하는 기능을 제공한다. EntityManager 에서 영속성 컨텍스트의 flush 메서드를 호출하면, 영속성 컨텍스트에서 변경된 엔티티를 데이터베이스에 반영 ③ 영속성 컨텍스트는 엔티티의 변경을 감지하기 위해 Dirt..
[JPA] save 관련 메서드 동시성 문제 해결 올해 초부터 학교 비교과 프로그램으로 동기들과 함께 진행중인 프로젝트 모카콩(https://github.com/mocacong/Mocacong-Backend)은 동시성 문제를 방지할 코드가 없었습니다. 동시성 문제는 여러 스레드나 프로세스가 동시에 접근하고 수정하는 상황에서 발생할 수 있는 문제입니다. 데이터베이스에서의 동시성 문제는 동시에 여러 개의 트랜잭션이 동일한 데이터를 변경하거나 중복된 데이터를 삽입하려고 할 때 발생할 수 있습니다. 배포하기 전, save 관련 메서드에서 동시성 문제가 발생한다는 것을 발견했고 이를 방지하기 위해 unique 속성을 걸었습니다. 1. unique 속성이란 Spring에서 unique 속성은 데이터베이스 테이블의 컬럼에 대한 고유성(유일성)을 보장하는 데 사용됩니..