Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

S2JDBCについてもう少し言っておくか

ヨシオリがDISられてるのは無視するとしても。

生産性

S2JDBCに期待されてるような人もいるけど実は言うほど生産性ってあがらないんじゃないかなと思う。
S2JDBCのドキュメントにも書いてあるんだけどあくまで"JPAに比べて"だから。
JPAは世間でなんて言われてるか知らないけど僕はクソだと思ってる。
なので"JPAに比べて"とか言われるとそりゃ生産性あがるわ!って話なのです。
ひがさんクラスの人がが低いところに標準を合わせてどうすんだと。

流れるようなインターフェイス

こいつがウリのようだけどここにも少し気になるところがある。
流れるようなので思考を中断せず云々みたいな事があるようだけどホントにそうかな?
気にしてるのは"where"とかってメソッドでこれってバリバリSQL意識してるからこの名前なんだろうなって気がする。
って考えるとここで言ってる思考ってのは実は「SQLを考える」ってなんじゃないか気がするのですよ。
つまりSQLを頭の中で組み立てる→javaのコードに置き換える→コードを書くという手順になる。
S2DaoではそのSQLをそのままSQLファイルに書いて終わりなのでステップ的に1段階増えてる気がする。
思考を中断とか云々言うときの思考って何を考えることなんだろうか?

ついでにヨシオリがカス扱いされてる所でコード補完の話が出てたけど、S2JDBCは文字列で書く部分が幾らかあるんじゃないかな?
補完が云々っていっても

  • from()
  • join()
  • where()
  • orderBy()
  • limit()
  • offset()

ぐらいなものでそれが補完出来るからといっても...という感じは否めない。
サンプルのwhereの中も文字列で"in (?, ?)"とかって書いてあるし。
これも補完できるの?って疑問に思う。
order by などの中身も文字列だし、そこでスペルミスしたら結局終わりじゃない?
このスペルミスなどが発見されるまでには
コンパイル→実行→なんかエラーが出る→なんのエラーか特定する→修正
のように「実行してみないとわかんね」という不確定な部分が出来てしまうのではないか。
S2DaoのようにSQLを書くタイプであれば事前にそれをSQLエディタなので実行することができる。
不確定要素による出戻りは実は他人にも影響が出る。
社員A「あれー?せんぱーい」
社員B「どうしたの」
社員A「いやー自分ーよくわかんないッスけどー。なんかーエラー出るんすよ」
社員B「どれどれ」
社員A「いやー自分完璧ッスからー」
社員B「ログは見たの?」
社員A「ログってなんすか?」
社員B「ログに実行されてるSQL出てない?」
社員A「いやーログってー」
社員B「チャカついてないで早くログ出せよ!ハゲ!」
社員A「そんなケンケン言わなくても...」
社員B「うーん、なんだろうなパッと見わからんな。出力されてるSQLをピーコしてSQLだけで実行してみ?」
社員A「あい」
社員A「あ。なんかエラーッス。SQL単体でもエラーッス」
社員B「スペルミスなんじゃね?」
社員A「スペルミスってなんすか?」
社員B「スペルミスだよ」
社員A「いやー自分ー完璧ッスからー」
社員B「.....」
社員A「いやー自分ーVBならわからんすけどー」
社員B「チャカついてないで早くスペルミス直せよ!ハゲ!」
というように社員Aの修正に社員Bの時間まで取られてしまう。
もちろん明示的に書いてあるので修正なんて秒単位で修正できる点はいいと思う。

ハマリポイントって普通に大丈夫だろうと思うような所でエラーが出るからハマリポイントなわけで。
特に文字列系でスペルミスなんてうーんってなりやすい典型的な所だと思うのでそいつを防ぐ手立てがあった方が良かったように思える。

機能

sqlalchemyとか知ってるのか知らないのかわからないけどこれで足りうるか?って所が気になる。
もちろん複雑な場合はSQLを書いて回避する機構もあるので良いのかも知れないけど。
今はシンプルかも知れないがこの先はどうなるかわからない。
今後、要望次第で複雑怪奇にならないとも限らない。
個人的にはsqlalchemyを知っちゃってるので「後発なんだからもっとさー」という感じはある。

以上、みんなのアイドルよねむらでした。