hibernate的优缺点(昭通java培训学校告诉你开发主流框架有哪些优缺点)
本文目录
- 昭通java培训学校告诉你开发主流框架有哪些优缺点
- 急:Hibernate 的hql优缺点
- jdbc与hibernate的优缺点比较
- 使用hibernate的优缺点
- Hibernate与IBatis的优缺点及可行性分析
- ibatis、hibernate 、JPA 的优缺点
- Hibernate 和 JDBC 的优缺点
- hibernate的优缺点
昭通java培训学校告诉你开发主流框架有哪些优缺点
在进行软件开发的过程中,了解软件开发的主流框架是非常重要的,主流框架主要有哪些呢?Hibernate、Struts和Spring是现在使用最主流的三种框架,很多人对软件开发框架的了解非常少,在开发过程中不知道应该选择哪种框架进行使用,这三种框架有哪些优缺点呢?下面电脑培训为大家介绍这三种主流框架的优缺点。
一、Hibernate
Hibernate书属于一种开放源代码的对象关系映射框架,在使用过程中,它能够对JDBC进行对象封装,让程序员在开发过程中进行随心所欲的使用对象编程。
优点:Hibernate使用能够起到Java的反射机制,并不是使用字节码程序进行使用的。在使用过程中具有很好的性能,并且还是一个轻量级的框架程序,有很好的灵活性。Hibernate能支持很多种关系数据库,能够处理一对一和多对多的各种关系。
缺点:Hibernate在使用过程中受限于所使用的对象模型,它所独有的界面和市场范围是非常不稳定的,并且在使用过程中,IT培训认为它所具有的强大发展动力能够减少这些风险。一般情况下,它所具有的开源持久性框架只有一些,市场冲击力并不大。
二、Struts
Struts框架具有很好的组件模块性,在使用过程中有很好的灵活性和重用性,在使用过程中主要基于MVC的web程序开发。
优点:像许多Apache项目一样,如Tomcat和Turbine,Struts是一个开源软件,这是一个很大的优势。很多开发人员能够更深入地了解其内部实现机制。如果是考虑页面导航,那么昭通北大青鸟认为这是一种以后的发展方向,这样的方法对于后期的维护有着非常大的好处。
缺点:在进行学习的过程中,很多人都知道Taglib是Struts使用中的一大优势,对于初学者来说,这并不是最好的选择,因为在学习开发的时候,这是一个持续学习的过程。如果是没有经验的初学者,在使用过程中会被打乱自己编写代码的习惯,要是能够熟悉这种编程方法,对后续的学习有很大的帮助。
三、Spring
这是一个很好的开源项目,在使用过程中非常的活跃,能够和IoC、AOP的框架结构结合使用,这种框架不需要在每一层进行使用,它的模块化是非常好的,使用的时候可以选择任何一个模块进行使用,并且能够实现MVC,对于数据能够提供统一的接口。
优点:无论您是否选择使用EJB,Spring都可以有效地组织您的中间层对象。Spring消除了在许多项目中常见的Singleton的过度使用。北大青鸟昭通计算机学院认为这是一个非常严重的问题,会降低系统的可测试性和面向对象的程度。
缺点:这种框架的使用并不是很多,很多人不会选择,在使用在JSP中需要写很多的代码,并且控制器过于灵活,在使用过程中缺少公用控制器。
急:Hibernate 的hql优缺点
Hibernate优点:(1)对象/关系数据库映射(Basic O/R Mapping)它使用时只需要操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想。(2)透明持久化(Persistent) 带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短。这些对象可能是普通的JavaBeans/POJO,这个对象没有实现第三方框架或者接口,唯一特殊的是他们正与(仅仅一个)Session相关联。一旦这个Session被关闭,这些对象就会脱离持久化状态,这样就可被应用程序的任何层自由使用。(例如,用作跟表示层打交道的数据传输对象。) (3)事务Transaction (org.Hibernate.Transaction)应用程序用来指定原子操作单元范围的对象,它是单线程的,生命周期很短。它通过抽象将应用从底层具体的JDBC、JTA以及CORBA事务隔离开。某些情况下,一个Session之内可能包含多个Transaction对象。尽管是否使用该对象是可选的,但无论是使用底层的API还是使用Transaction对象,事务边界的开启与关闭是必不可少的。 (4)它没有侵入性,即所谓的轻量级框架。 (5)移植性会很好。 (6)缓存机制。提供一级缓存和二级缓存。 (7)简洁的HQL编程。2.Hibernate缺点:(1)Hibernate在批量数据处理的时候是有弱势。(2)针对某一对象(单个对象)简单的查\改\删\增,不是批量修改、删除,适合用Hibernate;而对于批量修改、删除,不适合用Hibernate,这也是OR框架的弱点;要使用数据库的特定优化机制的时候,不适合用Hibernate。以上便是我所熟悉的Hibernate的优缺点。
jdbc与hibernate的优缺点比较
关于这个问题网上讨论的很多,多查查其实也大概清楚了。我说点自己的体会吧其实刚开始用hibernate时,也没觉得有多方便,感觉配置好复杂,什么状态、关联、缓存搞不清,而且复杂的查询很难实现。开发起来缩手缩脚,如履薄冰,觉得没有jdbc来的灵活,随心所欲。hibernate用多了之后再使用jdbc,感觉jdbc好烦,老是要对应你数据库中的字段和程序中的实体。比如查询操作,hibernate中一句load(class,id) 就好了,而jdbc一直写rs.get(“你数据库字段名") ,你要一直对照数据库。hibernate的开发效率确实要高很多。还有一点感触,jdbc和数据库耦合太高,要换数据库的话,代价大。不知道你具体要了解些什么,希望对你有所帮助。
使用hibernate的优缺点
Hibernate的优缺点: 1、不需要编写的SQL语句(不需要JDBC),只需要操作相应的对象就可以了,就可以能够存储、更新、删除、加载对象,可以提高生产效; 2、因为使用Hibernate只需要操作对象就可以了,所以我们的开发更对象化了; 3、使用Hibernate,移植性好(只要使用Hibernate标准开发,更换数据库时,只需要配置相应的配置文件就可以了,不需要做其它任务的操作); 4、Hibernate实现了透明持久化:当保存一个对象时,这个对象不需要继承Hibernate中的任何类、实现任何接口,只是个纯粹的单纯对象—称为POJO对象(最纯粹的对象—这个对象没有继承第三方框架的任何类和实现它的任何接口) 5、Hibernate是一个没有侵入性的框架,没有侵入性的框架我们一般称为轻量级框架 6、Hibernate代码测试方便。 只要你hibernate学到家了,用起来绝对比写sql语句爽......这是俺们导师说的!哈哈~
Hibernate与IBatis的优缺点及可行性分析
优点
简单
易于学习 易于使用 通过文档和源代码 可以比较完全的掌握它的设计思路和实现
实用
提供了数据映射功能 提供了对底层数据访问的封装(例如) 提供了dao框架 可以使我们更容易的开发和配置我们的dal层
灵活
通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能 或许更多
功能完整
提供了连接管理 缓存支持 线程支持 (分布式)事物管理 通过配置作关系对象映射等数据访问层需要解决的问题 提供了dao支持 并在dao框架中封装了 Hibernate和datamapper 增强系统的可维护性 通过提供dal层 将业务逻辑和数据访问逻辑分离 使系统的设计更清晰 更易维护 更易单元测试 sql和代码的分离 提高了可维护性
缺点
滞后性
还没有明确对 net 的支持 最新版本在 下编译可以 但有些单元测试不能通过
不成熟 工程实践较少 ibatisnet在实际项目中的使用较少 只是理论上可行
半orm 工具支持较少 需要我们自己写sql 并且 net下还未发现可以自动生成业务层类和配置文件的工具 这点和Hibernate不一样 Hibernate会为我们的数据库直接产生sql 并有一些辅助工具 因此使用ibatis比Hibernate要多做一些工作
可行性
没有最好的框架 只有最适合的框架 存在的便是合理的 它存在就说明有它存在的道理 但它未必为我们存在 所以选择一个框架最主要的是看它对你有没有意义 意义有多大 是不是比其他框架带给 你的好处要多 没有绝对的优点也没有绝对的缺点 重要的是看在什么情况下讨论
上面说了部分的ibatis的优点和部分缺点 这些优点从理论上证明ibatis对任何数据持久层都合适 但未必是最好的选择 下面对上面的优缺点分别从两方面讨论
简单
我们都喜欢简单 简单意味着学习成本低 使用中出错的可能性低 同时 简单的东西一般来说功能不够强大 反过来 复杂的东西学习成本高 用起来不方便 并且团队没有很强的技术实力 一般不要使用
实用
解决了项目中需要解决的问题 这是任何实际工程中采用的框架和工具都应具有的性质 否则就不要拿到实际项目中来
灵活
灵活有两层意思 一种是简单易扩展 另一种是功能强大提供了很多选项 ibatis属于前者 Hibernate属于后者 两者各有优缺点
功能完整
ibatis的功能完整也是相对的 比我们自己开发的框架应该完整 但对比其他框架肯定也有一些解决不了的问题
增强系统的可维护性 利用ibatis可以做到sql和代码分离 可以设计出一个清晰的数据访问层(dal) 但项目架构是否科学合理 是否以维护 关键不在ibatis 因 为它只是一个数据层框架 但是我们也不得不清楚 要想发挥ibatis的优势 我们需要做一些额外工作 比如最好设计dao接口 需要将业务层实体和对实 体的访问放在不同的工程中 同时需要维护xml配置文件
滞后性
ibatis组现在还没有提到要支持 net 很多人在 net 下使用ibatis都出现了问题 所以如果要使用 net 开发 ibatis不是一个好选择 还需要等待
不成熟
开源的东西很难说成熟 但一般比我们自己写的框架要成熟 由于我们可以拿到他的源代码 所以关键在于我们能否驾驭它
半orm 工具支持少
这注定了ibatis不能从本质上提升开发效率 我们需要自己写sql 写实体类 写配置文件 但这也是它优越的地方 它没有为我们做的他多 所以我们就 有更多的施展空间 而且它非常适合那些并不能完全控制数据库的系统和需要利用数据库本身提供的高级特性的统计查询系统的开发
使用ibatis需要自己写sql 由于我们的sql不可能完全符合sql标准 比起Hibernate产生的sql来 可移植性差 不过由于我们更改 数据库的可能性较小 对我们来说sql符合标准以便可以在迁移到不同服务器时代价最小并不是十分必要的 另一方面 Hibernate虽然可以屏蔽很多 数据库间的不同 但是却很难利用某些数据库的高级特性 比如oracle的分析统计函数
Hibernate不适合数据库模式不规范 约束不完整 需要大量复杂查询的系统 同时Hibernate的学习成本较高 完全掌握Hibernate也较困难 风险较大
自己写框架未必比ibatis的好 稳定 强大和可扩展 而且自己开发框架也需要较大的工作量
如果使用dotnet并且要选一个数据层框架 而系统中有相当一部分较复杂的sql 或数据库设计不合理 脏数据多 对性能和资源要求严格 ibatis 是一个比较不错的选择 他的那些缺点并不是致命的 而且也是有一些解决方案的 尤其是 当选用了ibatis的dataaccess作为dao框架时 我 们可以同时使用Hibernate 和datamapper(ibatisnet的核心组件) 那样将会使风险降到最低 并且整个系统的 框架比较合理
另外 利用ibatis可以统一编码风格 节约开发成本 大家不会再把精力浪费到分页 连接池 主键生成等地方了 可以集中精力进行业务组件的编写
综上 很多时候我们要在是自己开发框架和选用第三方框架和选用什么样的框架问题上进行综合考虑 考虑的标准当然是项目的当前情况和我们希望达到目的的一个平衡
ibatis只是封装了数据访问层 替我们做了部分的对象关系映射 但我们的代价是必须要写xml配置文件 相对于Hibernate我们还要写很多 sql Hibernate通过工具直接从数据库模式生成实体类和基本的配置文件 而且大部分情况下不需要我们写sql 会较大的提升开发效率 但这些也 有很多的局限性 尤其是对环境的要求较高(数据库设计 对象设计 团队的协作等)
个人感觉ibatis对项目比较有意义的地方在于它小巧灵活 可扩展 封装了数据访问层(事务 缓存 异常 日志) 并提供了dao框架支持
利用ibatis我们可以做到代码和sql的分离 只要sql能够解决的问题 ibatis就能帮我们较容易的解决 同时也使我们的项目对某一框架的依赖 性变小(因为ibatis是非侵入性的) 这将极大的降低项目风险 减少解决复杂问题的时间 使项目的维护变得简单
ibatis对于应用的修改 调试 扩充和维护将会变得容易自然 修改时 我们主要修改的是代表模型的实体对象 xml配置文件中的sql 和/或配置文 件的resultmap(很多时候是不需要的) 同时 sql和代码分离 我们不用在代码的stringbuffer的append方法之间寻找需要修改 的sql 配置文件中的sql便利了我们的调试和对sql的评审及以后的sql重用
利用一些框架在前期一般会拖慢开发效率 因为我们需要付出学习成本 很多时候 使用框架需要写很多配置文件 在使用不熟时开发速度较慢 同时利用框架往往 使系统代码量增大 比如model 和model 模型 开发效率应该还是model 快 四层的架构肯定比两层的代码量大 但对于中后期开发和维护将会极大的提高效率
利用一些较完全的开发框架和代码生成工具 在前期会较大的提高开发效率 但在后期常常会拖慢进度 并有可能成为以后维护的梦魇 比如torque生成实体类和其对应的sql 虽大幅提高了效率 但修改负担较大
比较理想的开发方式是使用简单框架结合简单的代码生成工具 框架提供系统的基础服务 并规范开发 框架一方面提供了开发中某一方面的开发基础支持 比如数 据访问层 事务 日志 公用类 异常等 另一方面 也为开发定义了模式 定义了系统的基本轮廓 同时 通过简单的代码生成工具生成部分低级的代码 比如通 过工具从数据库模式生成实体类 这些类生成后我们可以自由修改
Hibernate是十分强大 比较完善的orm框架 不过这是它的优点也是它的缺点 J EE系统是否采用Hibernate 是一个需要认真评估的问题
要想Hibernate工作的好 数据库的设计必须好 同时对于复杂的数据操作同时需要使用sql Hibernate 对于直接使用sql的支持比Hibernate 要自然 这一点是可以接受的
Hibernate比较复杂 功能强大而灵活 要用好Hibernate确实不是很简单 当然spring框架提供了对Hibernate的封装 使Hibernate的使用变得简单了点
lishixinzhi/Article/program/Java/ky/201311/28363
ibatis、hibernate 、JPA 的优缺点
1)ibatis没有hibernate封装的程度高,我个人偏向于Ibatis,你懂得,如果不是为了工作效率,我宁愿JDBC2)hibernate不适合做大型项目。网上对hibernate的争议很大,我个人觉得hibernatre不适合做大型项目,我说的大型是指那些关系模型很复杂的项目。但是hibernate比较适合初学者用来做项目或者是小型项目。3)jpa是ejb规范的一部分。是hibernate的一个抽象或者可以理解为接口。两者关系密切。我个人认为,要是让我选的话,基于中型项目而言。应该是:ibatis-》jpa-》Hibernate
Hibernate 和 JDBC 的优缺点
Hibernate:优:面向对象的思维,一些简单查询不需要sql语句。比较方便。使用者不必了解sql语句。缺:面对一些复杂查询的时候不是很灵活,比如要查询多个表的数据作为结果集,用hibernate就要设置这些表的实体对象关联关系。(虽然hibernate也可以执行sql,但是感觉效率不高)jdbc:原生sql。需要了解sql语言。优:使用灵活 缺:jdbc需要大量的重复性劳动,比如单表查询,发出sql,根据结果集封装成对象。这种东西往往是类似的。 而hibernate只要一行代码就可以搞掂。---------纯手打,望采纳
hibernate的优缺点
Hibernate的优缺点:优点:1、程序更加面向对象;2、提高了生产率;3、方便移植(修改配置文件);4、无侵入性。缺点:1、效率比JDBC略差;2、不适合批量操作。Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
更多文章:
thinkpad x230(thinkpad x230 多少种配置)
2024年7月24日 13:14
10寸平板电脑排行榜(10寸平板电脑排行榜,现在还有优惠!)
2024年7月22日 18:17