作者PsMonkey (痞子军团团长)
看板java
标题Re: [问题] 资料库的处理
时间Sat May 19 00:25:00 2012
※ 引述《LaPass (LaPass)》之铭言:
: 我对资料库还蛮头痛的
: 想请问比较概念性的问题....
: 几乎只要写系统之类的程式,难免都会使用到资料库
: 虽然,简单来讲,就只是select update instert delete这四个动作而已
: 只要会这四个指令,就几乎可以把所有功能都做出来
: 顶多再多个creat drop alert就很多了
: 但是,弹性这麽大,也让人觉得用起来会很难用
: 常常看到资料表中的有个栏位不知道是在干麽的.....
: 一串SQL中的某个条件又不知道是干什麽用的
document、comment、present(意义不明)
工具可能可以帮助很多,但是很难万能
套了一堆自动化工具,还不如多打几个字
: 不知道资料表之间的关连性是怎麽样
: 或是,今天改了资料表,栏位多一个isDelete的判断
: 就要把所有的delete陈述式改成update set isdelete=1
: 偏偏删除的sql还在分布在很多地方
基本上,切一层 DAO 算是基本招数
而且你不管用什麽自动化工具(或是啥都没用)
把存取资料库(不管哪种资料库)的行为
集合在一个 or 多个 DAO 的 class 都是好事
DAO 上层再包一个 model 层就更好,那里才是真正处理 business logic 的部份
: 或许可以把SQL字串用个public static final String去存起来
: 但是,这样一来就会降低使用上的弹性
: 例如....
: 我常常看到程式码出现这种东西
: String Sql="(....)";
: if(A功能开启) Sql="UNION (........)";
: if(B功能开启&&使用者属於B群组) Sql+=" UNION (.....) "
: String Sql2 = "....."
: (中略,又开另外一个搜寻去捞资料库的资料出来做判断)
: if(判断成立)Sql+=" UNION (.....) "
: ......
: 像这种组合SQL语法的段落可以长达两三页,而且每个UNION中的陈述式又都很长
: 把这种东西放到public final static去存,也没什麽意义,因为还是一样乱
: 现在有机会自己写,程式跟资料库的桥接介面
: 在想方法让资料库用起来好用一些
: 请问有方法可以解决这种问题吗?
我觉得适时用程式去解决 sql 要解决的功能
会让 sql 看起来「好看」一点,但是也仅只於好看而已 XD
我忘记谁讲的了,大意大概是
肮脏的事情就是那麽多,看是要这里脏还是那里脏
用了一些工具,也不过就是自己的手少脏一点
(还要担心抽象渗漏 XD)
看到推纹,最後扯一个 n 久前的想法 & 作法
写一个 tool,喂给他 select 语法,多长多恶烂都没关系
tool 依照 metadata 自动生成一个 FooDataClass,帮你塞好对应的值
sql 就塞在 FooDataClass.SQL 当中...
也许套个 reflection 会更爽一点 [茶]
小范围实用性当然很爽,不过自 high 居多
这两个礼拜用 Hibernate 好像也没有活的比较快乐一点......
(多对多的部份一旦 update 就一直产生 null 的 data,好烦阿 Orz)
====
这篇实在跟 Java 没啥关系 [远目]
--
钱锺书:
说出来的话
http://www.psmonkey.org
比不上不说出来的话
Java 版 cookcomic 版
只影射着说不出来的话
and more......
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.25.12.32
1F:→ LaPass:Hibernate应该还是java的范围啦.... 汗 05/19 02:21