Spring boot掲示板の作成-エンティティの作成


個人的にサイドプロジェクトを開発します.
横書き項目の中の小機能の一つの掲示板から、springを勉強します.

掲示板を作成する


-エンティティの実装


domainパッケージが作成され、Boardパッケージとクラスが生成されます.
import lombok.*;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import javax.persistence.*;
import java.time.LocalDateTime;

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Board {

    @Id
    @GeneratedValue
    private Long id;

    @Column(length = 10, nullable = false)
    private String author;

    @Column(length = 100, nullable = false)
    private String title;

    @Column(columnDefinition = "TEXT", nullable = false)
    private String content;

    @CreatedDate
    @Column(updatable = false)
    private LocalDateTime createdDate;

    @LastModifiedDate
    private LocalDateTime modifiedDate;

    @Builder
    public Board(Long id, String author, String title, String content) {
        this.id = id;
        this.author = author;
        this.title = title;
        this.content = content;
    }
}
参照)
オートジェネレータ
Lombokを使用すると、コンストラクション関数を自動的に生成することもできます.
  • @NoArgConstructor:パラメータなしのデフォルトジェネレータ
  • を作成
  • @AllArgConstructure:すべてのフィールド値をパラメータとするジェネレータを作成し、
  • をスケールします.
  • @RequiredArgConstructure:finalまたは@NonNullは、パラメータとしてフィールド値のみを受け入れるジェネレータを作成します.
  • JPAレビュー機能を使用するため、mainクラスに@EnableJpaAuditing宣言を追加しました.
    @EnableJpaAuditing
    @SpringBootApplication
    public class FitspoApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(FitspoApplication.class, args);
    	}
    
    }
    
    参照)
    JPA Auditing r機能とは?
    JavaでORMテクノロジーJPAを使用してドメインをリレーショナル・データベース・テーブルにマッピングする場合、通常、ドメインが持つフィールドまたはカラムが存在します.作成日、変更日、識別子など、代表的なフィールドおよび列.
    このため、JPAはAudit機能を提供している.Auditは、監視・感謝の意味で、Spring Data JPAが時間に自動的に値を付ける機能です.ドメインを永続コンテキストに保存するか、クエリーを実行して更新する場合は、毎回時間データを入力して更新する必要があります.auditを使用して時間を自動的にマッピングし、データベースのテープに挿入します.

    -Repositoryの実装


    Jpa Repositoryを継承します.
    boardパッケージ内にrepositoryパッケージを作成し、インタフェースを作成します.
    import org.springframework.data.jpa.repository.JpaRepository;
    import toypj.fitspo.domain.board.Board;
    
    public interface BoardRepository extends JpaRepository<Board, Long> {
    }
    

    -DTOの実装


    dtoパッケージを作成し、クラスを作成します.
    @Getter
    @Setter
    @ToString
    @NoArgsConstructor
    public class BoardDto {
        private Long id;
        private String author;
        private String title;
        private String content;
        private Long fileId;
        private LocalDateTime createdDate;
        private LocalDateTime modifiedDate;
    
        public Board toEntity() {
            Board build = Board.builder()
                    .id(id)
                    .author(author)
                    .title(title)
                    .content(content)
                    .build();
            return build;
        }
    
        @Builder
        public BoardDto(Long id, String author, String title, String content, Long fileId, LocalDateTime createdDate, LocalDateTime modifiedDate) {
            this.id = id;
            this.author = author;
            this.title = title;
            this.content = content;
            this.fileId = fileId;
            this.createdDate = createdDate;
            this.modifiedDate = modifiedDate;
        }
    }

    参考になるブログ
  • https://kyuhyuk.kr/article/spring-boot/2020/07/19/Spring-Boot-JPA-MySQL-Board-Write-Post
  • https://webcoding-start.tistory.com/53
  • https://www.daleseo.com/lombok-popular-annotations/