アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人はmoriwaka -- Anonymous Coward
SQLは人が手で入力して使うツール (スコア:1)
コードにSQLの断片を埋め込んで、パラメータを文字列連結して、ランタイムでコードがSQLを生成するのは、全面的にやめるべきだと思います。
メンテナンス性の為や手抜きのために複雑な構文解析機を通して検索ロジックを実行時に機械語へビルドしている事になるわけですが、安全なサービスの構築のためにはロジックは静的に用意されているべきだと思います。
上に ORM をのっけて蓋をするのでもいいんですが、SQLという文字列でロジックをDBSに渡すというのは、無駄が多すぎる気がしてなりません。
良い解決策をもっているわけではないのですが…
Re:SQLは人が手で入力して使うツール (スコア:1)
1. とりあえずJava言語を覚えさす
2. とりあえずSQLを覚えさす
3. JDBCでJava→SQL→DBというルートが可能であることを示す
...ここでやめちゃうと、平気でSQLインジェクション非対応のアプリ書いちゃいますよね。大概この後に
4. PreparedStatementやCallableStatement(ストアードプロシジャ)もあるよー
というのは話があるんだけど、実効上そんなに差がないよってことだと、ひとまず最初に覚えたやり方をずっと引きずっちゃったりするわけで。
つーわけで個人的には
5. セキュリティとの兼ね合い上、Statementはヤバい(場合がある)
ってのを話すようにしてたんですが、どれほど効果があったかな...
これから教える人は、
- 生JDBCはdark side forceである
- 標準化されたORマッピングを採択すべき
ってのをきちんと説明してあげてほしいですね。