본문 바로가기
Spring/JPA + Security

[Spring Data JPA] JPA 사용한 구독하기 1 - DB테이블 설정

by pyogowoon 2023. 1. 8.
package com.pyo.pyostagram.domain.subscribe;

import com.pyo.pyostagram.domain.user.User;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;

@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
@Entity
@Table(
        uniqueConstraints = {
                @UniqueConstraint(
                        name = "subscribe_uk",
                        columnNames = {"fromUserId", "toUserId"}
                )
        }
)
public class Subscribe {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @JoinColumn(name = "fromUserId") //카멜 표기법으로 다시만들어짐
    @ManyToOne
    private User fromUser;

    @JoinColumn(name = "toUserId")
    @ManyToOne
    private User toUser;

    private LocalDateTime createDate;

    @PrePersist
    public void createDate() {
        this.createDate = LocalDateTime.now();

    }
}

 

필요한것 : 아이디값, 구독하는 유저, 구독 받는유저, 시간

 

왜 굳이 private User fromUserId

            private User toUserId 로 안하고

@JoinColumn (name ="") 사용했는지 ? 

 

->

 

 @JoinColumn 으로 네임을 지정 안해주면

 fromUserId_id 이런식으로 연관관계의 주인을 따라가는 네이밍을 가짐,

 본인은 카멜식 사용하기 위해 @JoinColumn 넣음

 

@PrePersist 로 insert 전에 시간 생성하도록 하였고

 fromUserId 와 toUserId는 User에서 포린키로 가져와야 하는것이기 때문에 

@JoinColumn을 사용.

 

 

@Table 의 uniqueConstraints 의 경우 fromuserId와 toUserId를 유니크 걸어주기 위해 적은것, 외울필욘 없다

 

그 후 repository 만들기

 

import org.springframework.data.jpa.repository.JpaRepository;

public interface SubscribeRepository extends JpaRepository<Subscribe , Integer> {

    
}

댓글