20240214 (수) 대용량 트래픽 프로젝트 - 동시성 제어 프로젝트 1일차

2024. 2. 14. 19:39TIL

오늘은 팀원들과 처음 만나고서 이번프로젝트동안에 진행해볼 발제를 고른후 ERD, 와이어프레임. API 명세서, 기획등을 세우고 역할분담, 약간의 코딩을 진행했다.

https://www.notion.so/2a3ec447d93843208bf018b9ce0ce651?pvs=4

 

대용량 트래픽 프로젝트 | Notion

❤ 팀 소개

mercury-harmonica-895.notion.site

내가 맡은 부분은 카테고리고 조금 빨리 끝날것 같아서 이후엔 티케팅 부분도 조금 알아볼 것이다.

package com.a03.concurrencycontrolproject.domain.category.model

import com.a03.concurrencycontrolproject.common.BaseTime
import jakarta.persistence.*
import jakarta.persistence.Table
import org.hibernate.annotations.*

@Entity
@SQLDelete(sql = "UPDATE category SET is_deleted = true WHERE id = ?") // DELETE 쿼리 날아올 시 대신 실행
@SQLRestriction("is_deleted = false")
@OnDelete(action = OnDeleteAction.CASCADE)
@Table(name = "category")
class Category(

    @Column(name = "title")
    var title: String,

    @Column(name = "is_deleted")
    val isDeleted: Boolean = false

) : BaseTime() {

    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    val id: Long? = null

}

 

이번에 새로 알게된 @SQLRestriction("") 어노테이션

@Where 어노테이션의 대체제 같은 느낌이다.

 

@Where의 경우 최근버전에 들어서는 최적화문제로 더이상 사용하지 않는 추세라고 한다.

 


일단 오늘은 팀회의에 시간이 많이 들어서 코딩자체는 많이 진행하지 못했다.