spring boot #4

2995 ワード

#3でフォームデータを作成し、DTOオブジェクトに入れて検証したので、DBに入れてみます.

JPAを使用してデータベースにデータを作成します。


client -> server -> database
(H 2というDBを使用する)
DBはJavaを知らず、SQL言語のみを理解しています.
JPAはDBにJAVAを理解させ、多様な機能を提供する.

1.DTOをEntity(標準データ)に変換


フォームデータをインポートし、Articleタイプのエンティティに変換します.
Article article = form.toEntity();
ArticleタイプのエンティティがないためJavaクラスを作成します.
(Article.javaを含むエンティティパッケージを作成)

@Entity


DBはそのオブジェクトに@Entity宣言を付けて認識させる.

@Column


同様に、DB内のテーブルに関連付けます.
//   entity/Article.java

@Entity 
public class Article {

    @Id //대표값 지정
    @GeneratedValue //자동 생성 어노테이션
    private Long id;

    @Column
    private String title;

    @Column
    private String content;
    
	... 생성자
    ... toString()
}

変換方法


ArticleForm.Javaでフォームをエンティティに変換するtoEntity()メソッドを作成します.
//   dto/ArticleForm.java

 public Article toEntity() {
        return new Article(null, title, content);
        // Article.java의 생성자에 맞게 작성해준다.
    }

2.RepositoryでDBに移動します。


Article saved = articleRepository.save(article);
Repositoryパッケージでインタフェース形式のドキュメントRepositoryを使用します.Javaの作成
JPAが提供するRepositoryインタフェースを利用すると、簡単に作成できます.
public interface ArticleRepository extends CrudRepository<Article,Long> {
}

CrudRepository<T,ID>


ターゲットエンティティの作成、読み取り、更新、削除の機能を拡張するには、追加のコードを必要としません.
T:リポジトリ管理のドメインタイプ(エンティティ名)
ID:エンティティidのデータ型
create = insert
read = select
update
delete

@Autowired


newキーなどの新しいオブジェクトを作成する必要はなく、スプリングガイドで作成したオブジェクトに接続するだけで使用できます.
	@Autowired
    private ArticleRepository articleRepository;
    
  • ユーザー入力>DTOオブジェクト
  • にフォームデータを保存
  • エンティティ
  • に変換
  • DBに一意の番号IDが保存されています.
  • 整理する

    //AritcleController.java
    
    ...
    
    @Controller
    public class ArticleController {
    
        @Autowired 
        private ArticleRepository articleRepository;
    
        @GetMapping("/articles/new")
        public String newArticleForm(){
            return "articles/new";
        }
    
        @PostMapping("/articles/create")
        public String createArticle(ArticleForm form){
            System.out.println(form.toString());
    
            //1
            Article article = form.toEntity();
            System.out.println(article.toString());
    
            //2
            Article saved = articleRepository.save(article);
            System.out.println(saved.toString());
    
            return "";
        }
    
    }
    ユーザーが入力したフォームデータをDTOオブジェクトに保存します.
    フォームデータをエンティティに変換します.
    エンティティをrepositoryでDBに保存します.