본문 바로가기

Spring3

[Spring/Java] 동시성 제어 통한 게시물 좋아요 및 댓글 수 관리 (비관적 락, 반정규화, 세마포어) 상황게시물에 좋아요 버튼을 누르면 좋아요 수가 1씩 증가하거나 감소해야하고, 댓글을 작성하거나 삭제하면 댓글 수가 1씩 증가하거나 감소해야 했다. 그런데, 그런 요청이 있을 때마다 좋아요 댓글 수 컬럼 값을 1씩 증가하거나 1씩 감소시키게 된다면, 충돌의 위험이 있었고, 데이터 무결성에 문제가 생길 수 있었다. 그래서 충돌을 방지하여 데이터 무결성을 높이는 락을 사용해야 했다. 하지만, 동시성 처리가 많은 상황에서는 락 경합이 빈번하게 발생하여 락 대기 시간이 길어질 수 있었고, 데이터베이스의 성능이 저하될 수 있었다. 해결방법 [ 1. 별도의 테이블을 사용하여 성능 향상 ]좋아요와 댓글에 대한 테이블을 따로 만들고, 생성이 될 때마다 데이터를 하나씩 추가시키고 삭제할때마다 해당 데이터를 하니씩 삭제했다.. 2024. 7. 7.
[Spring/Java] JPQL & Slice 객체(paging)이용하여 특정 조건의 게시물을 특정 방식으로 가져오기 Paging과 Slice 객체에 대해서 궁금하다면 이전 글을 보고오면 좋을 것 같다.https://persi0815.tistory.com/25 [Spring/Java] Paging이란? Page 객체 vs Slice 객체 (+ 코드)1. Paging이란? Paging은 대량의 데이터를 효율적으로 처리하고 사용자에게 필요한 양만큼씩 나누어 제공하는 기법이다. 데이터베이스 쿼리에서 페이징을 구현하면, 전체 데이터 집합을 작은 부분persi0815.tistory.com 1. 북마크한 게시물들을 특정 종류(type)과 정렬 방식(way)에 따라 목록 조회Controller@Operation(summary = "북마크 한 전체 게시판 목록 정보 조회 메서드", description = "북마크 한 게시판 중 ty.. 2024. 7. 7.
[Spring/Java] Paging이란? Page 객체 vs Slice 객체 (+ 코드) 1. Paging이란? Paging은 대량의 데이터를 효율적으로 처리하고 사용자에게 필요한 양만큼씩 나누어 제공하는 기법이다. 데이터베이스 쿼리에서 페이징을 구현하면, 전체 데이터 집합을 작은 부분(페이지)으로 분할하여 한 번에 적은 양의 데이터만을 가져오게 된다. 이렇게 하면 메모리 사용을 줄이고, 네트워크 트래픽을 최소화하며, 사용자에게 더 빠른 응답 시간을 제공할 수 있다.2. Page 객체 vs Slice 객체두 객체 모두 Spring Data JPA에서 사용되고, 페이징 기능을 제공하지만, 약간의 차이가 있다. Page 객체전체 페이지 수, 현재 페이지 번호, 페이지 당 항목 수, 총 항목 수, 현재 페이지에 포함된 데이터 목록 등 페이징 관련 정보를 포함한다.페이지에 대한 추가 정보를 포함한다.. 2024. 7. 7.