Skip to content

議論 DOMAのsqlのカラム指定について

orekyuu edited this page Sep 20, 2018 · 1 revision
orekyuu [23:57]
joinした結果をEntityにマッピングするならワイルドカードは死だけど、単一テーブルなら変更の面倒くささのほうが強い気がする

noko_k [23:59]
でもその変更って頻繁にするものじゃないし、忘れた頃にその辺修正し忘れて実行時エラーのリスクを取るよりか開発時のタイミングで明らかにおかしい動作をする(そもそも追加したカラムを取れないとか)方が気付けるタイミングが早くて嬉しいと思う

noko_k [00:01]
インフラに近い層の変更は忘れた頃にやって来るので、その辺ってどうかな

orekyuu [00:01]
どゆことじゃろ

noko_k [00:02]
今後SQLとかが増えたときも、修正漏れとかって起きないかな

orekyuu [00:02]
そのへんはテスト書くしか無いのかなーって思ってる

noko_k [00:02]
カラム指定したら少しマシにならない?
結局カラム変更は色んな所修正しなくちゃいけないんだけど、そのときの時間的負荷ってカラムを指定することで調査をしたりする手間減らないかな?という話
このリポジトリは手本となることも目標としていたはずなので、別人が運用しても問題ないというレベル感で私は考えたい

orekyuu [00:05]
カラム増えた時にテスト落ちてくれるのかな?

noko_k [00:05]
いや、テストは落ちないと思うよ

orekyuu [00:05]
だよね

noko_k [00:05]
なので、テストでのカバーは不可能
調査をするよね
影響が無いか
追加だとあれだな、型変更で考えよう

orekyuu [00:06]
まず前提として、@TableなEntityは全カラムをマッピングするものとして考えてるんだけど
そこの認識って合ってるかな

noko_k [00:07]
うむ、なので一応微妙かなとは思ってるんだけど、
運用考えるとそうとも言えないんじゃねって思ってるのであえてコメントをした感じ

orekyuu [00:09]
多分だけど、結局全カラムマッピングするなら@Tableなものはワイルドカードで問題ない認識(むしろ追加漏れのほうがリスク高い気がする

noko_k [00:09]
前提として、一般的な考え方だと、ワイルドカードによるカラム選択はアンチパターンと言われているし、実際アンチパターンだと思っている。

それが、Entityで結局問題ないからというのが今下す決断として正しいのかなと思って
Entityへの追加漏れなら、追加したカラムをわざわざ生JDBCとかでアクセスするアホみたいなことをしない限り取れないので開発タイミングで気づけるでしょう?
と、思ってるんだよね
実際わからんよ?
私はDOMAでの普通がまずわからんし (編集済み)

orekyuu [00:11]
わからんがわかる

noko_k [00:13]
あーでもEntityと物理的なSQLファイルって必ず1対1?

orekyuu [00:13]
EntityにカラムAがない and DBにカラムAがある => 実行時例外が投げられる
EntityにカラムAがある and DBにカラムAがある => 正常
EntityにカラムAがある and DBにカラムAがない => nullがはいる(?)
EntityにカラムAがない and DBにカラムAがない => 正常
EntityとSQLファイルは1:多

noko_k [00:14]
あーだよね

orekyuu [00:15]
ワイルドカードで取りすぎると例外になるぽい

noko_k [00:16]
私の主張としては、
カラム追加はSQLを修正することが明確になる→そのSQLを参照しているエンティティのみを調査して修正すれば良い
カラムの型変更は多くの場合SQLの修正は無いものの文字列的な検索がしやすい為調査漏れのリスクが減らせる→修正がスムーズになる
と思ってて。
EntityとSQLが1対1なら、単なる二重管理なのでワイルドカードでも良かったと思うけど…

orekyuu [00:20]
カラム追加に関してはメリットがあまりわからないけど、型変更に関してはTASHIKANIという感じ (編集済み)

noko_k [00:20]
どっちに着地させよう?

orekyuu [00:21]
大体悩んだときはあとから後戻りしやすい方を取るのが良いと思っていて
ワイルドカード -> カラム指定よりはカラム指定->ワイルドカードにするほうが心理的障壁が低いと思うので、とりあえずカラム指定で良いと思う
微妙だなって思ったらワイルドカードに変えることもできるし

noko_k [00:23]
んじゃ一旦カラム指定で行こう。なんかアレになったらワイルドカードにしよう

orekyuu [00:23]
LGTM
Clone this wiki locally