Hibernate 有我们想像的好吗?畅所欲言我工作有一年半,公司的主要做河南移动的相关项目,刚开始公司里用到的
Hibernate 有我们想像的好吗?畅所欲言
我工作有一年半,公司的主要做河南移动的相关项目,刚开始公司里用到的是Struts 1.3 + Spring 2.0,DAO 都是继承自JdbcDaoSupport 类。
三个月前公司做OA系统,把DAO部分用上了iBatis ,用过之后才感觉到iBatis相对于之前的JdbcDaoSupport来说是多么的灵活,特别是动态SQL语句和语句的重用性。
hibernate我自学过,但是感觉他并不像我想的那样好,笨拙又难以控制,还有可能过段时间对着电脑说:晕,我SQL语句全忘了。但我没有hibernate 的实战,没有做过项目,所以问一下大家,你们感觉hibernate 怎么样呢?
[解决办法]
开发起来速度快,真正用好,有难度
[解决办法]
开发的速度的确快,但是效率还是没有自己构造的SQL好;用多了hibernate很多东西可以被遗忘!
[解决办法]
hibernate 可以说和你学过的ibatis 差不多的一个对象关系映射框架。
ibatis 需要开发者自己写SQL语句,而hibernate 可以自己生成SQL语句。
hibernate 可以提高开发效率,相比JDBC来所。
[解决办法]
用好hibernate,还真不容易。
[解决办法]
用hibernate,如果你用xml作配置及HQL查询,要比较多的学习时间。
但如果用ejb3中的annotation作配置,用hibernate提供的Criterion等类作查询,不需要太多的学习时间就能用得很好了。
[解决办法]
Hibernate 是最优秀的持久性存储引擎,以至于 EJB3.0 就是基于 hibernate 开发的
hibernate 功能非常强大,其事务处理、命名查询、回调监听、简单方便的 O/R mapping 、缓存机制是任何一个其他的持久层框架无法相媲美的
我的资源里有本 Hibernate3.2中文参考文档.chm ,介绍的不错,有兴趣的朋友可以去看看
[解决办法]
[解决办法][解决办法]能不用就不用
[解决办法]Hibernate在性能方面是个问题。
[解决办法]在大数据量的处理,特别是移动的数据量,我认为根本就不能使用 Hibernate,效率低下!
对于数据表多,而且行数多,关系复杂,在数据库设计和 ORM 映射中就不能进行关联设置,否则效率更为
低下。
我们也是做移动相关开发的,有些表的数据量达到 5 亿多条记录,啥事都不做,光在 sql plus 中
count 一下就得好多时间。
碰到一些大数据量的处理,好多都是直接采用存储过程执行的,或者直接使用 Oracle 一些特有功能的
原生 SQL 进行查询。
[解决办法]我是个新手,学的是hibernate,可能在解决问题方面的能力还是有缺陷,但是我还说说我的看法:那天在公司,老板要我修bug,这个bug就是把文本框中的值插入到数据中去,问题是文本框中的值可以是任何字符,所以用JdbcDaoSupport的会报错,因为键盘上的很多的字符是需要转义的,而HibernateDaoSupport它底层做了判断,就不会报错。
hibernate的缺点就是不适合做批量查询。
[解决办法][解决办法]个人体会:
小型项目,没必要用什么框架,直接JDBC吧
大型项目,考虑效率问题,hibernate还是免谈吧(就像楼主的头说的,能用好的hibernate的人少)
所以,hibernate其实只适用于不大不小的项目,个人一点浅见。
[解决办法][解决办法]在大量数据存取时 根本不用hibernate
[解决办法]up
[解决办法]何去何从
------解决方案--------------------
呵呵,终于有人看到ssh的毛病了,BTW,我一开始就很排斥这种看起来很美的东西。
轮子掌握在自己的手中是王道
[解决办法]hibernate有价值?做个小网站有价值,这个我承认。要一个人搞定全部东西,ssh是一种选择。
但是,但凡有点规模的项目,能用hibernate什么呢?ORMapping,开玩笑吧,复杂的关系搞死你。而且用程序中的Object映射到数据库的表,这么干的话,DBA都做什么去了?一个DBA会允许把数据库搞成那个样子?
还有缓存,DB本身有缓存,加上连接池什么的,jdbc的效率并不低。而Hibernate非要在内存或硬盘上搞一套出来,出了浪费资源,看不到什么太大用处。你还会发现这个东西有很多缺点。
再就是使用反射机制的mapping本身,这个机制运行数据很慢。而且一定要把数据搞成对象再弄出来,有脱裤子放屁之嫌。好像人家脱裤子放屁,hibernate要问:你脱了几层?我比你脱得多!
反正,如果没有分析,没有设计,没有DBA,没有人力,还是可以考虑用这个东西。
[解决办法]与楼上观点相反
一定要有领域建模分析、有人力,有资源,才可以使用,并且会很大程度上提高开发效率
[解决办法][解决办法]具体的讲就是领域建模的能力,一开始就不要以数据库为中心,抛弃关系、ER图
[解决办法]:)那样的话hibernate还有价值?
不过我是个坚定的反架构人士,呵呵。因为那些架构能做的,我自己都能完成,
而且不比他们多少。
你愿意把Hibernate作为模型中持久层的技术选择,没有问题。
我的意思是,他是可替代的,而且自己去替代它,并不坏:)有更多,更有趣的玩法。
如果你先建模,那很欣赏,这样的机会难得。
[解决办法]在公司被迫用Hibernate好长时间了,其实用惯了也挺好用的,特别是单条记录增删改查的时候。再加上spring里的辅助类,可以少敲好多代码。HQL其实就是标准SQL再包个壳,写出高效的标准SQL(不含非标准语法)再替换成HQL也不是难事。
用Hibernate也可以调用存储过程和直接调SQL,就好比用C++也可以按C的套路去写一样。不过Hibernate主要优势在于独立于数据库,将来跨库移植方便点,不至于被数据库厂商绑架,调用存储过程和直接调SQL的话,就削弱其优势了,那就和用iBatis没啥区别了。
至于性能损失,在大多数情况是可以忍受的,毕竟单表过亿的项目是少数,单表几十万、百万级别的项目是多数。
[解决办法]还真没见过项目上换数据库。换数据这种事情,多发生在一套产品,卖给多个客户。不过郁闷的是,前些天搞了个开源,hibernate的数据层,支持mysql,换oracle也不能直接换。呵呵
开始做开发的时候,写SQL就是开发,就是业务。现在,写SQL的部分已经不是我开发的重点了。
不过,听说联通动过这方面的想法,哈哈
[解决办法]学习学习啊
[解决办法]我也有用Hibernate来做项目,有时很好用,但有时感觉直接用JDBC更方便,可能是对Hibernate还不是非常熟吧。
[解决办法]Hibernate 好东西,只要写 Xml 就可以生成数据表又可以写成代码。
[解决办法]我觉得,了解ssh的用途和优势,结合实际情况和需要,再去选择使用与否,或是怎样组合,并在设计中发挥其优势,才是框架的价值。
啥?ejb3居然是基于hibernate的??标注,尔后再来看看Hibernate3.2中文参考文档.chm
[解决办法]iBatis 肯定和 hibernate没得比 :首先 它不是一个框架 就是一个SQLMapping的映射
其次 它也不是面向对象的,而hibernate是一个纯面向对象的一个开发工具 .
hibernate开发效率非常的高,对于OA系统 可能有将近100来张表,如果写SQl语句还不累死你,如果用hibernate做的只要编写一个个的实体对象(就是javabean)然后写上配置文件就OK了,整合了spring和struts以后 在服务器启动的时候 会自动将这些实体对象转换为相应的数据库表
其次hibernate提供一级二级缓存机制 ,对事务的控制也非常好, 还有一套HQL(这个在写业务类的时候非常有用 比SQL简单多了,此外hibernate也支持原生的SQL查询). 所以做一般的项目hibernate还是有巨大的优势的
此外 hibernate的作者Gavin King已经ejb3.0的规范制定者之一,其实hibernate已经是J2EE轻量级框架的数据持久层的标准了...
[解决办法][解决办法]