質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Spring MVC

Spring MVCとは、Javaを用いてWebアプリケーションを開発できるフレームワーク。アーキテクチャにMVCを採用しており、画面遷移と入出力パラメータの受け渡しの基本的な機能の他、ユーザーの送信したパラメータに対する入力チェックなどさまざまな機能を持ちます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Roo

Spring Rooとは、Springのサブツールで、容易に拡張可能なRADツールです。Javaアプリケーションを、数分程度で構築することができます。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

658閲覧

Spring Frameworkと利用DBについて教えて下さい。

pom12345

総合スコア12

Spring MVC

Spring MVCとは、Javaを用いてWebアプリケーションを開発できるフレームワーク。アーキテクチャにMVCを採用しており、画面遷移と入出力パラメータの受け渡しの基本的な機能の他、ユーザーの送信したパラメータに対する入力チェックなどさまざまな機能を持ちます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Roo

Spring Rooとは、Springのサブツールで、容易に拡張可能なRADツールです。Javaアプリケーションを、数分程度で構築することができます。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

1グッド

0クリップ

投稿2022/10/10 00:15

編集2022/10/10 00:54

Spring Frameworkと利用DBについて教えて下さい。
他の言語のMVCフレームワークでのイントラネットの業務アプリを経験していますが、

前提

今回、Java言語を覚えるのに、MVCフレームワークから入りたいと考え、
Spring Frameworkについて調べています。

・自宅環境構築用にOpenJDK 19を利用し、Spring Frameworkを利用したいと考えています。
ORMを利用します。(Hibernateの予定)
・DIも利用
・将来的にはイントラネットの業務アプリの構築前提のための準備をしたいです。
・MVCモデルは調整して、クリーンアーキテクチャ方式に変更しようと考えています。

質問

①Spring MVC、Spring Boot、Spring Rooの違いについて
・基本的なログイン認証機能を持ったMVCアプリを構築するならSpring MVCを利用するのでしょうか?

・Spring MVCでSpring Rooの機能は使えますか?またはその逆で、RooのなかでMVC形式で作成できるのでしょうか?
検討違いな質問であればすみません。
Spring Rooはテンプレートが作れるようですが、最初のテンプレートはRooで作成されてたものをベースに利用して、以降はソースをコピーして作ったほうが使いやすいと思っています。

・Spring Bootの簡単なWebアプリということがわかっていません。MVCではない簡単なものということでしょうか?

②Controllerが画面を返す場合について
・Controllerが画面を返すのは.jspでしょうか?.htmlでしょうか?または、どちらでも返すことができるのでしょうか?

.jspというものが理解できていません。.htmlにJava言語の機能がついているようなものでしょうか?

※ViewにはMPA利用でのVue.jsを使用したいと考えています。なので、画面からできるだけJava言語の機能の利用は必要最低限にしたいです。(全部は難しいかもしれない。)

③DBについて
・開発時はDBにOracle Expressを使おうとしていますが、
サーバースペックにもよるかもしれませんが、Oracleの商用版は1サーバー当たり、低価格帯とした場合どのぐらいの費用がかかるのでしょうか?

・DBについてOracle以外を選択した場合、MariaDBを考えています。
MariaDBはBtoBでの業務アプリの商用利用としては不向きでしょうか?

よろしくお願いいたします。

uky👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

今回、Java言語を覚えるのに、MVCフレームワークから入りたいと考え、

他の言語もそうですが、いきなりフレームワークというのは敷居が高く、言語の本質的な部分が身につかないままになってしまう可能性が高いので、他の言語やフレームワーク経験ありとしても、元の言語をおろそかにしてはいけないと思います。
入門書から始めましょう。

あとは「何を作りたいか」によってSpringのどの機能を使うかを決める形になると思います。

Springというプロジェクト自体、非常に強大で、全てを使いこなすのは非常に難しいと思います。
ゆえに、子プロジェクトや派生プロジェクトなど「より使いやすく、分かりやすくしたもの」が実際のプロジェクトではよく採用されています。

つまり、全ての疑問について完全に答えるのは使ってるだけでは難しいということになります。
(全ての設計思想を把握している人なら或いは)


という前提で分かる範囲での回答になります。


①Spring MVC、Spring Boot、Spring Rooの違いが調べてもよくわからなかったので知りたいです。
単純にMVCアプリを構築するならSpring MVCを利用するのでしょうか?
また、Spring MVCが使えれば、Spring Rooはいらないような気はしますがどうでしょうか?

人によります。
プロジェクトの方針によります。
Spring RooはRADツールなので、環境構築や開発を迅速に行えるもので、
ローコード開発ツール言ってもいいかもしれません。

Spring MVCを用いたい人は逆に「自身で細かい拡張などをしつつコードを書いていきたい人」向けと言えます。
Spring Rooを熟知しているわけではなく、調べた感じではありますが、自動生成されたコードを拡張していくことは可能だと思いますが、最初の設計・モデリング段階で相当考慮して作っておかないと後々の改修にも影響出そうな気がします。

Spring BootはSpring Frameworkの機能を使えるWeb開発に特化したプロジェクトで、
Webで開発したいなら筆頭候補となると思います(実際に私も利用していますし、teratailでのSpringの質問の多くはSpring boot関係です)
パッケージの組み方ではMVC(例えばSpring Web)を含むことも可能なので、開発が容易で様々な拡張性を持たせられるので採用しやすとも言えます。
基本的にWeb開発であればSpring Bootを基盤としてで十分です。大規模システムにも問題なく適用できます。

②Controllerが返す画面は.jspでしょうか?.htmlでしょうか?

コントローラは「ビジネスロジックとの連携を行って、Viewに情報を渡す」役割をしているもので、
コントローラ自体が画面を担当しているわけではありません。

そもそもjspはJavaサーブレットの画面側の機能(テンプレートエンジンと言ってもいいか)です。

Springで良く用いられるテンプレートエンジンはThymeleafですが、これをjspにすることも可能です。
そこはプロジェクトの方針やメンバーの経験次第と思います。

ただ、JavaでWebをしたいのであれば、SpringBootも機能として使っている
Javaサーブレット(WebサーバはTomcat)の学習は先にしておくべきと思います。
リクエストやレスポンスの考え方、リクエストマッピングの考え方などが基本となるからです。

ViewにはMPA利用でのVue.jsを使用したいと考えています。

Vue.jsをどのように絡ませるか次第ですが、基盤となるHTMLは必要なので、
どのテンプレートエンジンを軸とするかは考えてみてください。両方使ってみての印象で良いと思います。

③開発時はDBにOracle Expressを使おうとしていますが、
Oracleの商用版は1サーバー当たりどのぐらいの費用がかかるのでしょうか?

どのエディションによるかと思います。
ライセンス情報などを確認してください。
※完全商用だと個人レベルで参照可能な情報にないかもしれないので、
実際に見積もりとるのが確実です。 つまり、ここで答えられる範囲ではない可能性

④DBをOracle以外を選択した場合、MariaDBを考えています。
MariaDBはBtoBでの業務アプリの商用利用としては不向きでしょうか?

特に問題ないと思います。
利用目的よりも規模の方が影響するとは思うのですが、
MariaDBにもMariaDB Enterpriseという有償・商用版のエディションがあるので、
無償版ではなくこちらの利用を検討されても良いと思います。

投稿2022/10/10 00:52

編集2022/10/10 00:54
m.ts10806

総合スコア80854

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pom12345

2022/10/10 01:20 編集

とてもわかりやすいご説明ありがとうございます。 ①について 私自身、入門書からプログラミング言語を覚えるのに覚えられなく苦労した経験がありますので、 実戦形式でフレームワークから入ったほうがいろいろなことを覚えることができると考えています。 言語を覚えてもアプリが作れないことがありました、そのためフレームワークを利用する過程でJava言語の基礎を覚えたいと考えています。 他言語ではMVCフレームワークの動き、システムセキュリティについて大体を把握することができ、システムアーキテクチャの整理もすることができました。 (C#の標準フレームワークかつ新規プロジェクトということもありましたが、Javaよりは簡単だったのかもしれないです。) 作るのものはベースとなる、1画面でのCRUDができる、単純な画面と機能を作ろうと考えています。 Spring Bootが主に使われているものなんですね。組み方次第ではMVCにもできるんですね。 それならSpring MVCを使わなくてもよいかもしれません。 Spring MVCとRooについてどのようなものが作成されるのかは確認のみしておこうと思います。 ②について > コントローラ自体が画面を担当しているわけではありません。 → そう考えていますが、画面をどのタイミングで表示するのかなと思っていました。   C#ではIndexにGETしたときに、Conrtollerを経由してIndex.cshtmlを表示していました。   Springは違うのでしょうか? Springで良く用いられるテンプレートエンジンはThymeleafと呼ぶんですね。 Vue.jsと組み合わせてみるにしても実際に動かしてみる必要がありますね。 ③Oracleは見積を取らないと試算が難しいですね。了解いたしました。 ④そういえばMariaDBには商用のものがありましたね。 最初はMariaDBを使用して、商用時に選択すれば良さそうです。
m.ts10806

2022/10/10 01:20

>それならSpring MVCを使わなくてもよいかもしれません。 まぁでもWeb開発ならコントローラからVIEW呼び出すことになるので、そこにDBやビジネスロジックをどう絡めるかだけで、結局MVCを使っていることになります(内部的に) >> コントローラ自体が画面を担当しているわけではありません。 → そう考えていますが、画面をどのタイミングで表示するのかなと思っていました。 「ルーティング」「リクエストマッピング」という考え方があり、 アノテーション(調べてください)で指定されたURL、パラメータが指定したリクエストメソッドで取得されます。 コントローラがStringでVIEW名を返すことになっていて(各種パラメータを詰め込んだModelオブジェクトにVIEW名を返すやり方もあります。これはMVCのMとはちょっと違う役割です)、 VIEW側に書かれたコードのコンパイルが行われて画面表示となります。 なので、「どのタイミングか」を厳密に答えるのは難しいですが、 「コントローラでreturnしたタイミング」ですね。 WebAPIでは画面返さずにレスポンスJSONなどを返すのでまたreturnの型は変わりますが。
pom12345

2022/10/10 01:29 編集

Spring BootとSpring MVCの違いは難しいですね。 内部的にMVCになっているならいいとは思っています。 Spring Bootが無難ということは理解しました。両方のっていた参考書が売っていたので比較してみたいと思います。 Spring Bootにも標準のログイン認証機能が組まれているのでしょうか? (なかったらSpring MVCに組まれているような気はしますが) お聞きした内容から、 おそらくC#のMVCフレームワークと、JavaのSpringでの動きが似たようなものだと思われます。 Contllerでのreturnしたタイミングで、htmlなのかjsonなのかというのは同じなんだと思います。 しかし「ルーティング」「リクエストマッピング」は使うのに必要なんですね。 C#ではあまりルーティング(またはアノテーション)を書かなくても動いたんですが(ルーティングに初期のログインページしか設定しなかった) Javaでは違うのかもしれません。 (もしかしたら書かないと全然動かないとか。)
m.ts10806

2022/10/10 01:30

>Spring Bootにも標準のログイン認証機能が組まれているのでしょうか? ないです。 自前でモデル絡めて認証機能を作るか、 Spring Securityという別パッケージを利用することになります。 そこは要件次第ですね。 あと、経験があるから置き換えようとされているのかもしれませんが、 言語仕様も設計思想も.NetFrameworkとは全く違うので、無理に関連付けようとしようとせずに 頭を空にするくらいの感覚で学習されたほうが良いと思います。 元々がJavaはしっかりコードを書きたい人向けの言語だとも思うので、.Netのように「設定だけでいい感じに出来上がる」形にはなりにくいかなと。 もちろんその部分を補完してくれるのがフレームワークではあるのですが、 拡張性や自由度のためにはやはり自分でコードをガリガリ書いてく感じになりますからね。
pom12345

2022/10/10 01:55 編集

ありがとうございます。 わかりました。無理に関連付けようとはせず、頭を空にして学習しようと思います。 ORMやDIなどは似たイメージだとは思っていますが、実際の使い方は結構違うかもしれないとは思っています。 置き換える部分、一から覚える部分は区別して進めたいと思います。 .たしかに、Netはいかようになる部分もありますが、標準ではおかしな部分(特に自動で作られるテンプレートはそのままでは実際の用途では使えない)もあり、 しっかりしたコードが書けない部分もあるので、 認証基盤のカスタムは最小限にしつつ、基本のMVCではまとまらないので、 クリーンアーキテクチャを利用して、ほとんどコードをガリガリ書いていました。 そういう部分は応用がきくかもしれません。 Spring Securityですね。もしかしからMVCに入っているかどうかわかりませんが、実装方法は調べてみたいと思います。 サーバー側の言語は違ってもhtml, javascriptの部分は流用できる部分は多いと思います。
m.ts10806

2022/10/10 02:46

>Spring Securityですね。もしかしからMVCに入っているかどうかわかりませんが、実装方法は調べてみたいと思います。 そもそもですが、全部入りパッケージではなく、必要な機能を必要なだけ入れることになるので、基本はMavenもしくはGradleの設定ファイルに導入したいパッケージをMaven Repositoryなどから記述を引っ張ってきて導入することになります。 ※eclipseでSTS込みであればスタータープロジェストを作る段階でチェックしていくだけで設定ファイルに記述してくれます > html, javascriptの部分は流用できる部分は多いと思います。 .Net自体もう何年も触ってないので特有の書き方もあった気もしますが静的に書くならブラウザに表示されたあとの話なので同じですね。 ただ、Vueも使うのでしたらコンポーネント指向で書いていくことになるのでまた変わってはきますが。 便利な機能が増えるのは良いことですが、覚えること多いですね。
pom12345

2022/10/10 03:05 編集

なるほどです。 必要か機能を導入する必要があるんですね。 Mavenなのか、Gradleのどちらを使うのかの選択も難しいですし、eclipseを使うのか(VS Codeも使えるのか?)を選択するのも難しいです。 eclipseは10年前に使用したっきりでしたが、動作が重いイメージがありましたが、 もう一度使ってみる必要があります。 覚えることが多いです。 Vue.jsは.NETの環境ではjavascriptをモジュールとして動かす方法がわからなくて苦労したことがあります。(解決できなかったので、とりあえずsrcで読み込ませていた) 一部は子コンポーネントを使ってはいましたが。 Springだと動かせるといいですが。 とりあえずいろいろトライしてみようと思います。
m.ts10806

2022/10/10 03:05

以前は「低評価」という名前がついてたので同じ感覚で使う人は多いと思います。中には嫌がらせ目的で使う人も未だにいます。 本件については確か問題や課題のなさを指摘できなくはないですが、その指摘をするには質問者と同程度かそれ以上の経験は必要に思います。 強いてなら「何をどう調べたかの記載が不足してるかな」というところでしょうか。「調べた感」はあるのですが、参考資料がない部分。 まあ「他のユーザーが」と出ているということは一人しかやってないので、あらかた無視でいいと思います。 ちゃんとしてる人はコメントで具体的にどうなおしてほしいか書きますから。
pom12345

2022/10/10 03:05

m.ts10806さんの答えがベストアンサーなのですが、 この質問に一方的に意見を募る行為として、通達する方がいらっしゃいましたので、運営に連絡しました。
pom12345

2022/10/10 03:08 編集

ありがとうございます。 確かに何を調べたかの記載は不足しています。もう少し調べる必要がありました。 以後気を付けたいと思います。 m.ts10806さんの答えはとても勉強になったので感謝しています。
m.ts10806

2022/10/10 03:12

いえ、頑張ってください。 私も回答したりそのために調べたりすることで身になってる部分はあるので互助かなと。 先に書いたように私は本件に対して完答できる人ではありませんしね。 Rooについては以前持ってたSpringの参考書で構成図が出てたのを見たことがあっただけだったので。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問