spring boot #4
2995 ワード
#3でフォームデータを作成し、DTOオブジェクトに入れて検証したので、DBに入れてみます.
JPAを使用してデータベースにデータを作成します。
ユーザー入力>DTOオブジェクト にフォームデータを保存エンティティ に変換 DBに一意の番号IDが保存されています.
フォームデータをエンティティに変換します.
エンティティをrepositoryで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;
// entity/Article.java
@Entity
public class Article {
@Id //대표값 지정
@GeneratedValue //자동 생성 어노테이션
private Long id;
@Column
private String title;
@Column
private String content;
... 생성자
... toString()
}
// dto/ArticleForm.java
public Article toEntity() {
return new Article(null, title, content);
// Article.java의 생성자에 맞게 작성해준다.
}
public interface ArticleRepository extends CrudRepository<Article,Long> {
}
@Autowired
private ArticleRepository articleRepository;
整理する
//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に保存します.
Reference
この問題について(spring boot #4), 我々は、より多くの情報をここで見つけました https://velog.io/@daegari/spring-boot-4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol