返回信息流最近在看Mybatis,感觉就是在xml里将类中对象属性和数据库表的每一项对应。
那有必要用这些orm框架吗,直接在类里面定义set,get方法,方法里封装sql语句,这样操作对象时也不用理会sql啊。
orm框架了解有限,请各位大神解惑
这是一条镜像帖。来源:北邮人论坛 / java / #41409同步于 2015/6/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
为什么要用Mybatis等orm框架
dmlaomao
2015/6/6镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 nuanyangyang 的大作中提到: 】
: 就是有些人(比如我)连SQL都懒得写。
貌似hibernate不用写,但Mybatis还是要写SQL啊,
【 在 dss886 的大作中提到: 】
: 主要就是为了不要把SQL语句写在代码里,封装一下
感觉写在xml里和封装在get,set,delete等自定义函数里没啥区别.....还增加了读xml的开销
安全啊!要是删数据的时候忘记加where xid=xxx很酸爽的。。。说不定就是携程那种大型事故
要是哪里需要连数据库就在哪里写SQL语句,维护起来也特别麻烦
稍大型的程序都会封装一下的,不过不一定非得用MyBatis之类
总之尽量不把SQL写在Java代码里
【 在 dmlaomao 的大作中提到: 】
:
: 感觉写在xml里和封装在get,set,delete等自定义函数里没啥区别.....还增加了读xml的开销
【 在 dmlaomao 的大作中提到: 】
:
: 感觉写在xml里和封装在get,set,delete等自定义函数里没啥区别.....还增加了读xml的开销
灵活。不写java源代码也可以把对象的值填入。适合我这种连
while(resultSet.next()) {
obj.setField1(resultSet.getInt(1));
obj.setField2(resultSet.getString(2));
obj.setField3(resultSet.getInt(3));
}
这样的繁琐的代码都懒得写的人。
如果担心反射会造成性能负担的话,这……如果orm框架的作者愿意运行时用asm生成java字节码的话,就相当于运行时编译(JIT)了。看看Terra语言,有一篇论文专门讲在运行时生成这样的数据访问代码的。http://terralang.org/pldi083-devito.pdf
而且可以和数据库解耦,这样可以切换到其他数据库上。虽然好像一般切换其他数据库的事情不经常发生。。
【 在 dmlaomao 的大作中提到: 】
: 最近在看Mybatis,感觉就是在xml里将类中对象属性和数据库表的每一项对应。
: 那有必要用这些orm框架吗,直接在类里面定义set,get方法,方法里封装sql语句,这样操作对象时也不用理会sql啊。
: orm框架了解有限,请各位大神解惑
orm 一般都是为了解耦,将sql写在代码里多不好啊。mybatis可以自己写sql等优化,hibernate不用写sql,但是需要考虑性能什么的就不太好了