0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ORMの落とし穴

0
Posted at

MyBatisでドツボにはまった経験があるので、備忘録として残します。

初心者の2か月前の記憶なのでかなり曖昧な所もありますので、抽象的すぎるかもしれません。

環境

  • Windows 11
  • Java 17
  • Sprint boot
  • PostgreSQL
  • MyBatis
  • Postman

設計:レイヤードアーキテクチャ

結論:MyBatisのxmlファイルの誤字は検出されにくい

APIを作成する過程で、動作をチェックしようと起動しようとしても、エラーが出た。

なかなか原因を見つけられず1時間くらい悪戦苦闘したが、結局、マッパーのxmlファイルのタグの属性(propertyなど)が1文字だけ誤字があったことが原因だった。

なぜ見つけにくかったのか

VScode環境では、javaファイルなどは誤字によるコンパイルエラーがある場合ファイル名自体が赤色となり知らせてもらえるため、1文字単位の誤字でも比較的容易に見つけやすい。
しかし、今回MyBatisのMapper.xmlファイルにて、タグの属性名に誤字があった場合VScode自体は反応しなかった。
サーバー起動時にエラーは出るが、どの付近でエラーとなっているかまでは特定がしずらい。
エラーの要因を様々調べて時間を溶かしたが見つけられずかなり困ったが、ふとxmlファイルのタグに目をやったらたまたま誤字に気づくことができて、解決できた。

エラーの特定が全然できない場合は、案外スペルミスの可能性が多い?

これはありそうな気がする。
ロジックもおかしくない。変数名も引数もメソッドもおかしくなくデータも正常に送れている。そんなときはマッパーのxmlの方のスペルミスを疑ってみるのは有効かもしれない。
特定するための範囲をなるべく絞るために、動作のチェックはなるべく頻繁にするに越したことはないが、
APIのリクエスト機能を1個つくるのに、form, DTO, service, mapper, mapper.xmlなど、一通りのファイルを作成しなくてはいけないので、なかなか難しい。

対策

手入力をなるべく避ける

コピペできる所は必ずコピペ。結局これが最善だなと思った。なんとなくマウスに持ち替えるのが面倒になったり、タイピングしたい気分だったり、「このくらいなら手入力のが早い」と手入力をしてしまうと、後で泣きを見るかもしれない。

ツールの導入

誤字や意味のおかしい命名などを自動検出して強調してくれるVScode拡張ツールなどを導入した気がする。
貴重な時間を無駄にしないためにも、機械にできることは機械に任せてしまった方がよい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?