20190508更新
Springを始めよう
私はずっとRubyを使ってきたのですが、Javaを使うことになり、そのためのトレーニングをすることになりました。
そこで初めてSpringを使ったのですが、今までRubyとRailsを使って開発をしていたのでつまるところがあり、できればこれを共有したいと今回書くことにしたわけです。
レベル感でいうと、本当にJavaの基礎について、Webの基礎についての本を読んで少し手を動かした程度です。
何に詰まったか
何に詰まったかというと、MVCの形がRailsと違った為に、どのような形で実装すればいいかわからなくなったこと。
これはSpringをやってから気づいたんですが、RailsのMVCってかなり簡単に実装できるように作られているんだなぁと感じました。
まさにMVCそれぞれ、ModelとView、Controllerがそれぞれ三つだけに別れているので、何を書いていけばいいかが割と簡単にわかる。すごく楽ですね。
一方、SpringはMVCの実現がやや違う形になります。
Controller、Service、Entity、Repositoryに別れると。
Controllerの役割についてはRailsとそれほど変わらないのでわかりましたが、それ以外は何?どんなことを書いていけばいいんじゃ?となったわけです。
何を実装するか知る旅に出よう
ここから大いなる旅が始まりました。
どうやらRepositoryはDBとのやりとりをするとはわかったものの、Serviceも割と近くね?Entityって何?となっていきました。
とにかくここがわからないと、作ったとて、学びにならない!ととにかく色々調べます。
ここで難しかったのはそれぞれの役割が割と抽象的に表現されていたこと。
例えばServiceはビジネスロジックを実装するとか。いやわかりにくい。
そのビジネスロジックってそもそもなんなんですかということに。
そうこうしていくうちに、自分の知りたいことの乗っているサイトに出会いました。
Spring bootでweb 基本編
Slide Shareのもので、とにかくわかりやすいです。
ここでようやく自分なりに答えが出ました。自分の勉強のため、一応ここに書いておきます。
各名称 | 役割 |
---|---|
Controller | コントローラー。ブラウザ、そしてServiceとやりとり。 |
Service | DBに対して何をしたいかを書いた部分。保存だったり、更新だったり、具体的なことを書いていくところ。 |
Repository | Serviceから処理要求をもらって、DBとの直接のやりとりをする。抽象化して使う。データ取得、更新など。 |
Entity | データの入れ物。保管するための箱みたいなもの。 |
自分の中ではまとまっていますが、結構わかりにくいかもしれないです。
注釈を入れていくと、RepositoryはServiceの処理の実現のための抽象的なものだと解釈すればいいでしょう。
Service行うことを実装するためのものです。
で、EntityはDBとやりとりするのに値を保存する必要があるので、その時に使う箱。
数字を入れたりだとか。そういった役割をします。
ここでは自分にわかりやすいように書いていますが、もしわからない時は、先ほどのリンクできっちり見てみるといいかもしれません。
終わりに
先ほどのサイトのおかげで、結構Springでの役者の役割がわかりました。
結構行き詰まる人もいそうだというのが私の感想です。