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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

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

Spring

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

Spring Boot

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

Q&A

2回答

9862閲覧

EntityとFormを兼務していいの?

sanezane

総合スコア91

Java

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

Spring

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

Spring Boot

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

0グッド

0クリップ

投稿2019/02/14 14:13

簡単なCRUD操作ができるWebアプリ(ポートフォリオ)を作成しております。
ごちゃごちゃ書いていますが、最終的にはEntityアノテーションを積極的に使っていいのか、が聞きたいです。
そう思った経緯が以下に書いてありますが、文字が多くなってしまい、あまり上手にまとめられなかったので結論だけいただくような回答でもありがたいです。

プロジェクトの構成について考えております。

//プロジェクトの構成を考え中(src) □app ┗controller //パスを受け取り様々な制御するよ ┗form //フォーム情報の受け渡し □domain ┗entity //データ(テーブル) ┗repository //DBからデータをとるよ ┗service //リポジトリのメソッドを使ってCRUDしたりするよ □utils //共通 MainController.java//メイン WebSecurityConfig.java//認証だよ

EntityアノテーションをつけるとEntityクラスとして認識するということでテーブルの名前なんかもつけられてテーブルと連携できるワケですが、もし、Form情報とEntityクラスの作りが全く同じもしくは類似している場合、Entityクラスをフォーム情報の受け渡し用として兼務しても良いのでしょうか?
それとも同じような内容だけど別のクラスを~Formとして作成することになるのでしょうか?

■Form,Model,Entity,DTOと似たようなモノが多く、使い所に困ります。一応、【〜違い】でググったりしました。
大きなモノを作流ときはメンテナンス性を考えてDTOとDAOで管理するような事が書いてありました。
■githubなどに掲載せれているソースコードにはEntityアノテーションを使ったものが少ないように感じます。
参考にしたプロジェクト
上記のリンクのプロジェクトなんかは~Formと名前をつけてSerializableを実装してentityとformを兼ねている?ように見えます。以下実装例Entityアノテーションはついていない。

java

1@Setter 2@Getter 3public class LoginForm implements Serializable { 4 5 private static final long serialVersionUID = 7593564324192730932L; 6 7 @NotEmpty 8 String loginId; 9 10 @NotEmpty 11 String password; 12 13 // ログインしたままにするか 14 boolean rememberMe; 15}

Springのアーキテクト的に考えた場合と他の言語のFWを扱うときのことを考えると、敢えてアノテーションを使わずに作る方が後々他の言語を扱うときに入りやすいのかなと思ったり.....

話がまとまっておらず恐縮ですが、今回はとりあえずentityとして作成した(Entityアノテーションつきの)クラスをformとしてバリデーションなどの時の指定に使ってもいいのか。という質問内容でした。

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

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

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

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

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

guest

回答2

0

Domaは JPAじゃないので @Entity がないだけでは?

入力エラー後に誤った値を保持する関係上、Formでは全て文字列(String)にすることが多いかと。

またパスワード・メールアドレスのように再入力(確認入力)のある項目もEntityをそのまま使った場合扱いづらいです。

投稿2019/02/14 15:52

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

sanezane

2019/02/16 15:08

ありがとうございます。 確かにFormは全てStringでした。確認用パスワードをチェックするメソッドなどもFormを使うという事ですね。
guest

0

これはいろいろな意見が出るところですが、Form(Bean)、Entity,DTOは分けた方が良いと思います。
StrutsやSpringの場合はMVCベースでとらえ、ViewとDB(テーブル)を分けて置いた方が後の変更に強いというメリットがあるからです。
(テーブル構造が変わったり、表示する内容が変わったときに、変更するコード量が減ったり、コードを変更する影響を局所的にとどめられる)

投稿2019/02/14 15:39

Simb

総合スコア118

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

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

sanezane

2019/02/16 15:02

ありがとうございます。 DTOはテーブルとのマッピング,Formはアプリ側の情報というわけ方をするのが普通という事ですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問