- HOME >
- ポンコツPdM
ポンコツPdM

独立系のSIerに務めるSE,PM。 仕事の上で得たIT関連やプロジェクト運営関連の知識を書きます。 使用技術:Java,ウェブ関連全般,データベース全般 (どれも広く浅く)
学習と現場をつなぐ
AIによる要約ログレベルはメッセージの重要そうな雰囲気ではなく、運用時にどう扱うかで決めます。INFOは正常な業務・処理の主要イベント、WARNは処理を継続できるが確認が必要な状態、ERRORは要求やジョブが失敗し対応が必要な状態です。DEBUG・TRACEは調査用の詳細に使います。例外は最終的に扱う境界で一度だけ記録し、logger.error("...", e)のようにThrowableを渡します。パスワードや個人情報はどのレベルにも出しません。 Javaの現場ではSLF4JとLogbackなどを使い ...
AIによる要約スタックトレースは先頭の例外だけで判断せず、Caused byでつながる原因例外を下へ追います。ただし最下段の例外名だけを答えにせず、その原因ブロック内で最初に現れる自作コードのファイル名・行番号を確認します。... 20 moreは省略された共通フレーム、Suppressedは主例外とは別に抑制された例外です。調査結果は「現象・原因例外・自作コードの行・入力条件」をセットで共有します。 Javaの障害調査でスタックトレースを開くと、Spring、Hibernate、Tomcatなどの行が大 ...
AIによる要約MockMvcのPOSTが403なら、Controllerへ届く前にSpring Securityが拒否している可能性が高く、認証・権限・CSRFを確認します。CSRF保護が有効ならテストリクエストへ.with(csrf())を付けます。400なら、Formのparam名・型・Validation、またはJSONのContent-Type・構文・項目型を確認します。ステータスを無理に変更せず、andDo(print())とresolved exceptionで失敗した層を特定します。 Moc ...
AIによる要約N+1問題は、一覧を取得する1本のSQLに加え、各行の関連Entityを読むたびに追加SQLが発行される状態です。件数が少ない開発環境では気づきにくく、本番データで急に遅くなります。SQLログで「似たSELECTがIDを変えて繰り返されていないか」を確認し、その画面で必要な関連だけをJOIN FETCH、@EntityGraph、DTO projectionなどでまとめて取得します。すべてをEAGERへ変える対策は避けます。 Spring Data JPAでは、Entity同士の関連をJav ...
AIによる要約@Serviceと@Repositoryは、どちらも@Componentを土台にしたステレオタイプで、コンポーネントスキャンによりBean登録されます。違いは主に役割の表現です。業務処理はService、DBなどの永続化アクセスはRepository、どちらにも当てはまらない共通部品はComponentを基本にします。Repositoryにはデータアクセス例外変換の対象になる意味もあるため、全部をComponentへ統一しない方が設計意図を伝えられます。 Springのクラスへ@Compon ...
AIによる要約@Controllerは主にThymeleafなどの画面名を返し、@RestControllerは戻り値をレスポンス本文へ書き込みます。RestControllerはControllerとResponseBodyを組み合わせたアノテーションです。HTML画面とJSON APIをクラス単位で分け、HTTPステータスやヘッダーも返したいAPIではResponseEntityを使うと、戻り値の意図が分かりやすくなります。 Spring BootのWeb開発では、@Controllerと@RestC ...
AIによる要約JPAでは、トランザクション内で取得した管理対象Entityを変更すると、コミット時のダーティチェックでUPDATEされます。更新されない場合は、Serviceに有効な@Transactionalがあるか、変更したEntityが管理対象か、readOnlyになっていないか、例外でロールバックしていないかを確認します。saveを追加して隠す前に、取得から変更、コミットまでが同じトランザクションかを追うことが重要です。 Spring Data JPAを使い始めると、Repositoryで取得した ...
AIによる要約バリデーションメッセージが画面へ出ないときは、まずBindingResultにエラーが入っているかを確認します。エラーがあるのに表示されない場合は、Formの属性名、th:object、th:field、th:errorsの項目名を揃えます。メッセージキー、配置ファイル、リダイレクトの有無も確認し、Validationが動かない問題と画面表示だけの問題を分けて調査することが重要です。 Spring BootとThymeleafの入力画面では、Formに@NotBlankを付けただけではメッセ ...
AIによる要約Spring Bootの400 Bad Requestは、Controllerの処理へ入る前にリクエストの読み取りが失敗したときによく発生します。主な原因は必須パラメータ不足、数値や日付への型変換失敗、壊れたJSON、入力チェックエラーです。闇雲にアノテーションを追加せず、HTTPメソッド、URL、Content-Type、実際の送信値、例外名の順に確認すると切り分けやすくなります。 400 Bad Requestは「サーバーへ到達していない」という意味ではありません。Spring MVCま ...
AIによる要約BigDecimal.equalsは数値だけでなく小数点以下の桁数を表すscaleも比較するため、0.0と0.00はfalseになります。金額などを数値として比較するならcompareToの結果が0かを確認します。ただし、HashSetやHashMapはequalsとhashCodeを使うため、compareToへ置き換えればすべて解決するわけではありません。入力・保存・表示のどこで桁数を統一するかを業務ルールとして決めることが重要です。 販売管理や請求、会計連携などの業務システムでは、小数 ...