ポンコツPdM

プロフィール画像

独立系のSIerに務めるSE,PM。 仕事の上で得たIT関連やプロジェクト運営関連の知識を書きます。 使用技術:Java,ウェブ関連全般,データベース全般 (どれも広く浅く)

Javaのログレベルの使い分けを解説する記事のアイキャッチ。Java道場風の空間で若手エンジニアがINFO、WARN、ERRORの基準を学ぶイラスト。

開発現場メモ

2026/7/24

Javaのログレベルはどう使い分ける?INFO・WARN・ERRORの現場ルール

AIによる要約ログレベルはメッセージの重要そうな雰囲気ではなく、運用時にどう扱うかで決めます。INFOは正常な業務・処理の主要イベント、WARNは処理を継続できるが確認が必要な状態、ERRORは要求やジョブが失敗し対応が必要な状態です。DEBUG・TRACEは調査用の詳細に使います。例外は最終的に扱う境界で一度だけ記録し、logger.error("...", e)のようにThrowableを渡します。パスワードや個人情報はどのレベルにも出しません。 Javaの現場ではSLF4JとLogbackなどを使い ...

JavaのスタックトレースとCaused byの読み方を解説する記事のアイキャッチ。Java道場風の空間で若手エンジニアが例外の根本原因を追うイラスト。

開発現場メモ

2026/7/23

JavaのスタックトレースでCaused byはどこまで追う?根本原因の見つけ方

AIによる要約スタックトレースは先頭の例外だけで判断せず、Caused byでつながる原因例外を下へ追います。ただし最下段の例外名だけを答えにせず、その原因ブロック内で最初に現れる自作コードのファイル名・行番号を確認します。... 20 moreは省略された共通フレーム、Suppressedは主例外とは別に抑制された例外です。調査結果は「現象・原因例外・自作コードの行・入力条件」をセットで共有します。 Javaの障害調査でスタックトレースを開くと、Spring、Hibernate、Tomcatなどの行が大 ...

Spring BootのMockMvcで403と400になる原因を解説する記事のアイキャッチ。Java道場風の空間で若手エンジニアがCSRFとPOSTテストを調査するイラスト。

Spring

2026/7/24

Spring BootのMockMvcでPOSTが403・400になる原因|CSRF・Form・JSONの確認順

AIによる要約MockMvcのPOSTが403なら、Controllerへ届く前にSpring Securityが拒否している可能性が高く、認証・権限・CSRFを確認します。CSRF保護が有効ならテストリクエストへ.with(csrf())を付けます。400なら、Formのparam名・型・Validation、またはJSONのContent-Type・構文・項目型を確認します。ステータスを無理に変更せず、andDo(print())とresolved exceptionで失敗した層を特定します。 Moc ...

Spring Data JPAのN+1問題を解説する記事のアイキャッチ。Java道場風の空間で若手エンジニアが大量SQLとJOINを調査するイラスト。

Spring

2026/7/24

Spring Data JPAでSQLが大量に発行される原因|N+1問題の確認方法と対策

AIによる要約N+1問題は、一覧を取得する1本のSQLに加え、各行の関連Entityを読むたびに追加SQLが発行される状態です。件数が少ない開発環境では気づきにくく、本番データで急に遅くなります。SQLログで「似たSELECTがIDを変えて繰り返されていないか」を確認し、その画面で必要な関連だけをJOIN FETCH、@EntityGraph、DTO projectionなどでまとめて取得します。すべてをEAGERへ変える対策は避けます。 Spring Data JPAでは、Entity同士の関連をJav ...

SpringのComponent、Service、Repositoryの違いを解説する記事のアイキャッチ。Java道場風の空間で若手エンジニアがBeanの役割分担を学ぶイラスト。

Spring

2026/7/24

Springの@Component・@Service・@Repositoryの違い|どれを付けるべき?

AIによる要約@Serviceと@Repositoryは、どちらも@Componentを土台にしたステレオタイプで、コンポーネントスキャンによりBean登録されます。違いは主に役割の表現です。業務処理はService、DBなどの永続化アクセスはRepository、どちらにも当てはまらない共通部品はComponentを基本にします。Repositoryにはデータアクセス例外変換の対象になる意味もあるため、全部をComponentへ統一しない方が設計意図を伝えられます。 Springのクラスへ@Compon ...

Spring BootのControllerとRestControllerの違いを解説する記事のアイキャッチ。Java道場風の空間で若手エンジニアがHTML画面とJSON APIを学ぶイラスト。

Spring

2026/7/24

Spring Bootの@Controllerと@RestControllerの違い|画面とJSONで使い分ける

AIによる要約@Controllerは主にThymeleafなどの画面名を返し、@RestControllerは戻り値をレスポンス本文へ書き込みます。RestControllerはControllerとResponseBodyを組み合わせたアノテーションです。HTML画面とJSON APIをクラス単位で分け、HTTPステータスやヘッダーも返したいAPIではResponseEntityを使うと、戻り値の意図が分かりやすくなります。 Spring BootのWeb開発では、@Controllerと@RestC ...

Spring Data JPAでEntityが更新されない原因を解説する記事のアイキャッチ。Java道場風の空間で若手エンジニアがトランザクションとUPDATEを学ぶイラスト。

Spring

2026/7/23

Spring Data JPAでEntityを変更しても更新されない原因|@Transactionalとダーティチェック

AIによる要約JPAでは、トランザクション内で取得した管理対象Entityを変更すると、コミット時のダーティチェックでUPDATEされます。更新されない場合は、Serviceに有効な@Transactionalがあるか、変更したEntityが管理対象か、readOnlyになっていないか、例外でロールバックしていないかを確認します。saveを追加して隠す前に、取得から変更、コミットまでが同じトランザクションかを追うことが重要です。 Spring Data JPAを使い始めると、Repositoryで取得した ...

Spring BootでValidationメッセージが表示されない原因を解説する記事のアイキャッチ。Java道場風の空間で若手エンジニアがth:errorsを確認するイラスト。

Spring

2026/7/24

Spring Bootでバリデーションメッセージが表示されない原因|th:errorsとmessages.propertiesを確認

AIによる要約バリデーションメッセージが画面へ出ないときは、まずBindingResultにエラーが入っているかを確認します。エラーがあるのに表示されない場合は、Formの属性名、th:object、th:field、th:errorsの項目名を揃えます。メッセージキー、配置ファイル、リダイレクトの有無も確認し、Validationが動かない問題と画面表示だけの問題を分けて調査することが重要です。 Spring BootとThymeleafの入力画面では、Formに@NotBlankを付けただけではメッセ ...

Spring Bootの400 Bad Requestを切り分ける記事のアイキャッチ。Java道場風の空間で若手エンジニアがControllerとJSONのエラーを調査するイラスト。

Spring

2026/7/24

Spring Bootで400 Bad Requestになる原因|Controllerに値が入らない時の確認順

AIによる要約Spring Bootの400 Bad Requestは、Controllerの処理へ入る前にリクエストの読み取りが失敗したときによく発生します。主な原因は必須パラメータ不足、数値や日付への型変換失敗、壊れたJSON、入力チェックエラーです。闇雲にアノテーションを追加せず、HTTPメソッド、URL、Content-Type、実際の送信値、例外名の順に確認すると切り分けやすくなります。 400 Bad Requestは「サーバーへ到達していない」という意味ではありません。Spring MVCま ...

JavaのBigDecimalで0.0と0.00を比較する方法を解説する記事のアイキャッチ。Java道場風の空間で若手エンジニアがequalsとcompareToの違いを学ぶイラスト。

Java

2026/7/24

JavaのBigDecimalでequalsがfalseになる理由|0.0と0.00はcompareToで比較する?

AIによる要約BigDecimal.equalsは数値だけでなく小数点以下の桁数を表すscaleも比較するため、0.0と0.00はfalseになります。金額などを数値として比較するならcompareToの結果が0かを確認します。ただし、HashSetやHashMapはequalsとhashCodeを使うため、compareToへ置き換えればすべて解決するわけではありません。入力・保存・表示のどこで桁数を統一するかを業務ルールとして決めることが重要です。 販売管理や請求、会計連携などの業務システムでは、小数 ...