본문 바로가기

Playlist/Content

Entity : Content

Content.java

import com.codeit.playlist.domain.base.BaseUpdatableEntity;
import jakarta.persistence.Table;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Table(name = "contents")
@Getter
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Content extends BaseUpdatableEntity {

    /**
     * 컨텐츠 타입
     */
    @Enumerated(EnumType.STRING)
    @Column(length = 20, nullable = false)
    private Type type;

    /**
     * 컨텐츠 제목
     */
    @Column(length = 100, nullable = false)
    private String title;

    /**
     * 컨텐츠 설명
     */
    @Column(nullable = false, length = 2000)
    private String description;

    /**
     * 썸네일 이미지 URL
     */
    @Column(nullable = false)
    private String thumbnailUrl;

    /**
     * 평균 평점
     */
    @Column(nullable = false)
    private double averageRating;

    /**
     * 리뷰 개수
     */
    @Column(nullable = false)
    private int reviewCount;

    /**
     * 시청자 수
     */
    @Column(nullable = false)
    private int watcherCount;

    public void updateContent(String title, String description, String thumbnailUrl) {
        this.title = title;
        this.description = description;
        this.thumbnailUrl = thumbnailUrl;
    }

    public void setSports(String title, String description, String thumbnailUrl) {
        this.type = Type.SPORT;
        this.title = title;
        this.description = description;
        this.thumbnailUrl = thumbnailUrl;
    }

    public static Content createSportsContent(String title, String description, String thumbnailUrl) {
        Content content = new Content();
        content.setSports(title, description, thumbnailUrl);
        return content;
    }

 

 


 

 

개선사항

 

 


 

수정된 Content.java

import com.codeit.playlist.domain.base.BaseUpdatableEntity;
import jakarta.persistence.Table;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Table(name = "contents")
@Getter
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Content extends BaseUpdatableEntity {

    /**
     * 컨텐츠 타입
     */
    @Enumerated(EnumType.STRING)
    @Column(length = 20, nullable = false)
    private Type type;

    /**
     * 컨텐츠 제목
     */
    @Column(length = 100, nullable = false)
    private String title;

    /**
     * 컨텐츠 설명
     */
    @Column(nullable = false, length = 2000)
    private String description;

    /**
     * 썸네일 이미지 URL
     */
    @Column(nullable = false)
    private String thumbnailUrl;

    /**
     * 평균 평점
     */
    @Column(nullable = false)
    private double averageRating;

    /**
     * 리뷰 개수
     */
    @Column(nullable = false)
    private int reviewCount;

    /**
     * 시청자 수
     */
    @Column(nullable = false)
    private int watcherCount;

    public void updateContent(String title, String description, String thumbnailUrl) {
        this.title = title;
        this.description = description;
        this.thumbnailUrl = thumbnailUrl;
    }

    public static Content createSportsContent(String title, String description, String thumbnailUrl) {
        Content content = new Content();
        content.type = Type.SPORT;
        content.title = title;
        content.description = description;
        content.thumbnailUrl = thumbnailUrl;
        content.averageRating = 0.0;
        content.reviewCount = 0;
        content.watcherCount = 0;
        return content;
    }

'Playlist > Content' 카테고리의 다른 글

ContentException, ErrorCode  (0) 2025.12.17
Content, DTO  (0) 2025.12.17
ContentController  (0) 2025.12.17
ContentService  (0) 2025.12.17
Service : BasicContentService  (0) 2025.11.25