[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 12/16 17:55 / Filesize : 176 KB / Number-of Response : 928
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

SQL文をハードコーディングするやつはとっとと氏ね



1 名前:仕様書無しさん [2007/02/07(水) 01:32:56 ]
って思う

448 名前:仕様書無しさん mailto:sage [2007/03/02(金) 15:54:15 ]
JSP+Servlet+JDBC最強だよな

449 名前:仕様書無しさん mailto:sage [2007/03/02(金) 16:09:56 ]
>>448
あまりに強すぎて、討ち死に続出。

450 名前:仕様書無しさん [2007/03/02(金) 17:16:12 ]
JSPよりServletの方がいいだろ

451 名前:仕様書無しさん mailto:sage [2007/03/02(金) 20:23:14 ]
詳細テーブルと親テーブルのレコードが1:nの奴にupdateするときとか便利だよね<ストアド

452 名前:仕様書無しさん mailto:sage [2007/03/03(土) 00:05:23 ]
>>448-450
これだからJava厨はきらいなんだ。。。


453 名前:仕様書無しさん mailto:sage [2007/03/03(土) 00:11:30 ]
>>452
ごめんな。。

454 名前:仕様書無しさん mailto:sage [2007/03/03(土) 00:14:58 ]
>>453
あ、いや、こっちこそ。。

455 名前:仕様書無しさん mailto:sage [2007/03/04(日) 00:33:01 ]
ストアドは賛否両論あるとして、
トリガって実務で使ってるか?

俺が趣味でやってる会員制サイト(エロではない)(SQLServer2005)作るときに、
「そういや実務でトリガって使ったこと無いな」と思って、試しに
トリガ使ってみたら便利だった。

退会処理はマスターの該当ID消すだけで、他のテーブルに持ってる
そいつのレコードが全消しとか。


456 名前:仕様書無しさん mailto:sage [2007/03/04(日) 00:41:50 ]
>>455
つ 参照整合性



457 名前:仕様書無しさん mailto:sage [2007/03/04(日) 02:12:14 ]
>>455
使う。便利だ。似たような用途だ。
例えば、新規取引先を登録したときなど。
問題は、あんまり知っている奴が多くないので、メンテで苦労することか。

458 名前:仕様書無しさん mailto:sage [2007/03/04(日) 08:24:09 ]
>>455
別アプリと連携させるときに使うよ。
マスタ情報が更新されたら渡す、みたいな。

削除は削除フラグ立てることが多いな。
場合によるけど。

459 名前:仕様書無しさん mailto:sage [2007/03/04(日) 10:39:24 ]
>>455
俺の経験ではトリガ使わずに、アプリ側で制御するね。
理由は不明。なんでだろうね。

460 名前:仕様書無しさん mailto:sage [2007/03/04(日) 10:57:00 ]
>>459
トリガは便利だが、使い方を間違えると収拾付かなくなるし、
ケースバイ・ケースだろうな。

基本の味付けはアプリでして、調味料的にトリガにすると丁度よい。

しかし、アプリで行うとハードコーディングという問題が発生し、スレタイへ戻る。

461 名前:仕様書無しさん mailto:sage [2007/03/04(日) 12:33:12 ]
トリガからストアドを呼び出してスパゲッティ

462 名前:仕様書無しさん mailto:sage [2007/03/04(日) 18:17:00 ]
極力ルールはアプリ側に置きたいので使わない

463 名前:仕様書無しさん mailto:sage [2007/03/04(日) 19:44:14 ]
ロジックの分離イクナイ

464 名前:仕様書無しさん mailto:sage [2007/03/04(日) 20:32:17 ]
トリガは便利だけど、知っている奴が少ないのが難点だな。

(DB2/400は)テーブルをコピーしてもトリガはコピーされないって点を
忘れると悲劇が待ってるし、仕方ないと思うが更新処理のパフォーマンスが
落ちる場合もあるので、使う時は気をつけている。

ロジックの分離と言うかさりげなくアクセスログを取っているって
使い方が多いな。
「このフィールドを更新したの誰だよ?」って感じで。

465 名前:仕様書無しさん mailto:sage [2007/03/04(日) 21:41:42 ]
SQLのハードコード云々よりも
・ストアド禁止
・ビュー禁止
・トリガー禁止
のルールを徹底させようとするPM/SEのほうが先に氏んでくれと思う。


466 名前:仕様書無しさん mailto:sage [2007/03/04(日) 21:49:15 ]
ビューとトリガーは禁止でいいよ



467 名前:仕様書無しさん mailto:sage [2007/03/04(日) 22:01:33 ]
ビューは、遅くて使い物にならん。

468 名前:仕様書無しさん [2007/03/04(日) 22:01:38 ]
>「このフィールドを更新したの誰だよ?」って感じで。 

あるあるw

馬鹿ユーザが「いじってない!」とか抜かしたときに
本当かどうか調べられるし

469 名前:仕様書無しさん mailto:sage [2007/03/04(日) 22:14:55 ]
テンポラリテーブルはありでつか?

470 名前:仕様書無しさん mailto:sage [2007/03/04(日) 23:39:56 ]
通常SQL部分はクラスでラップするから、ハードコーディングでいいんでは?
場合によってストアドも使うし、トリガは注意して使えば問題ないし、
ビューもテーブル設計の変更ができない時に仕方なく使う分にはいいんじゃない?

471 名前:仕様書無しさん mailto:sage [2007/03/05(月) 00:23:02 ]
>>465
ルールを徹底させるだけマシだとおもう。

好きに使っていいよってプロジェクトの悲惨さに比べたら・・・

472 名前:仕様書無しさん mailto:sage [2007/03/05(月) 00:30:12 ]
そうだな。駄目なら駄目としてくれたほうがすっきりする。

473 名前:仕様書無しさん mailto:sage [2007/03/05(月) 00:56:19 ]
トリガーは微妙なんだが、ストアドやビューを好きに使われると
ナニか困るのか?

逆説っぽくてアレなんだが、困るストアドを作るやつは
ストアド禁止にしても困るコーティングすると思う。
ビューも同様な。

474 名前:仕様書無しさん mailto:sage [2007/03/05(月) 08:17:50 ]
>>467
それはアンタのSQLが悪いだけwww


>>473
同意

475 名前:仕様書無しさん mailto:sage [2007/03/05(月) 08:27:20 ]
駄目な奴は何をやっても駄目.

最低限,SQLをプログラムの各所に散らばらすのは止めて欲しい.
前に見た奴だと,ボタン押下イベントの中でSQL投げてたのを見たことある.

476 名前:仕様書無しさん mailto:sage [2007/03/05(月) 08:42:19 ]
え?普通じゃね?



477 名前:仕様書無しさん mailto:sage [2007/03/05(月) 09:02:29 ]
ボタンを押下した後にDB検索にいくなら、
嫌でもSQL投げないと、何も始まらないよな。

478 名前:仕様書無しさん mailto:sage [2007/03/05(月) 09:03:02 ]
>>473
人単体で見れば確かにそのとおり。

ただ、全体で見たときに非常に美しくなくなるんだよね。
極端な話、マスタ登録はストアド側でマスタ更新はプログラム側ってこともありうるのよ。
同じレイヤーのロジックをストアドで組んだりプログラムで組んだりっていうのは
アーキテクチャとして正しい姿なのか?っていうのは疑問。

>>476
え?
イベントハンドラとロジックはわけようぜ兄弟

479 名前:仕様書無しさん mailto:sage [2007/03/05(月) 09:18:23 ]
VBの簡単な画面でそれやられると萎える

480 名前:仕様書無しさん mailto:sage [2007/03/05(月) 09:18:52 ]
たかがVBだからな

481 名前:仕様書無しさん mailto:sage [2007/03/05(月) 10:47:56 ]
>>475>>479-480
VB入門書にそういう記述をしている本がけっこうあるからなのさ。


482 名前:仕様書無しさん mailto:sage [2007/03/05(月) 11:05:18 ]
VB厨がプログラムを分割しようとすると妙に不自然な形になるからなぁ。
長大なイベントハンドラを許容しておいたほうが無難かもしれん。

483 名前:仕様書無しさん mailto:sage [2007/03/05(月) 11:48:56 ]
>>466
うそを言うな、ウソを。

484 名前:仕様書無しさん mailto:sage [2007/03/05(月) 12:27:10 ]
>>482
モジュールに関数書いて、呼び出すようにしても、クラス化しろよ低脳とか言われちゃうしな

485 名前:仕様書無しさん mailto:sage [2007/03/05(月) 12:31:12 ]
>>474

ビューにインデックスを張れない以上、
ビューの遅さは、どうしようもないと思うけど。


486 名前:仕様書無しさん mailto:sage [2007/03/05(月) 12:36:52 ]
ビューと通常のSELECTだとビューが遅いというのは、どこで遅くなっているんだろうか



487 名前:仕様書無しさん mailto:sage [2007/03/05(月) 12:38:06 ]
>>484
Foo formに1:1で対応するFoo logicクラスを作ってそこに全ての処理を延々書き連ねたコードなら見た。
イベントハンドラでは、そのlogicクラスのインスタンスを生成して、イベントハンドラに対応する長大なひとつのメソッドを呼ぶ。
アホかと。

488 名前:仕様書無しさん mailto:sage [2007/03/05(月) 12:51:19 ]
>>486

出来上がったビューにインデックスが張れないから遅いんだよ。


489 名前:仕様書無しさん mailto:sage [2007/03/05(月) 12:55:59 ]
>>488
別のビュー作ればいいじゃん

490 名前:仕様書無しさん mailto:sage [2007/03/05(月) 13:11:22 ]
>>489
え?

491 名前:仕様書無しさん [2007/03/05(月) 13:12:29 ]
>>488
じゃないけど
ちょっとそれ教えて欲しいと思った
今までDataSetで取り込んだりした後自分でPk設定してたりしてるんで
元々ViewにKeyを埋め込めるのならそうしたい

492 名前:仕様書無しさん mailto:sage [2007/03/05(月) 13:14:29 ]
ビューが実態のあるオブジェクトなDBもあるのか?
普通はテーブルを参照するオブジェクトだと思うが。

参照の仕方をユーザー毎に区切ったりする場合に使うのでは。

493 名前:仕様書無しさん [2007/03/05(月) 13:21:18 ]
ビューの元になるテーブルに適切なインデックスが張られていれば
ビューもそんなに問題にならないと思うけど

もしかしてjoinの代わりにビュー使ってるの?

494 名前:仕様書無しさん mailto:sage [2007/03/05(月) 13:33:06 ]
ビューにインデックス貼るって、用途無視してビュー作ってるだけじゃんw
ビューって言いたいだけだろ

495 名前:仕様書無しさん mailto:sage [2007/03/05(月) 13:54:05 ]
早い遅いはDB板で。

O/Rマッパーマンセーとかそういうレス希望

496 名前:仕様書無しさん mailto:sage [2007/03/05(月) 15:17:42 ]
>>488
実行計画とって、きちんとINDEXが使われるようなVIEWにしろwww
つか、元表にちゃんとINDEX作れwww


>>492
Oracleなんかじゃマテリアライズドビューなんていう
実データを持つVIEWのようなものは存在する。


>>493
正解。




497 名前:仕様書無しさん mailto:sage [2007/03/05(月) 19:41:07 ]
>>478
>極端な話、マスタ登録はストアド側でマスタ更新はプログラム側ってこともありうるのよ。
>同じレイヤーのロジックをストアドで組んだりプログラムで組んだりっていうのは
>アーキテクチャとして正しい姿なのか?っていうのは疑問。

そういう美しさを追求したいのなら、システムを設計する際に
アクセス権を含めてかなりカッキリと設計しておけ、って気がするが。

マスタ更新系に関してはストアドを作成し、そのオブジェクトに管理者のOWNER
権限がないとINSERTできない。とかな。

逆に参照はすべてDBAが用意したビューのみしか利用できないとかか。
素人プログラマにビュー作られてパフォーマンスが出ないとか言うなら
餅は餅屋な感じでプロのDBAのテーブル設計してもらって最適な
KEY,INDEX,VIEW,制約をやってもらう。

498 名前:仕様書無しさん mailto:sage [2007/03/05(月) 21:28:16 ]
>>496

当然元表のINDEXは、使われているが
話にならんぐらい遅いよ。


499 名前:仕様書無しさん mailto:sage [2007/03/05(月) 21:31:19 ]
こういう
ttp://www.geocities.jp/mickindex/database/db_view.html
ページもあるから、Viewは、遅いって言うのも一般的な話だと思う。

500 名前:仕様書無しさん mailto:sage [2007/03/05(月) 21:48:46 ]
>>498
VIEWでなく、普通にSELECTした方が速いのかい?

501 名前:仕様書無しさん mailto:sage [2007/03/05(月) 21:52:21 ]
>>500
絞込み順番で速度が変わるのでViewだと遅くなることが多い。

502 名前:仕様書無しさん mailto:sage [2007/03/05(月) 22:07:54 ]
DB2でJDBC経由で使う分にはVIEWとSELECTとの違いは体感しないけどなー。

マイクロソフトのOSからODBC経由でSQL投げると不思議と遅くなる事が
あるけど、なんなんだろうな。
SQLServer買えtって嫌がらせなんだろうか?って思う事がある。

まあ漏れはSELECTかMQTのどっちかの人だけど。

503 名前:仕様書無しさん mailto:sage [2007/03/05(月) 22:08:52 ]
>>500

インデックスが張ってあるカラムで検索するなら、
圧倒的に実表を使ったほうが早い。

504 名前:仕様書無しさん mailto:sage [2007/03/05(月) 22:12:28 ]
ところで具体的にVIEW使うと遅くなるRDBってナニ?
>>502と同様にDB2だと、テーブルでも、ビューでもマテリアライズでも
どれも同じ速度で結果が返ってくるけど。

505 名前:仕様書無しさん mailto:sage [2007/03/05(月) 22:15:44 ]
>>504

Oracleだよ。

>DB2だと、テーブルでも、ビューでもマテリアライズでも
>どれも同じ速度で結果が返ってくるけど。

ソース希望。


506 名前:仕様書無しさん mailto:sage [2007/03/05(月) 22:22:20 ]
>>505
ソースもなにもやって見れば解る。

適当なテーブルにビューを作成して、ついでにマテリアライズしておくと、
実テーブルとビューでマテリアライズな結果を帰ってくるような設定にしていおけば、
DB2のオプティマイザがマテリアライズの結果を返すので、
どのオブジェクトを参照しても9msくらいの早さで結果が返ってくる。

さすがは商用DBといったトコか。

Oracleに向かってこういう事いうと反論が山ほど返ってくるだろうけど、
Oracleは使う側がOracleを熟知していないとパフォーマンスでないよな。



507 名前:仕様書無しさん mailto:sage [2007/03/05(月) 22:24:27 ]
ハードコードしてそうな人が多そうだから、そっちに話を戻そうか

508 名前:仕様書無しさん mailto:sage [2007/03/05(月) 22:49:33 ]
ま、ストアド作ってもそいつを呼び出すもんはどうするのかってこともあるしね。

509 名前:仕様書無しさん mailto:sage [2007/03/05(月) 22:55:53 ]
Oracleのせいにしたいやつがいるな。


510 名前:仕様書無しさん mailto:sage [2007/03/05(月) 23:03:33 ]
別にハードコートが悪とも思えんけどなぁ。

たとえば以下みたいなSQLを直書きする方が
select DATE(a.yyyy || '-' || a.mm || '-' || a.dd ) from hoge as a, piyo as b
where ここらが動的生成
group by .....
having 動的生成

だとロジックを集中して短く作りこめるし。

そりゃ、select * from hogeみたいなハードコートは市ねとか思うけど。

511 名前:仕様書無しさん [2007/03/05(月) 23:05:39 ]
ビューで集約操作をすれば遅くなる、って言ってるだけじゃん
ビューは遅い、なんて言い切るなよボケ

512 名前:仕様書無しさん mailto:sage [2007/03/05(月) 23:08:04 ]
>>510
動的生成するにはハードコードだわな。

513 名前:仕様書無しさん mailto:sage [2007/03/05(月) 23:08:22 ]
|| '-' ||

新しい顔文字かと思った

514 名前:仕様書無しさん mailto:sage [2007/03/05(月) 23:19:02 ]
|| '-' ||
(。Y。)

515 名前:仕様書無しさん mailto:sage [2007/03/05(月) 23:20:58 ]
>>514
女神様じゃ〜

516 名前:仕様書無しさん mailto:sage [2007/03/05(月) 23:34:48 ]
|| '-' ||
(。Y。)ノ
  肉



517 名前:仕様書無しさん mailto:sage [2007/03/06(火) 07:57:35 ]
>>506
それ偶然だから。

518 名前:仕様書無しさん [2007/03/06(火) 09:05:33 ]
ハードコーディングの定義って何?

where句の条件が動的に変化して
それ以外のselect句が固定であったとき、
where句以外をソースに書いておくのがハードコーディング?

519 名前:仕様書無しさん mailto:sage [2007/03/06(火) 09:53:21 ]
>>518
ソースコードの中にSQLを直書きすること。


520 名前:仕様書無しさん [2007/03/06(火) 12:31:53 ]
それの何が問題なの?

521 名前:仕様書無しさん mailto:sage [2007/03/06(火) 12:58:47 ]
常に同一のSQLなら生SQLでいいけど、そうでもないのに
プレースホルダも使わずに
"select * from hoge where " + condition + ";"
なんて書いてるこわーいコードが世の中には溢れかえっている。



522 名前:仕様書無しさん mailto:sage [2007/03/06(火) 12:59:04 ]
変更の度にコンパイル

523 名前:仕様書無しさん mailto:sage [2007/03/06(火) 13:42:09 ]
>>521

ハードコーディング以前の問題。

>>522

今時、コンパイルに何時間もかかるわけじゃなし。
問題無いと思うが。

524 名前:仕様書無しさん mailto:sage [2007/03/06(火) 17:39:02 ]
数値のリテラルよりマシ。

525 名前:仕様書無しさん mailto:sage [2007/03/06(火) 21:31:10 ]
>>521見て思ったんだが、上の方で出てるHibernateとかはこの問題は発生しないの?
使ったことないんでよくわからん

526 名前:仕様書無しさん mailto:sage [2007/03/06(火) 21:35:37 ]
>>525
Hibernate関係ねー。よっぽど使い方まちがえたらSQLインジェクション発生する。



527 名前:仕様書無しさん mailto:sage [2007/03/06(火) 22:39:42 ]
>>526
やっぱりそうだよね。ありがとう。

528 名前:仕様書無しさん mailto:sage [2007/03/22(木) 21:09:04 ]
保守


529 名前:仕様書無しさん [2007/03/30(金) 21:52:17 ]
保守

530 名前:仕様書無しさん mailto:sage [2007/03/31(土) 00:10:44 ]
>>524
同じ意味のconstが複数あった時にゃ、リテラルの方がマシと思った

531 名前:仕様書無しさん [2007/04/02(月) 22:12:30 ]
プリペアドステートメントってどうよ

532 名前:仕様書無しさん mailto:age [2007/04/03(火) 12:45:58 ]
O/Rマッパーでも使えというのか?
SQLを書いた方が早い場合もあるんじゃないか?

533 名前:仕様書無しさん mailto:sage [2007/04/03(火) 13:07:08 ]
オラクルはわからんけどSAP R/3は内部でSQLをハードコーディング
してるのをよく見かけるぞ。

534 名前:仕様書無しさん [2007/04/03(火) 16:07:16 ]
SAPだったら別に良いんじゃないかという希ガス

535 名前:仕様書無しさん mailto:sage [2007/06/11(月) 20:42:07 ]
>>1
SQLインジェクションとかそういうことを危惧しての発言なのか、それとも単にリテラル文字列が気に入らないだけ?
後者ならお前はただのアホとしか言いようが無いぞ。

536 名前:仕様書無しさん [2007/06/11(月) 20:43:22 ]
あーハードコーディングとか言ってるから後者だな。
1は馬鹿丸出し。



537 名前:69式フリーPG ◆hND3Lufios mailto:sage [2007/06/11(月) 20:50:53 ]
プレースホルダを埋めた形でハードコーディングしてますが。

設定ファイルとかに外出ししてもさ、コンパイルせずに済むのってORDER BYとか
だけじゃん?

538 名前:仕様書無しさん mailto:sage [2007/06/11(月) 21:01:46 ]
Java界では保守性があがると言うもっぱらの噂ですよ。馬鹿っぽい気もするけどさ。

539 名前:仕様書無しさん mailto:sage [2007/06/11(月) 21:07:25 ]
コードとSQL文の距離が離れることで、可読性が落ち保守性が落ちる。

540 名前:仕様書無しさん mailto:sage [2007/06/11(月) 22:19:02 ]
S2Dao最強でOK

541 名前:仕様書無しさん mailto:sage [2007/06/17(日) 16:09:59 ]
ハードコーディングしたほうがSQLインジェクションには強い

542 名前:仕様書無しさん mailto:sage [2007/06/17(日) 17:38:27 ]
じゃあS2Dao Tigerでいいや

543 名前:仕様書無しさん mailto:sage [2007/06/20(水) 22:09:17 ]
>>541
検索条件を変えられないなら、ハードコーディングしようがしまいが
SQLインジェクションには無敵

544 名前:仕様書無しさん mailto:sage [2007/06/20(水) 23:43:29 ]
それは、ともかくSQLExceptionの変数をsexにしてるソースがあってさ
なんか、楽しいから、やめてほしいなぁと思うわけよ。

545 名前:仕様書無しさん mailto:sage [2007/06/20(水) 23:49:22 ]
ワラタ

546 名前:仕様書無しさん [2007/06/22(金) 22:57:10 ]
SQLインジェクション云々いってるやつって何なの?
それに対策立てた上での議論だろ?



547 名前:仕様書無しさん mailto:sage [2007/06/22(金) 23:09:47 ]
VBのソースって半分以上がSQLだよね

548 名前:仕様書無しさん mailto:sage [2007/06/22(金) 23:23:11 ]
XP的にはハードコーディングだな
困ってから作り直せばいいだろ。どうせ困る前に納期だ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<176KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef