0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SpringBoot 各レイヤの役割

Last updated at Posted at 2022-12-22

とても重要な概念なので、まとめてみたいと思います。

全体ロジック

controller --> service --> serviceImpl --> dao --> daoImpl --> database

では各レイヤの役割についてまとめます。

Dao(Data Access Object)

    

 どんなフレームワークを使っても、データベースとやりとりすることは多いです。直接SQLを書くと、ソースコードが読みづらくなることは多いです。そこで、データベースをラップして、データベースとのやりとりを一つの対象、Objectとやりとりすることにすればソースコードの可読性や保守性が大幅向上できます。このObjectはDaoと呼ばれています。Dao層は自動的にSQLを生成し、データベースにアクセスします。PGはDao層のみを制御すればOKです。
 制御する方法としては、通常Dao層の中にInterfaceを作成します。Interface内にデータを取得するなどのメソッドを定義します。実際データを取得するのSQL分は通常mapperファイルの中に記載します。またxmlファイルの中にSQL文が書かれている場合が多いです。 また、DaoはMapper、Respositoryと呼ばれることもあります。

Service

    

 業務ロジックを実現する層です。Service層もDao層と同じように、まずはInterfaceを設計します。そこからImplクラスを定義します。これでPGはService層のInterfaceをcallすれば、業務ロジックを実現することはできます。service層の業務ロジックを実現するために、Dao層で定義したInterfaceを使ってデータベースとやりとります。
 service層をラップ化することによって、業務ロジックが利用性が上がります。

     

Controller

 service層に指示を出して、業務ロジックをコントロールする役割です。また処理した結果をビューに指示します。ここで覚えてほしいこととしては、Controller層はただ指示を出す側であって、実際に業務ロジックそのものを実現する機能は持っていません.

Model

 

 Model層は通常View層と一緒に話します。view層は直接Userとやりとります。私たちは画面が見えるのはView層のおかげです。画面に表示されたデータはModel層です。View層は直接Controller層からの指示を受けます。

最後

スクリーンショット 2022-12-22 10.30.38.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?