ポンコツPdM

プロフィール画像

SIerでの開発・プロジェクト運営の経験をもとに、Java・Springの実装、設計・テスト、チーム開発で役立つ手順をまとめています。

    Spring Bootの@Validと@Validatedの違いを解説する記事のアイキャッチ。若手エンジニアがJava道場風の学習空間で入力チェックを学ぶイラスト。

    実装・エラー解決

    2026/10/15

    Spring Bootの@Validと@Validatedの違い|必須チェックが効かない原因と使い分け

    AIによる要約Spring Bootの@Validと@Validatedは、通常の入力検証とグループ指定で使い分けます。特に「@Validated(CreateGroup.class)へ変えたら@NotBlankが効かない」場合は、共通制約のDefaultグループが検証対象に含まれているかを確認してください。登録・更新の入力例と実行結果で違いを確かめます。 Spring Bootで入力チェックを調べると、@Validと@Validatedの両方が出てきます。 普通のFormやRequest DTOを検証す ...

    Spring BootのFormクラスとDTOの違いを解説する記事のアイキャッチ。若手エンジニアがJava道場風の学習空間でクラスの役割分担を学ぶイラスト。

    設計・テスト・レビュー

    2026/10/15

    Spring BootのFormとDTOの違い|Serviceへ渡すクラスを分ける判断

    先に結論FormをServiceへ直接渡してよいかは、画面の入力契約とServiceの業務処理の契約が同じかで判断します。画面専用項目・型・検証ルールがずれる、APIやバッチからも同じ処理を呼ぶなら、Service用のDTO/Commandへ変換します。小さい機能で前提が一致している場合まで、名前だけを変えたクラスを機械的に増やす必要はありません。 FormをそのままServiceへ渡すとレビューで指摘された。でもDTOを作っても同じフィールドをコピーするだけに見える。この記事は、FormとDTOを分ける ...

    Spring Bootの@ModelAttributeとFormに値が入る仕組みを解説する記事のアイキャッチ。若手エンジニアがJava道場風の学習空間でフォーム連携を学ぶイラスト。

    実装・エラー解決

    2026/10/15

    Spring Bootの@ModelAttributeとは?Formに値が入る仕組みと使い方

    AIによる要約@ModelAttributeは、リクエストパラメータをFormクラスへ詰めたり、画面へ渡すモデル属性として扱ったりするために使われます。Thymeleafのフォームでは、Form名、フィールド名、Controllerの引数名がずれると値が入らない原因になります。 Spring MVCの画面フォームを触ると、@ModelAttributeというアノテーションが出てきます。 サンプルでは何となく動きますが、現場で入力値が入らない、エラー時に画面へ戻れない、初期表示でFormがない、という問題が ...

    BindingResultの使い方と@Validの直後に置く理由を解説する記事のアイキャッチ。若手エンジニアがJava道場風の学習空間で入力チェック結果を学ぶイラスト。

    実装・エラー解決

    2026/10/15

    BindingResultの使い方と注意点|@Validの直後に置く理由

    AIによる要約BindingResultは、@Validで検出した入力エラーをControllerで受け取るための引数です。重要なのは、@Validを付けたFormの直後に置くことです。順番を間違えると、期待通りにエラー処理できません。 Spring MVCで入力チェックを実装すると、@Validと一緒にBindingResultが出てきます。 新人のうちは、サンプルコードを写して動かすことはできても、なぜその順番で書くのかまでは分かりにくいです。この記事では、現場でよくレビューされる注意点に絞って整理し ...

    @RequestParamが多すぎる時のController引数整理を解説する記事のアイキャッチ。若手エンジニアがJava道場風の学習空間で検索条件のまとめ方を学ぶイラスト。

    設計・テスト・レビュー

    2026/10/15

    @RequestParamが多すぎる時はどうする?Controller引数の整理方法

    AIによる要約@RequestParamが増えすぎたControllerは、読みづらく、修正漏れも起きやすくなります。検索条件や入力項目がひとまとまりなら、Formクラスや検索条件クラスへまとめることを検討します。ただし、何でもまとめればよいわけではなく、関連する値だけをまとめるのが大事です。 検索画面や一覧画面を作っていると、Controllerの引数に@RequestParamがどんどん増えることがあります。 最初は2個だった条件が、名前、ステータス、日付範囲、担当者、ページ番号と増えていき、気づくと ...

    Spring Bootの入力チェックをどこでやるかを解説する記事のアイキャッチ。若手エンジニアがJava道場風の学習空間でControllerとServiceの役割を学ぶイラスト。

    設計・テスト・レビュー

    2026/10/15

    Spring Bootで入力チェックが重複する|ControllerとServiceの分け方

    先に結論画面とAPIの両方に同じ重複チェックを書いているなら、メール重複などの業務判断をServiceへ集約します。必須・文字数・形式は各入口のForm/Requestで検証し、Controllerは結果をHTMLやJSONへ返します。同じ業務エラーでも、画面の項目エラーとAPIの409応答は分けて扱えます。 登録画面とAPIを作ったら、メール重複のif文が両方にできた。Serviceへ移すと、今度は例外が画面へ表示されず500になる。この記事は、そのような入力チェックの重複とエラー応答の分け方を整理しま ...

    Spring Bootの@RequestBodyでJSONを受け取る使い方を解説する記事のアイキャッチ。若手エンジニアがJava道場風の学習空間でAPI入力を学ぶイラスト。

    実装・エラー解決

    2026/10/15

    Spring Bootの@RequestBodyとは?JSONを受け取る使い方と注意点

    AIによる要約@RequestBodyは、HTTPリクエストのボディに入っているJSONをJavaオブジェクトへ変換して受け取るために使います。クエリ文字列やHTMLフォームを受けるためのものではありません。APIの入口ではRequest DTOとセットで考えると安全です。 Spring BootでAPIを作ると、@RequestBodyがよく出てきます。 画面フォーム中心の開発から入った人は、@RequestParamやFormクラスとの違いが分からず、JSONがnullになる、400エラーになる、とい ...

    Spring BootのServiceに業務ロジックを書く理由を解説する記事のアイキャッチ。若手エンジニアがJava道場風の学習空間でServiceの責務を学ぶイラスト。

    設計・テスト・レビュー

    2026/10/15

    Spring BootのServiceに業務ロジックを書く理由

    AIによる要約Spring BootのServiceは、業務処理やユースケースを表す中心的な場所です。Controllerに業務ロジックを書くと入口ごとに処理が散らばります。Serviceに寄せることで、再利用しやすく、テストしやすく、トランザクション境界も考えやすくなります。 Spring Bootの現場でよく言われるのが「業務ロジックはServiceに書きましょう」という話です。 ただ、初学者にとっては、Controllerに書いても動くのに、なぜServiceへ移す必要があるのか分かりにくいかもしれ ...

    設計・テスト・レビュー

    2026/10/15

    Spring Bootの@Transactionalはどこに付ける?

    AIによる要約Spring Bootの@Transactionalは、基本的にRepositoryではなく、業務処理のまとまりを表すServiceメソッドに付けることが多いです。どこからどこまでを1つの更新単位にするかを決めるためのアノテーションであり、何となく付けるものではありません。 Spring BootでDB更新を扱うと、@Transactionalというアノテーションが出てきます。 初学者は、とりあえずRepositoryや更新メソッドに付ければよいと考えがちですが、現場では「どこからどこまでを ...

    Spring BootのDTO変換はどこでやるべきかを解説する記事のアイキャッチ。若手エンジニアがJava道場風の学習空間でDTOとEntityの変換を学ぶイラスト。

    設計・テスト・レビュー

    2026/10/15

    Spring BootのDTO変換はどこでやるべきか

    AIによる要約Spring BootのDTO変換は、必ずController、必ずServiceと決まるものではありません。大事なのは、Entityを外へ直接出さず、画面/API用の形に変換することです。単純な変換はControllerやService、複雑な変換はMapperへ分けると読みやすくなります。 Spring Bootの現場では、Entityをそのまま画面やAPIに返さず、DTOへ変換することが多いです。 しかし、DTO変換をどこに書くかは初学者が迷いやすいポイントです。Controllerに ...