该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-12-12
楼主自己写组件(FreyjaJdbcTemplate)用是很好的事,而mybatis有缺点也很正常,开源的东西都是一些很通用的功能,不是拿过来用,肯定要自己改造下。所以不要喷这喷那的。
|
|
返回顶楼 | |
发表时间:2011-12-12
喷喷更健康。百花齐放、百家争鸣。无可厚非。
|
|
返回顶楼 | |
发表时间:2011-12-12
我认为这种情况并不意外。因为框架本身无法判断修改语句会造成多大的数据量变化。既然不知道,那么只能认为所有缓存过期。
Hibernate里面也有类似问题。你执行一条Update语句而不是修改一个受管实例的属性,那么Hibernate同样会清理该实例的所有缓存。因为它无法确定这条Update到底修改了多少记录,而这些记录有多少在Hibernate的二级缓存里面。不过Hibernate的缓存处理可以区分对象,清理的范围比较小,而且可以用修改指定实例的方式避免缓存整体过期。 但是mybatis并没有记录对象和数据库表的关系,唯一记录的是对象和查询语句的关系。结果就无法判断会影响哪些表,只好全清除了。 |
|
返回顶楼 | |
发表时间:2011-12-12
楼主钻研精神还是值得肯定的.
myBatis文档里面说的很清楚.myBatis只是一个SQL映射框架,并不专注cache. 而且它也不建议用自己带的cahce框架. 而是推荐用ehcahce,oscache等.并且接口已经给实现好了. 所以楼主不要纠结在这里. |
|
返回顶楼 | |
发表时间:2011-12-12
myBatis/ibatis 这种只支持原生sql的框架如果单单不看缓存,那么myBatis就不需要去解析sql。除了动态sql。
但动态sql一般用于报表类项目,而且就算写在xml里面效果也不理想。(写在注解里面不用说实现不了动态sql) 也就是说,除了动态sql较多的项目。用自己写的原生jdbc、springjdbcTemplate、dbutil之类的都要比myBatis要好。无论是性能还是稳定性。 至于dba什么的更是无稽之谈。ps:本帖确实是广告贴。 |
|
返回顶楼 | |
发表时间:2011-12-12
啥叫动态sql?用户拖拽几个表的字段,就能够自动生成对应的sql?俺们用hibernate做来一个
|
|
返回顶楼 | |
发表时间:2011-12-12
刚才我去了解下。如果没弄错的话mybatis的动态sql就是在xml里面拼接sql而不是在java代码里面拼接。
如: <select id="getUserList" resultMap="user"> select * from user <isGreaterThan prepend="and" property="id" compareValue="0"> where user_id = #userId# </isGreaterThan> order by createTime desc </select> ? |
|
返回顶楼 | |
发表时间:2011-12-12
”用户拖拽几个表的字段,就能够自动生成对应的sql“
我觉得对于单表来说压力不大。 |
|
返回顶楼 | |
发表时间:2011-12-12
aa87963014 写道 myBatis/ibatis 这种只支持原生sql的框架如果单单不看缓存,那么myBatis就不需要去解析sql。除了动态sql。
但动态sql一般用于报表类项目,而且就算写在xml里面效果也不理想。(写在注解里面不用说实现不了动态sql) 也就是说,除了动态sql较多的项目。用自己写的原生jdbc、springjdbcTemplate、dbutil之类的都要比myBatis要好。无论是性能还是稳定性。 至于dba什么的更是无稽之谈。ps:本帖确实是广告贴。 MyBatis跑到你这里,作用就只剩下动态SQL了?
就算只说动态SQL,那MyBatis的作用也是无与伦比的,当你的项目需要复杂且条件不确定的查询时、当你的项目需要按照一定的条件更新不同的字段时、当你的项目需要按照不同的条件插入不同的值时,当你不想再为多写一个“,”,多写一个"and",或者少写一个“or”而烦心时、当你需要传入一个集合对象作为SQL遍历循环条件时,当你需要动态建表、动态修改字段、查询表名称动态变化不确定时…… 当你遇到这些情况的时候,你怎么办?自己写一个框架? 我想问得是:你写得有MyBatis好么?你自己写得程序,也像MyBatis一样,有全世界无数项目的实际案例么? ======================================================================================= 自己造轮子无可厚非,我自己也造轮子,从MVC框架到自己的权限认证框架,我一直在造轮子,但是我造轮子是因为已有的框架无法满足我的需求,所以我要造轮子去实现已有框架没有的功能。 但是从你的帖子来看,你喷得MyBatis缺点,根本就不是人家的缺点啊,你要造轮子,应该是造一个你有,但是MyBatis没有的轮子,而不是否定人家的功能,认为那些东西没用,一句话就把MyBatis给否定了。 |
|
返回顶楼 | |
发表时间:2011-12-12
ls虽然你很喜欢mybatis。
1、是框架都有结果集映射到Java Entity Object 2、“内置的过滤SQL注入”你说的是预编译sql? 3、无须实现类。。。不会变了个花样你就觉得很神奇了吧。(咦,这个不是跟很方便管理sql有冲突么) 4、spring事物反过来需要数据库操作层管理? 5、我没体会到编译一次到底大代价有多大,而且对于我这种密集恐惧症的人来说满xml的sql语句和描述标签。(个人爱好不干涉) 6、SQL ID重复命名?没听过这个问题。 ********* 我主帖内容主要是说缓存这一层,对于sql写在哪只是吐槽。 |
|
返回顶楼 | |