ORM 简介
ORM 的出现
很多程序员的日常工作就是在进行 ORM( 对 象 、 关 系 映 射 ), 对 我 来 讲 这 是 一 个 痛 苦 的
过 程 。 我 们 的 分 析 、 设 计 乃 至 编 码 都 已 经 面 向 对 象 了 , 但 是 在 程 序 深 处 的 某 个 地 方 , 我 们 不
得不将一个完美的对象转换成一条丑陋的 SQL 语句,如下所示:
public void addStudent(Student stu) {
S trin g sq l = “IN S E R T IN T O stu d e n t(id ,na m e ,sco re ) V A L U E S (“ + stu .g etId () + “,’” +
stu .g e tN a m e () + “’,” + stu .ge tS co re () + “)”);
S yste m .o u t.p rin tln (“sql = “ + sq l);
exeuteUpdate(sql);
}
或者你是一个比较了解 JDBC 的程序员:
public void addStudent(Student stu) {
S trin g sq l = “IN S E R T IN T O stu d e n t(id,n a m e ,sco re) V A L U E S (?, ?, ?)”);
PreparedStatement pst = con.prepareStatement(sql);
pst.setInt(1, stu.getId());
pst.setString(2, stu.getName());
pst.setInt(3, stu.getScore());
exeuteUpdate(pst);
}
你应该可以看出,在这两段令人生厌的代码中,还没有包含数据库连接的获取与释放。
是 的 , 曾 经 有 一 段 时 间 , 我 每 天 编 码 的 主 要 工 作 就 是 处 理 这 些 杂 乱 、 缺 乏 标 准 的 SQL
和很难伺候的数据库连接。 当表的字段数量超过 30 个时,程序员极容易变得心浮气躁„„
穷则思变,很多程序员在寻找解决问题的良方,于我来说,做过这么几种尝试:
1. 利用代码生成器
很多程序员醉心于各种各样的代码生成器,从 JavaBean 中属性的 getter/setter,
到数据表的 CRUD 操作。确实,这些 INSERT、 SELECT 语句有很强的规律性,可以
通过读取数据表的 MetaData 生成。这个方法最大的缺陷就是不够灵活,只能生成
常见的一些操作代码,对于稍微特殊些的需求,程序员还是摆脱不了写一大堆 SQL
语 句 的 命 运 。 另 外 , 当 数 据 表 的 结 构 发 生 变 化 的 时 候 , 必 须 重 新 生 成 代 码 , 这 时 候
就需要特别小心翼翼,别把之前自己写的代码覆盖掉。(不过我对代码生成工具实
在 比 较 着 迷 , 最 近 在 写 一 个 根 据 数 据 表 自 动 生 成 Struts 框架下的 CRUD 操作的小东
西)
评论0
最新资源