`
龙晓舟
  • 浏览: 163851 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Abd288eb-a9b2-3549-ba16-f04b1b34dec3
创业,不能兼职
浏览量:24917
文章分类
社区版块
存档分类
最新评论

创业,不能兼职(43)--Hibernate和Ibitas同时用的优缺点的讨论

阅读更多
我学到的新词语越来越多,昨天晚上最关键的2个词语是Hibernate和Ibitas.

我之前的日记里写到,因为多语言问题,看到一篇文章后,就好奇我的后台小伙子,(对了,我老用小伙子叫这个,叫那个的, 也太那个糊里糊涂了,我用他的英语名字缩写吧,P)用没用人家说的MVC. 然后,有看过那日记的朋友,就在qq里笑我外行,说,你以前说过,你的程序员后台用的SSH,那自然是MVC了.我说啊,我换了程序员啊,我还真不知道我们现在用的什么.等我问问. 结果,P告诉我,他用的是hibernate和ibitas.就是S+S+H+I.

结果,这个,被2个朋友疑问了一下.后面一个朋友叫R,之前他也曾给我过各种非常好的建议.所以,他说什么,我都会很认真地学习琢磨.

我现在的小伙子P对技术上讨论的心态很好,对于我去和人讨论和他意见不一致的东西,从没有不高兴,还会耐心解释.因为,我什么都不懂,人家问我一个问题,我是得问他的.我基本就是外行听热闹,但也能得出一些大致的印象,了解各自意见不同时的理由.只是有时判断不清楚到底谁更有道理.


R说,Hibernate和Ibitas从没听说人混着用的,要么是用HIbernate,要么是用Ibitas. 说一般就是这几种组合:

spring hibernate struts 叫ssh

spring ibatis struts

spring hibernate springmvc

spring ibatis springmvc 

P说,ibatis是用来查询的,hibernate是用来增加修改删除的.网站用hibernate查询不太好.网站主要就是查询.所以,他就用这2种一起做,也就是数据的持久化是用了2种,Hibernate和Ibitas. 其中Hibernate除了做增加删除修改以外,还有一个重要功能是,生成数据表结构.


R说,他觉得这样不太好,因为H和I的两个的功能重合 还需要注意事务的问题 需要两个东西重合的东西太多了 什么缓存等 . P说,他就是一个用来写数据,一个用来查询.所以,不重合.

后来,R举了个例,来说明,用2个可能存在的问题:
举个例子 ibatis使用了缓存  比如hibernate 改了数据 没用通知 ibatis数据是否更改 而ibatis还是认为原来的缓存是有效的 

当然也可以解决这个问题 就是 ibatis 和hibernate 共用一个缓存

而p认为:

你要是不通知hibernate改缓存的话也一样有问题 .说Hibernate修改数据时,会清掉相关的缓存的 .也就是更新相关的缓存 .

总之,我听了半天,就是各自有理.

我担心,R说的需要注意的地方,p到时注意不够.但其实,真正出现问题时,我也不知道,到底是因为哪个原因.

先备注一下,记在这里,以后有问题时,我们也可以回头分析.


顺便说一下,这些东西真是听起来,一点趣味都没有:) 不如我去和人讲一个故事和美景好玩.


分享到:
评论
12 楼 killsb 2011-10-14  
http://wenwen.soso.com/z/q274715303.htm?ri=1001&rq=275306236&uid=0&pid=w.xg.yjj&ch=w.xg.llyjj

hibernate 与 ibatis 的区别,
hibernate 与 ibatis 都是目前最流行的 O/R mapping 框架

hibernate 它出身于 sf.net 现在已经是 JBoss 的一部分了

ibatis 它属于 apache 下的一个子项目

hibernate 它是全封闭式的,对数据库的操作提供了完整封装,所有的SQL都是自动生成和执行,开发人员不需要再关注底层的建设,甚至不需要开发人员对SQL的熟练掌握,所有操作都是java对象,而更注重业务逻辑,开发人员只需定义好POJO与数据库的映射(*.hbm.xml),在对数据操作时只需调用hibernate 提供的方法完成数据层的操作,hibernate/OJB 会根据制定的存储逻辑,自动生成相应的SQL并调用JDBC接口完成执行

ibatis 它是半封闭式的,何为半封闭式,这相对hibernate 对比,ibatis的着力点则在于POJO与SQL之间的映射关系,所有的SQL都需要开发人员在映射文件编写,通过这个映射文件的配置,将SQL所需要的参数传入进去和返回的结果字段映射到指定的POJO,而且ibatis最好的一个亮点在于可以操作存储过程。

二者的对比:
1.  iBATIS非常简单易学,Hibernate相对较复杂,门槛较高。
2.  二者都是比较优秀的开源产品
3.  当系统属于二次开发,无法对数据库结构做到控制和修改,那iBATIS的灵活性将比Hibernate更适合
4.  系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标。在这种情况下iBATIS会有更好的可控性和表现。
5.  iBATIS需要手写sql语句,也可以生成一部分,Hibernate则基本上可以自动生成,偶尔会写一些Hql。同样的需求,iBATIS的工作量比Hibernate要大很多。类似的,如果涉及到数据库字段的修改,Hibernate修改的地方很少,而iBATIS要把那些sql mapping的地方一一修改。
6.  以数据库字段一一对应映射得到的PO和Hibernte这种对象化映射得到的PO是截然不同的,本质区别在于这种PO是扁平化的,不像Hibernate映射的PO是可以表达立体的对象继承,聚合等等关系的,这将会直接影响到你的整个软件系统的设计思路。
7.  Hibernate现在已经是主流O/R Mapping框架,从文档的丰富性,产品的完善性,版本的开发速度都要强于iBATIS
8.  最关键的一句话是iBATIS的作者说的:
If you are starting a new project and you're in full control of your object model and database design, Hibernate is a good choice of O/R tool.
If you are accessing any 3rd party databases (e.g. vendor supplied), or you're working with a legacy database, or even just a really poorly designed database, then an O/R mapper might not be capable of handling the situation. That's were an SQL Mapper comes in handy.
11 楼 龙晓舟 2011-08-23  
liushian 写道
hibernate只作为开发阶段的一个代码生成工具是可以的,但是部署后也用的话,会增加维护成本!而且进行团队开发时会造出一定的混乱!


是吗? 是说上线后,不用? 那增减删除,又不是只有开发阶段才有的啊
10 楼 liushian 2011-08-23  
hibernate只作为开发阶段的一个代码生成工具是可以的,但是部署后也用的话,会增加维护成本!而且进行团队开发时会造出一定的混乱!
9 楼 liushian 2011-08-23  
我的理解是:
查询量大,业务复杂且经常变动,则用ibatis(半自动化)。
查询量小,业务简单,则用hibernate(全自动化),开发更快!
8 楼 龙晓舟 2011-08-21  
zwchen 写道
Hibernate的优势是持久化,也就是增删改查中的增删改,对于查(List+Detail),建议直接用sql。
Hibernate适合网站的后台,前台主要是数据展现(查),不要用它。


谢谢啊,我和我的小伙子说,他说你这个看法和他的差不多,说ibitas比较轻量,里面sql基本都是手写的,说ibitas有一些小的集成,控制事物和缓存设置比较方便一些.
7 楼 zwchen 2011-08-21  
Hibernate的优势是持久化,也就是增删改查中的增删改,对于查(List+Detail),建议直接用sql。
Hibernate适合网站的后台,前台主要是数据展现(查),不要用它。
6 楼 龙晓舟 2011-08-20  
tommywdl 写道
个人建议 不要两个ORM同时用,倾向于ibatis。特别是互联网产品,可能ibatis要灵活点。
技术使用上,首要原则就是选: 技术人员最熟悉的。倾向于 springmvc spring ibatis 这个组合


我们这个是技术人员自己选的,就先让他试试吧. 我也不懂. 我估计,他也是用的不多.先看看.
5 楼 fishinwater 2011-08-20  
OMG, 我还是头一次听到这么奇怪的理论呢
4 楼 tommywdl 2011-08-19  
个人建议 不要两个ORM同时用,倾向于ibatis。特别是互联网产品,可能ibatis要灵活点。
技术使用上,首要原则就是选: 技术人员最熟悉的。倾向于 springmvc spring ibatis 这个组合
3 楼 huangxin_sy 2011-08-19  
创业初期,个人感觉还是自己要对技术能有个把控,不然得有个技术不错的。
2 楼 dws_202 2011-08-19  
不过无所谓怎么用哇,白猫黑猫抓住老鼠是好猫,祝你的早日上线!!
1 楼 dws_202 2011-08-19  
我也从没见过hibernate和ibates混着用的,如果混着用好,许多项目都会混着用,可能大多数人都是菜鸟看不到混着用的好处,我表示自己比较菜!!

相关推荐

    DmDialect-for-hibernate4.0.zip

    在SpringBoot集成Hibernate时,通过配置`spring.jpa.hibernate.dialect`属性,指定使用DmDialect,就能让Hibernate知道如何与达梦数据库进行有效通信。这样,开发人员就可以利用Hibernate的高级特性,如懒加载、事务...

    DmDialect-for-hibernate1-5.zip

    达梦数据DmDialect-for-hibernate所有jar包,DmDialect-for-hibernate2.0、DmDialect-for-hibernate2.1、DmDialect-for-hibernate3.0、DmDialect-for-hibernate3.1、DmDialect-for-hibernate3.6、DmDialect-for-...

    DmDialect-for-hibernate5.3-5.3.jar

    国产达梦数据库hibernate方言包

    Middlegen-Hibernate-r5,hibernate-extensions-2.1.3

    【标题】"Middlegen-Hibernate-r5,hibernate-extensions-2.1.3" 涉及的是两个重要的Hibernate相关工具:Middlegen和Hibernate Extensions,这两个工具都是在开发基于Java的数据库应用程序时使用的辅助工具。...

    xjar-agent-hibernate-v1.0.0.jar

    xjar-agent-hibernate-v1.0.0.jar下载

    hibernate-release-5.2.10

    Hibernate是Java平台上的一款开源对象关系映射(ORM)框架,它允许开发者用面向对象的方式处理数据库操作。在SSH(Spring、Struts、Hibernate)框架中,Hibernate作为持久层的解决方案,极大地简化了数据库操作的...

    达梦数据库java驱动包、hibernate方言包

    /*************************************** * 达梦8 JDBC驱动版本说明 /*************************************** ...8. DmDialect-for-hibernate5.3.jar 对应 Jdk1.7及以上, hibernate5.3 -- 5.4 环境

    Hibernate-extensions 完整安装包

    安装过程简单直观,使得开发者能快速开始使用这些强大的功能。 总结来说,Hibernate-Extensions是Hibernate的一个强大补充,它扩展了ORM的功能边界,使开发者能够更高效、更灵活地处理数据库操作。无论你是初学者...

    jackson-datatype-hibernate, 用于处理Hibernate的Jackson JSON处理器模块( http,Add.zip

    jackson-datatype-hibernate, 用于处理Hibernate的Jackson JSON处理器模块( http,Add 构建 Jackson 模块( jar ) 以支持JSON序列化和反序列化 Hibernate ( http://hibernate.org ) 特定数据类型和属性,特别是延迟...

    基于Java EE的AOM-Spring-Hibernate架构及应用.pdf

    同时,AOM-Spring-Hibernate架构也可以使得开发者可以快速地开发和部署企业级应用程序。 七、精益生产管理系统 精益生产管理系统是一个基于AOM-Spring-Hibernate架构的企业级应用程序。这种系统可以使得企业级生产...

    达梦数据库hibernate方言包

    DmDialect-for-hibernate2.0、DmDialect-for-hibernate2.1、DmDialect-for-hibernate3.0、DmDialect-for-hibernate3.1、DmDialect-for-hibernate3.6、DmDialect-for-hibernate4.0、DmDialect-for-hibernate5.0、...

    hibernate-extensions和Middlegen-Hibernate

    使用hibernate-extensions和Middlegen-Hibernate,开发者可以快速搭建起基于Hibernate的项目,大大缩短项目的启动时间。例如,当你已经有了一个完整的数据库结构,只需要运行Middlegen-Hibernate,就可以得到一套...

    DmDialect-for-hibernate5.6

    "DmDialect-for-hibernate5.6"实现了DM数据库特有的SQL语法和功能,使得Hibernate在处理DM数据库时能正确生成和执行SQL语句,确保了代码的可移植性和数据库的兼容性。 这个项目的核心内容可能包括以下几个方面: 1...

    struts-sprint-hibernate

    struts-sprint-hibernate 开发案例介绍 介绍了struts-sprint-hibernate 模式的开发流程

    struts-spring-hibernate-_-integration-2.zip

    struts-spring-hibernate-_-integration-2.zip

    hibernate-jpa-2.1-api-1.0.2.Final-API文档-中文版.zip

    赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    J2EE-Struts-Hibernate

    在实际项目中,"www.pudn.com.txt"可能是一个包含教程链接、示例代码或者讨论论坛的文本文件,而"源代码"则可能包含了使用Struts和Hibernate开发的J2EE应用实例。开发者可以通过这些源代码学习如何在实际项目中集成...

Global site tag (gtag.js) - Google Analytics