Search

36. 스프링부트 포토그램 구독하기 모델만들기

포토그램 구독하기

domain 폴더안에 subscribe 폴더 생성 후 Subscribe.java 생성
@Builder @AllArgsConstructor @NoArgsConstructor @Data @Entity public class Subscribe { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; }
Java
복사
전에 User.java에 있던거 참고해서 넣어주면된다
@ManyToOne private User fromUser; //구독하는 유저 @ManyToOne private User toUser; //구독받는 유저
Java
복사
User : 구독하기가 1: N 관계이므로 User가 1이라 ManyToOne
저장하고 서버 실행하면 자동으로 테이블을 생성해준다.
DBeaver가서 봐도 생성된걸 볼 수 있다.
근데 보면 _언더바가 붙은 상태로 컬럼명이 지어져서
@JoinColumn으로 수정해주자.
@JoinColumn(name="formUserId") @ManyToOne private User formUser; //구독하는 유저 @JoinColumn(name="toUserId") @ManyToOne private User toUser; //구독받는 유저
Java
복사
잘만들어졌는데 이전 컬럼이 남아있다.
이럴 땐 application.yml에서 create로 저장 후 다시 update로 변경해줘서
테이블을 날렸다가 생성하게 해주자.
구독하는 1번 유저가 구독받는 유저2번을 이미 구독한 상태에서 또 구독한 데이터를 넣으면 충돌난다.
그래서 구독받는 유저 와 구독하는 유저는 유니크 해야한다.
Subscribe.java에
@Table 어노테이션을 이용해서 두개의 유니크를 복합적으로 거는 경우에는 @UniqueConstraint 이용 해준다.
@Table( uniqueConstraints = { @UniqueConstraint( name="subscribe_uk", columnNames = {"fromrUserId", "toUserId"} ) } )
Java
복사
subscribe폴더 안에 SubscribeRepository.java 인터페이스를 생성
package com.cos.photogramstart.domain.subscribe; import org.springframework.data.jpa.repository.JpaRepository; public interface SubscribeRepository extends JpaRepository<Subscribe, Integer>{ }
Java
복사

*참고