- 浏览: 292803 次
- 性别:
- 来自: 唐山
最新评论
-
小灯笼:
JBPM5.4实战流程引擎开发网盘地址:https://pan ...
跟我学工作流——jBPM4视频教程(免费) -
Kai_Ge:
学会做人 写道临远大哥,谢谢你的贡献大名鼎鼎的临远!!膜拜中。 ...
Spring Security-3.0.1中文官方文档(翻译版) -
漂泊一剑客:
博主,你自己电脑上有下载,这些信息吗,能否分享一下给我
跟我学工作流——jBPM4视频教程(免费) -
Rookie_Li:
您好,您的教程很有用,请问例子的源码在哪下载?
spring security权限管理手册升级至spring security-3.1.3 -
nullFFF:
马教授 写道现在还用4有点过时了,最新的都已经是5.4了,目前 ...
跟我学工作流——jBPM4视频教程(免费)
选择一门新技术,首先要看这门技术是否能够满足目前应用的需求,我们承认任何事物都不会十分完美的同时,也在不断追求着能够为本身应用带来巨大价值的途径。
简单来说,就是因为我们很懒,所以我们会一直寻找能帮我们减轻工作量的东西。
因此,hibernate才能被社区广泛接受,这些团队选用hibernate到底是因为什么原因呢?
1.hibernate是一个orm框架,可以自动完成object和关系数据库之间的转换,加速开发。
这一点就是hibernate最大的特色,不管以前有没有玩过jdbc,看到了hibernate的hello world演示之后估计没有不赞叹的:“操作数据库怎么可能这么简单,hibernate简直是从火星来的哦。”
2.hibernate可以跨数据库。
这一点其实是实现了orm的后遗症,为了实现一个通用orm,就必须兼容主流的数据库,如果hibernate只能在某一个数据库上跑。那它肯定不会有目前的成就。
结果这一点就变成了很多产品开发的基础,这些产品只需要关注自己的业务,不需要考虑在不同的数据库之间进行迁移了,一切底层都交给hibernate,只做好自己擅长的事情,花最少的时间获得最大的价值。
3.hibernate上面附着了一大堆的扩展,hibernate-validator可以做数据校验,hibernate-search可以玩全文检索,hibernate-shard可以做水平分表。
随着不断的发展,hibernate俨然已经发展出一套产品线了,似乎我们只要选择了hibernate,就很容易获得上面说到得这些额外功能,那么到底是自己从头搞起比较爽呢?还是借助社区的力量比较容易呢?一般人还是会选择站在巨人的肩头的,如果所有人都喜欢自己玩,那开源社区也不会这么火了。
毫不脸红的夸完之后,下面是hibernate的问题:
1.封装严重,不容易理解底层实现,导致出现了问题不容易排查。
这个确实无可奈何,它做的太复杂了,但是纵观orm系列,openjpa之类的jar包大小也是在2m左右,这也就说明orm本身是复杂的,选用orm就意味着要负担它的复杂性,如果不愿意付出学习成本,还是选用更简单的实现比较好。简单实现意味着无法满足上述的优点,正所谓鱼与熊掌不可兼得,大家要在实际选型过程中仔细权衡才行。
2.有些人认为hibernate效率极其低下,无法应付庞大数据量的操作。
众所周知的情况是,系统的瓶颈往往会出现在数据库一端,因为我们可以搞20几台web服务器集群,但是加db server却不是那么容易的,一般都要经过水平分表才能实现这类需求。
而对于这种特种应用,说是用hibernate完成关键环节显然是笑话,咱们也不用多说了,还是采用专用的技术去搞定。
反过来,hibernate是否可以应对一般的应用呢?答案是肯定的,因为hibernate仅仅是在jdbc上进行的封装,只是自动处理了数据类型转换,并对每次操作都实现批量处理,相对一般的程序员来说, hibernate所实现的批量处理显然更高一些,与其让那些对数据库一知半解的人去写sql,反倒不如直接用hibernate还来的方便。
一家之言,万望各位指教
+1 ,
楼主 和 楼上这位同学的观点都很到位
非常赞同,我一开始也是用hibernate来存取pojo,甚至连外键都不配。后来学习了DDD和spring,才明白,是hibernate和spring让DDD成为可能。有了hibernate,我觉得DAO层都是多余,因为DAO这个名字就是过程化的概念,应该直接把hibernate作为Object Repository。
+1 ,
楼主 和 楼上这位同学的观点都很到位
建议大家看看领域驱动设计,还有马丁的几本老书,再来看Hibernate的设计,就知道hibernate的价值所在,以及设计成这样的原因了。
当然对hibernate了解到一定程度,完全可以跳出框框,只用你需要的部分,没必要用全hibernate中的所有功能啊。
可否参考一下bbossgroups开源项目的持久层框架,bbossgroups包含一下子项目:
1.bboss-persistent, a persistent framework.
参考bbossgroups框架来实现持久层的操作:
a.灵活的事务管理(声明式事务管理,可编程事务管理,java注解事务管理,jdbctemplate事务管理,五种经典的事务类型,支持事务嵌套,支持多数据库分布式事务)
b.灵活的访问数据库的接口(普通sql操作,预编译sql操作,普通/预编译批处理操作,存储过程,函数)
c.一套经典的数据库操作标签库(增删改查,普通sql操作,预编译sql操作,普通/预编译批处理操作)
d.经典的多数据库连接池配置管理和使用方法(所有的数据库操作接口可以直接指定连接池的名称,方便地实现对不同数据库的操作)
e.提供了简单的o/r mapping查询接口
f.提供了多种行处理器来提升查询操作的性能
g.可以方便地实现blob,clob字段的处理
h.提供分页操作接口(预编译和普通),可以方便地址各种数据库的分页操作
2.bboss-taglib, a web layer taglib framework(list tag,pageine list tag,detail tag ,logic tag,tree tag,tabpane tag,dbutil tag).
3.bboss-aop, an aop framework.(ioc ,rpc[jms,mina,jgroups,cxf webservice],bean component,cxf webservice component framworkset and so on).
4.bboss-event, an event framework(local event,remote distribute event framework base aop rpc framework).
5.bboss-util, an utility framework.
6.antbuildall, ant build project that build up projects.
7.bbossevent-client, an event remote client test project.
8.bboss-client, an rpc client test project.(jms,mina,jgroups,cxf webservice,restful).
9.bboss-ws, bboss webserive framework test project.
10.bbossgroups document 目录包含framework 开发文档和bboss aop框架的技术使用文档
bboss group project blog:
http://blog.csdn.net/yin_bp
http://yin-bp.iteye.com/
bboss group project sourceforge site url:
http://sourceforge.net/projects/bboss/files/
从bbossgroup 1.0开始,已经将以前的持久层框架,aop框架,标签库框架,事件框架,工具框架,全部作为bbossgroup 的子项目一起发布
新增antbuildall [ant complile for all bboss group projects],可以运行antbuildall下的run.bat命令编译所有的子项目,并且更新相应工程
的引用jars。
release version : bbossgroups-1.0
release date: 2010/03/18
release files:Contain all sub projects source files,distribute files,All projects dependended jars,So the file size is some bigger,do not warry,every sub project can be downloaded alone.
bbossgroups 最新版本 1.0,整合了原来所有的子项目(持久层框架,标签库框架,aop框架,事件框架),下载地址:
https://sourceforge.net/projects/bboss/files/
hibernate确实不适合用来做大型项目的持久层工具,建议参考一下bbossgroups框架来实现持久层的操作:
1.灵活的事务管理(声明式事务管理,可编程事务管理,java注解事务管理,jdbctemplate事务管理,五种经典的事务类型,支持事务嵌套,支持多数据库分布式事务)
2.灵活的访问数据库的接口(普通sql操作,预编译sql操作,普通/预编译批处理操作,存储过程,函数)
3.一套经典的数据库操作标签库(增删改查,普通sql操作,预编译sql操作,普通/预编译批处理操作)
4.经典的多数据库连接池配置管理和使用方法(所有的数据库操作接口可以直接指定连接池的名称,方便地实现对不同数据库的操作)
5.提供了简单的o/r mapping查询接口
6.提供了多种行处理器来提升查询操作的性能
7.可以方便地实现blob,clob字段的处理
8.提供分页操作接口(预编译和普通),可以方便地址各种数据库的分页操作
bbossgroups 最新版本 1.0,整合了原来所有的子项目(持久层框架,标签库框架,aop框架,事件框架),下载地址:
https://sourceforge.net/projects/bboss/files/
持久层框架子项目下载地址:
http://sourceforge.net/projects/bboss/files/bbossgroups-1.0/bboss-persistent.zip/download
+1 ,
楼主 和 楼上这位同学的观点都很到位
建议大家看看领域驱动设计,还有马丁的几本老书,再来看Hibernate的设计,就知道hibernate的价值所在,以及设计成这样的原因了。
当然对hibernate了解到一定程度,完全可以跳出框框,只用你需要的部分,没必要用全hibernate中的所有功能啊。
产品化的项目经常要根据客户的情况更换数据库
不一定大才要换...
换数据库?我们连数据库的版本都不敢换。
但是hibernate确实比较方便。
hibernate对jdbcTemplate也是支持的。有些地方habernate执行效率低的话,就改用jdbc。
产品化的项目经常要根据客户的情况更换数据库
不一定大才要换...
简单来说,就是因为我们很懒,所以我们会一直寻找能帮我们减轻工作量的东西。
因此,hibernate才能被社区广泛接受,这些团队选用hibernate到底是因为什么原因呢?
1.hibernate是一个orm框架,可以自动完成object和关系数据库之间的转换,加速开发。
这一点就是hibernate最大的特色,不管以前有没有玩过jdbc,看到了hibernate的hello world演示之后估计没有不赞叹的:“操作数据库怎么可能这么简单,hibernate简直是从火星来的哦。”
2.hibernate可以跨数据库。
这一点其实是实现了orm的后遗症,为了实现一个通用orm,就必须兼容主流的数据库,如果hibernate只能在某一个数据库上跑。那它肯定不会有目前的成就。
结果这一点就变成了很多产品开发的基础,这些产品只需要关注自己的业务,不需要考虑在不同的数据库之间进行迁移了,一切底层都交给hibernate,只做好自己擅长的事情,花最少的时间获得最大的价值。
3.hibernate上面附着了一大堆的扩展,hibernate-validator可以做数据校验,hibernate-search可以玩全文检索,hibernate-shard可以做水平分表。
随着不断的发展,hibernate俨然已经发展出一套产品线了,似乎我们只要选择了hibernate,就很容易获得上面说到得这些额外功能,那么到底是自己从头搞起比较爽呢?还是借助社区的力量比较容易呢?一般人还是会选择站在巨人的肩头的,如果所有人都喜欢自己玩,那开源社区也不会这么火了。
毫不脸红的夸完之后,下面是hibernate的问题:
1.封装严重,不容易理解底层实现,导致出现了问题不容易排查。
这个确实无可奈何,它做的太复杂了,但是纵观orm系列,openjpa之类的jar包大小也是在2m左右,这也就说明orm本身是复杂的,选用orm就意味着要负担它的复杂性,如果不愿意付出学习成本,还是选用更简单的实现比较好。简单实现意味着无法满足上述的优点,正所谓鱼与熊掌不可兼得,大家要在实际选型过程中仔细权衡才行。
2.有些人认为hibernate效率极其低下,无法应付庞大数据量的操作。
众所周知的情况是,系统的瓶颈往往会出现在数据库一端,因为我们可以搞20几台web服务器集群,但是加db server却不是那么容易的,一般都要经过水平分表才能实现这类需求。
而对于这种特种应用,说是用hibernate完成关键环节显然是笑话,咱们也不用多说了,还是采用专用的技术去搞定。
反过来,hibernate是否可以应对一般的应用呢?答案是肯定的,因为hibernate仅仅是在jdbc上进行的封装,只是自动处理了数据类型转换,并对每次操作都实现批量处理,相对一般的程序员来说, hibernate所实现的批量处理显然更高一些,与其让那些对数据库一知半解的人去写sql,反倒不如直接用hibernate还来的方便。
一家之言,万望各位指教
评论
36 楼
20055294
2010-03-22
至今 还不怎么懂 这个东西
35 楼
anky_end
2010-03-22
产品化的项目,hibernate的优势太大。
不过hibernate的缺点其实也摆在那边,hql并不简单,也不轻松。对复杂查询支持不算好;性能调试和问题排查非高手不能办。
对于习惯sql的程序员来说,debug出来奇怪的sql难以阅读
不过hibernate的缺点其实也摆在那边,hql并不简单,也不轻松。对复杂查询支持不算好;性能调试和问题排查非高手不能办。
对于习惯sql的程序员来说,debug出来奇怪的sql难以阅读
34 楼
passionke
2010-03-21
hibernate 我觉得理念是做的非常好的
弄过面向对象编程的人 虽然还有面向过程的手段
但是怎么也不愿意回头到C编程时代了
弄过面向对象编程的人 虽然还有面向过程的手段
但是怎么也不愿意回头到C编程时代了
33 楼
hatedance
2010-03-21
linliangyi2007 写道
gdpglc 写道
我觉得 hibernate 还有一个很关键的用处,也是ORM框加的重要用处,帮助程序使用面向对象的方法来表达业务逻辑。而这正是hibernate的根本所在。不理解面向对象的人,理解hibernate是有困难的。如果只把对象作为库表内容的包装,这是一种肤浅的看法。hibernate要做的是使得业务逻辑的表达只要关注对象就可以了,而对象和数据库的关系,则由hibernate来维护。在理想状态下,业务逻辑可以不考虑数据库的访问(当然现实是做不到的),这就使得面象对象的思想得以实现。
只有有了这种关念,才能把握好 对象和库表的关系,尤其是对象间关系和库表间关系的差异和对应,才能理解hiberante的种种行为。只会用hibernate存取一个POJO,用面向过程的思维来理解hibernate这叫 暴殄天物
只有有了这种关念,才能把握好 对象和库表的关系,尤其是对象间关系和库表间关系的差异和对应,才能理解hiberante的种种行为。只会用hibernate存取一个POJO,用面向过程的思维来理解hibernate这叫 暴殄天物
+1 ,
楼主 和 楼上这位同学的观点都很到位
非常赞同,我一开始也是用hibernate来存取pojo,甚至连外键都不配。后来学习了DDD和spring,才明白,是hibernate和spring让DDD成为可能。有了hibernate,我觉得DAO层都是多余,因为DAO这个名字就是过程化的概念,应该直接把hibernate作为Object Repository。
32 楼
linux1689
2010-03-21
关于Hibernate,还是等我出一本书来从底层原理上来提高用户对它的认识吧。
31 楼
former
2010-03-20
选合适的产品解决适合的问题。很多人在说这个那个框架的时候,像是在玩田忌赛马,人无完人,jar无完jar……
hibernate上升到这样的高度,对选择他的企业、项目来讲,不必要重新发明轮子、有大量的文档可查、有牛人可以被请来培训,有可用的程序员可以招揽。
hibernate的配套设施越来越全,我们在annotations、validator做扩展,就可以满足项目对于这两方面的业务需要,提高效率。
数据库我们倒是不常换,而且偶尔有些本地化的sql没法通用。
楼上同学说的OO思想极为赞同!
hibernate上升到这样的高度,对选择他的企业、项目来讲,不必要重新发明轮子、有大量的文档可查、有牛人可以被请来培训,有可用的程序员可以招揽。
hibernate的配套设施越来越全,我们在annotations、validator做扩展,就可以满足项目对于这两方面的业务需要,提高效率。
数据库我们倒是不常换,而且偶尔有些本地化的sql没法通用。
楼上同学说的OO思想极为赞同!
30 楼
yin_bp
2010-03-20
icewubin 写道
linliangyi2007 写道
gdpglc 写道
我觉得 hibernate 还有一个很关键的用处,也是ORM框加的重要用处,帮助程序使用面向对象的方法来表达业务逻辑。而这正是hibernate的根本所在。不理解面向对象的人,理解hibernate是有困难的。如果只把对象作为库表内容的包装,这是一种肤浅的看法。hibernate要做的是使得业务逻辑的表达只要关注对象就可以了,而对象和数据库的关系,则由hibernate来维护。在理想状态下,业务逻辑可以不考虑数据库的访问(当然现实是做不到的),这就使得面象对象的思想得以实现。
只有有了这种关念,才能把握好 对象和库表的关系,尤其是对象间关系和库表间关系的差异和对应,才能理解hiberante的种种行为。只会用hibernate存取一个POJO,用面向过程的思维来理解hibernate这叫 暴殄天物
只有有了这种关念,才能把握好 对象和库表的关系,尤其是对象间关系和库表间关系的差异和对应,才能理解hiberante的种种行为。只会用hibernate存取一个POJO,用面向过程的思维来理解hibernate这叫 暴殄天物
+1 ,
楼主 和 楼上这位同学的观点都很到位
建议大家看看领域驱动设计,还有马丁的几本老书,再来看Hibernate的设计,就知道hibernate的价值所在,以及设计成这样的原因了。
当然对hibernate了解到一定程度,完全可以跳出框框,只用你需要的部分,没必要用全hibernate中的所有功能啊。
可否参考一下bbossgroups开源项目的持久层框架,bbossgroups包含一下子项目:
1.bboss-persistent, a persistent framework.
参考bbossgroups框架来实现持久层的操作:
a.灵活的事务管理(声明式事务管理,可编程事务管理,java注解事务管理,jdbctemplate事务管理,五种经典的事务类型,支持事务嵌套,支持多数据库分布式事务)
b.灵活的访问数据库的接口(普通sql操作,预编译sql操作,普通/预编译批处理操作,存储过程,函数)
c.一套经典的数据库操作标签库(增删改查,普通sql操作,预编译sql操作,普通/预编译批处理操作)
d.经典的多数据库连接池配置管理和使用方法(所有的数据库操作接口可以直接指定连接池的名称,方便地实现对不同数据库的操作)
e.提供了简单的o/r mapping查询接口
f.提供了多种行处理器来提升查询操作的性能
g.可以方便地实现blob,clob字段的处理
h.提供分页操作接口(预编译和普通),可以方便地址各种数据库的分页操作
2.bboss-taglib, a web layer taglib framework(list tag,pageine list tag,detail tag ,logic tag,tree tag,tabpane tag,dbutil tag).
3.bboss-aop, an aop framework.(ioc ,rpc[jms,mina,jgroups,cxf webservice],bean component,cxf webservice component framworkset and so on).
4.bboss-event, an event framework(local event,remote distribute event framework base aop rpc framework).
5.bboss-util, an utility framework.
6.antbuildall, ant build project that build up projects.
7.bbossevent-client, an event remote client test project.
8.bboss-client, an rpc client test project.(jms,mina,jgroups,cxf webservice,restful).
9.bboss-ws, bboss webserive framework test project.
10.bbossgroups document 目录包含framework 开发文档和bboss aop框架的技术使用文档
bboss group project blog:
http://blog.csdn.net/yin_bp
http://yin-bp.iteye.com/
bboss group project sourceforge site url:
http://sourceforge.net/projects/bboss/files/
从bbossgroup 1.0开始,已经将以前的持久层框架,aop框架,标签库框架,事件框架,工具框架,全部作为bbossgroup 的子项目一起发布
新增antbuildall [ant complile for all bboss group projects],可以运行antbuildall下的run.bat命令编译所有的子项目,并且更新相应工程
的引用jars。
release version : bbossgroups-1.0
release date: 2010/03/18
release files:Contain all sub projects source files,distribute files,All projects dependended jars,So the file size is some bigger,do not warry,every sub project can be downloaded alone.
bbossgroups 最新版本 1.0,整合了原来所有的子项目(持久层框架,标签库框架,aop框架,事件框架),下载地址:
https://sourceforge.net/projects/bboss/files/
hibernate确实不适合用来做大型项目的持久层工具,建议参考一下bbossgroups框架来实现持久层的操作:
1.灵活的事务管理(声明式事务管理,可编程事务管理,java注解事务管理,jdbctemplate事务管理,五种经典的事务类型,支持事务嵌套,支持多数据库分布式事务)
2.灵活的访问数据库的接口(普通sql操作,预编译sql操作,普通/预编译批处理操作,存储过程,函数)
3.一套经典的数据库操作标签库(增删改查,普通sql操作,预编译sql操作,普通/预编译批处理操作)
4.经典的多数据库连接池配置管理和使用方法(所有的数据库操作接口可以直接指定连接池的名称,方便地实现对不同数据库的操作)
5.提供了简单的o/r mapping查询接口
6.提供了多种行处理器来提升查询操作的性能
7.可以方便地实现blob,clob字段的处理
8.提供分页操作接口(预编译和普通),可以方便地址各种数据库的分页操作
bbossgroups 最新版本 1.0,整合了原来所有的子项目(持久层框架,标签库框架,aop框架,事件框架),下载地址:
https://sourceforge.net/projects/bboss/files/
持久层框架子项目下载地址:
http://sourceforge.net/projects/bboss/files/bbossgroups-1.0/bboss-persistent.zip/download
29 楼
icewubin
2010-03-20
linliangyi2007 写道
gdpglc 写道
我觉得 hibernate 还有一个很关键的用处,也是ORM框加的重要用处,帮助程序使用面向对象的方法来表达业务逻辑。而这正是hibernate的根本所在。不理解面向对象的人,理解hibernate是有困难的。如果只把对象作为库表内容的包装,这是一种肤浅的看法。hibernate要做的是使得业务逻辑的表达只要关注对象就可以了,而对象和数据库的关系,则由hibernate来维护。在理想状态下,业务逻辑可以不考虑数据库的访问(当然现实是做不到的),这就使得面象对象的思想得以实现。
只有有了这种关念,才能把握好 对象和库表的关系,尤其是对象间关系和库表间关系的差异和对应,才能理解hiberante的种种行为。只会用hibernate存取一个POJO,用面向过程的思维来理解hibernate这叫 暴殄天物
只有有了这种关念,才能把握好 对象和库表的关系,尤其是对象间关系和库表间关系的差异和对应,才能理解hiberante的种种行为。只会用hibernate存取一个POJO,用面向过程的思维来理解hibernate这叫 暴殄天物
+1 ,
楼主 和 楼上这位同学的观点都很到位
建议大家看看领域驱动设计,还有马丁的几本老书,再来看Hibernate的设计,就知道hibernate的价值所在,以及设计成这样的原因了。
当然对hibernate了解到一定程度,完全可以跳出框框,只用你需要的部分,没必要用全hibernate中的所有功能啊。
28 楼
amonlei
2010-03-20
ps: 一下 hibernate的跨数据库其实不是100%跨,只能说80~90%跨,比如有些数据库不支持 top 这个关键字,hql里面写了就很郁闷了
27 楼
jili
2010-03-20
脱离项目特性来谈论一个技术框架,似乎有点飘忽吧?
如果项目的特征是业务模型复杂,业务逻辑难度高(比如一些企业应用),那么hibernate可以让你的实现模型更贴近业务模型和分析模型,可以让你更关注于业务本身。
如果项目特征是大数据量,高性能要求,那么hibernate未必是最适合的选择。
还是那句话,没有银弹。关键需求和关键特性决定技术选型。
如果项目的特征是业务模型复杂,业务逻辑难度高(比如一些企业应用),那么hibernate可以让你的实现模型更贴近业务模型和分析模型,可以让你更关注于业务本身。
如果项目特征是大数据量,高性能要求,那么hibernate未必是最适合的选择。
还是那句话,没有银弹。关键需求和关键特性决定技术选型。
26 楼
刃之舞
2010-03-20
没觉出用hibernate会比用jdbc增加多少开发效率,
一个连jdbc都不会用的人开发人员让他用hibernate开发绝对是噩梦,
一个连sql都写不好的让他写hql更是大噩梦
一个连jdbc都不会用的人开发人员让他用hibernate开发绝对是噩梦,
一个连sql都写不好的让他写hql更是大噩梦
25 楼
Jwind
2010-03-19
aabcc 写道
javazeke 写道
有多少项目大到要换数据库的,,,炒作炒作就好了嘛。。
产品化的项目经常要根据客户的情况更换数据库
不一定大才要换...
换数据库?我们连数据库的版本都不敢换。
但是hibernate确实比较方便。
24 楼
lxf9501
2010-03-19
用spring jdbc template的飘过
23 楼
yangjim
2010-03-19
skydream 写道
分享一下我们目前的做法,简单的说就是两条腿走路:
1. 对于性能敏感的地方,使用spring jdbc template
2. 对于性能不大敏感的地方,使用hibernate
一直觉得技术没有绝对的好与不好,关键在于用的地方是否合适。
1. 对于性能敏感的地方,使用spring jdbc template
2. 对于性能不大敏感的地方,使用hibernate
一直觉得技术没有绝对的好与不好,关键在于用的地方是否合适。
hibernate对jdbcTemplate也是支持的。有些地方habernate执行效率低的话,就改用jdbc。
22 楼
zhanghaocool
2010-03-19
这么说jdo也很好哇,也能加速开发(没有HQL不知道快不快..),比hibernate更能跨数据库,而且还是一种规范,不喜欢这家实现可以换那家
21 楼
firewood
2010-03-19
在做过的许多项目中 大多是阉割过的hibernate 使用hibernate各种关系的话 程序员对业务跟hibernate必须相当的理解 否则将加大开发跟维护难度
当然单纯的单表操作hibernate是优于jdbc的
当然单纯的单表操作hibernate是优于jdbc的
20 楼
aabcc
2010-03-19
javazeke 写道
有多少项目大到要换数据库的,,,炒作炒作就好了嘛。。
产品化的项目经常要根据客户的情况更换数据库
不一定大才要换...
19 楼
firewood
2010-03-19
不可否认 hibernate的实现机制 使得它在批量修改 删除操作时 性能相对jdbc是下降的
18 楼
skydream
2010-03-19
分享一下我们目前的做法,简单的说就是两条腿走路:
1. 对于性能敏感的地方,使用spring jdbc template
2. 对于性能不大敏感的地方,使用hibernate
一直觉得技术没有绝对的好与不好,关键在于用的地方是否合适。
1. 对于性能敏感的地方,使用spring jdbc template
2. 对于性能不大敏感的地方,使用hibernate
一直觉得技术没有绝对的好与不好,关键在于用的地方是否合适。
17 楼
tianhaoleng
2010-03-19
不要把关注点总放在什么性能啊,跨数据库上好不。
hibernate出现的唯一目的就是解决面向对象编程和关系数据库之间的阻抗。
使用hibernate你只需要考虑一点:
我这个软件设计是采用面向对象设计还是数据库思维设计。
如果是前者,就应该使用hibernate.
hibernate出现的唯一目的就是解决面向对象编程和关系数据库之间的阻抗。
使用hibernate你只需要考虑一点:
我这个软件设计是采用面向对象设计还是数据库思维设计。
如果是前者,就应该使用hibernate.
发表评论
-
2010年11月27日周六去beijing open party讲讲jbpm4,有兴趣的话请过来一同聊聊。
2010-11-24 18:00 2725Hi All, 打算2010年11月27日下午13 ... -
轻量级工作流引擎jBPM 4.4正式发布
2010-07-20 19:31 5653jBPM-4.4于2010年7月19日正式发布。 jBP ... -
拖延一个多月后,jBPM-4.4发布CR1候选版
2010-07-15 22:06 2291Alejandro太谨慎了,发布jBPM-4.4之前还搞了一个 ... -
jBPM-4.3所需的最小依赖库列表
2010-06-18 17:06 5038这个问题被问到的次数太多了,无可奈何,只好花点儿时间整理一下。 ... -
jbpm4experiment——基于jbpm4的试验性项目
2010-05-31 14:15 5316官方的发布以稳重为主,所以也让人感觉步伐迟缓,自己建一个项目则 ... -
jBPM 4.4发布日期暂定于2010年6月4日
2010-05-24 09:51 2729jbpm官方终于传来好消息,jBPM 4.4可能在下月初发布。 ... -
jBPM 创始人发布BPMN原生引擎Activiti-5.0-alpha1
2010-05-20 09:21 5699Tom Baeyens也就是jBPM的原作者,离开了Red H ... -
寻求重现jbpm4.3中executionId映射错误的场景
2010-04-27 10:56 2587目前测试的结果是hibernate-3.2.1.ga以及之前 ... -
感受jBPM的动荡,想为jBPM4创建一个社区版的分支
2010-04-19 08:58 5015jBPM4的发展遇到了瓶颈,官方已经有一个多月没有更新代码了, ... -
跟我学工作流——jBPM4视频教程(免费)
2010-03-06 15:40 29659新的一年,为了让工作流方面的初学者更快上手开发,我们录制了jB ... -
jBPM-4.x常见问题解决方案FAQ
2010-01-22 09:18 3055这段时间整理的jBPM-4.x常见问题以及解决方案,希望帮助对 ... -
轻量级工作流jBPM-4.3官方“开发指南”中文版
2009-12-30 13:41 4487jBPM-4.3这次升级的重头戏都放在开发指南里了,添加的最大 ... -
轻量级工作流jBPM-4.3官方“用户手册”中文版
2009-12-30 11:25 3515jBPM-4.3准时发布,这次用户手册修改不大,主要是换换xm ... -
谁应该用流程设计器
2009-11-23 12:44 1910谁应该用流程设计器 ... -
数据建模与业务建模
2009-11-20 09:43 2450数据建模与业务建模 无论是企业信息系统还是web网站,各种大 ...
相关推荐
在Java开发领域,Hibernate是一个非常重要的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。当涉及到Hibernate项目时,为了使其正常运行,通常需要一系列的JAR(Java ...
Hibernate是一个开源的Java库,它提供了一种在Java应用中持久化数据的方式,使得开发者无需编写大量的SQL语句,即可实现对数据库的CRUD(创建、读取、更新和删除)操作。它的核心理念是将面向对象的模型映射到传统...
【标题】:“Hibernate、Spring和Struts工作原理及使用理由” 【内容】: Hibernate是一个流行的Java持久化框架,它的核心工作原理主要包括以下步骤: 1. **读取并解析配置文件**:Hibernate通过读取hibernate....
标题“菜鸟快速运行第一个hibernate”表明了这是一个针对初学者的教程,旨在帮助他们快速上手并成功运行他们的第一个Hibernate项目。Hibernate是一个强大的Java ORM(对象关系映射)框架,它简化了数据库操作,使得...
7. ejb3-persistence.jar:包含Java Persistence API (JPA)的实现,尽管Hibernate有其自己的ORM机制,但有时也需要与JPA标准兼容,这个库提供了这种支持。 8. slf4j-api-1.5.8.jar:简单日志门面(SLF4J)是一个为...
**hibernate完整的一个项目** 本项目旨在提供一个完整的Hibernate框架的实现,涵盖了从环境搭建到实际应用的全过程。Hibernate是Java开发中的一个强大的对象关系映射(ORM)框架,它简化了数据库与Java对象之间的...
Hibernate 是一个基于 Java 的持久层框架,提供了一个抽象的数据访问层,能够与多种数据库进行集成。在 Hibernate 的配置文件中,我们可以配置不同的数据库连接,包括驱动程序、URL 等信息。 配置 Hibernate 连接...
Hibernate是一个强大的对象关系映射(ORM)框架,它允许Java开发者在Java应用程序中处理数据库操作,而无需直接编写SQL语句。在这个“Hibernate需要的所有的jar包”中,包含了实现Hibernate功能所需的关键库。以下是...
传统的 JDBC 编程需要编写大量的代码来处理数据库交互,而 Hibernate 则提供了一种简洁的方式来访问关系数据库。 Hibernate 的主要优点是: * 简化了数据库交互的过程 * 提高了开发效率 * 提高了系统的可维护性 ...
6. **第一级缓存和第二级缓存**:Hibernate内置了第一级缓存,每个Session都有自己的缓存;第二级缓存是可选的,可以跨Session共享,通常由缓存提供商如Ehcache提供。 7. **事务管理**:Hibernate支持JTA(Java ...
在探讨Hibernate注入的三种方式时,我们主要关注的是如何...这种方式不需要使用`LocalSessionFactoryBean`,而是直接在应用的配置文件中声明一个`SessionFactory` Bean,并将其注入到DAO类中。示例代码如下: ```xml ...
JPA、ORM和Hibernate之间的关系是:ORM是一种思想,JPA是这种思想的具体表现形式,即按照Java语法规范定义的一套标准接口,Hibernate则是这组接口的一个具体实现。 Hibernate框架的下载和配置也是Java开发人员必须...
在Hibernate映射文件(hbm.xml)中,如果指定了not-null属性为true,那么对应的JavaBean字段就必须有值,否则会引发这个异常。 2. **Hibernate配置**: `Hibernate.cfg.xml`文件是Hibernate的配置文件,包含了...
Hibernate 是一个基于Java的ORM(Object-Relational Mapping,对象关系映射)框架,它提供了一种简洁高效的方式来访问和操作关系数据库。下面是 Hibernate 的主要知识点: Hibernate 简介 Hibernate 是一个开源的...
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库
Hibernate是一个开源的ORM框架,它提供了一种在Java应用中持久化数据到关系数据库的方式,通过将Java对象映射到数据库表,实现了对象和SQL的解耦,使得开发者可以更加专注于业务逻辑而不是繁琐的数据库操作。...
Hibernate是一款强大的Java持久化框架,它为Java开发者提供了一种对象关系映射工具,使得开发者可以使用面向对象的方式来操作数据库,极大地简化了数据库操作。在Java应用中,尤其是在企业级应用开发中,Hibernate是...
Hibernate 是一个开源的O/R mappimg的框架,基于JDBC提供了一种持久性数据管理的方案,相对于EntityBean来说是相当轻量级的。由于Hibernate是基于 JDBC的,所以它的数据库查寻的能力相对于CMP来说也是异常强大的,...
在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者用面向对象的方式处理数据库操作。在开发过程中,为了调试和优化SQL查询,有时我们需要查看Hibernate生成的完整SQL语句,包括其参数...
这个jar包是使用Hibernate时必不可少的。 2. 数据库连接和驱动: - MySQL驱动:例如`mysql-connector-java.jar`,它是与MySQL数据库通信的桥梁,使得Hibernate能够通过JDBC(Java Database Connectivity)接口连接...