zoukankan      html  css  js  c++  java
  • jdbc与hibernate性能比较总结

      hibernate是对jdbc的一个轻量级封装,屏蔽了jdbc直接操作数据库的面向关系与面向对象的矛盾,采用面向对象编程,能够简化开发。

      对象之间的依赖关系,继承关系我们都可以采用Hibernate映射到数据库中;jdbc对查询数据基本没有优化,而hibernate通过二级缓存进行搞性能优化,比如两条相同的查询语句,查询相同的数据,Hibernate首先会从数据库查找,第一次查询的时候,也会把查询的数据放入缓存中最备份,第二次查询的时候就不用访问数据库了,直接从缓存中获取,这就大大的优化的数据库。

      

      JDBC与Hibernate在性能上相比,JDBC灵活性有优势。而Hibernate在易学性,易用性上有些优势。当用到很多复杂的多表联查和复杂的数据库操作时,JDBC有优势。

    相同点:

    ◆两者都是JAVA的数据库操作中间件。

    ◆两者对于数据库进行直接操作的对象都不是线程安全的,都需要及时关闭。

    ◆两者都可以对数据库的更新操作进行显式的事务处理。

    不同点:

    ◆使用的SQL语言不同:JDBC使用的是基于关系型数据库的标准SQL语言,Hibernate使用的是HQL(Hibernate query language)语言

    ◆操作的对象不同:JDBC操作的是数据,将数据通过SQL语句直接传送到数据库中执行,Hibernate操作的是持久化对象,由底层持久化对象的数据更新到数据库中。

    ◆数据状态不同:JDBC操作的数据是“瞬时”的,变量的值无法与数据库中的值保持一致,而Hibernate操作的数据是可持久的,即持久化对象的数据属性的值是可以跟数据库中的值保持一致的。

    Hibernate与jdbc哪个好?各自的优点和缺点
    1、内存消耗:采用JDBC的无疑是最省内存的,Hibernate的次之 
    2、运行效率:如果JDBC的代码写的非常优化,那么JDBC架构运行效率最高,但是实际项目中,这一点几乎做不到,这需要程序员非常精通JDBC,运用Batch语句,调整PreapredStatement的Batch Size和Fetch Size等参数,以及在必要的情况下采用结果集cache等等。而一般情况下程序员是做不到这一点的。因此Hibernate架构表现出最快的运行效率。

    3、开发效率:在大的项目,特别是持久层关系映射很复杂的情况下,Hibernate效率高的惊人,JDBC次之

    延迟加载是罪魁祸首,所谓“成也萧何,败也萧何”。

    有时发现查询速度很慢,检查才发现是我没有启用延迟加载,造成递归的数据都被加载进来了。

    如果加上了延迟加载,那么许多页面将无法使用,必须在程序里进行代码级别的递归的延迟加载数据的读取。

    1 用hql来写查询语句,这是最高效的办法(推荐) 
    2 用jdbc,脱离了hibernate范畴,缓存方面和乐观所方面会出现不一致,而且语句变得繁琐了(不推荐) 
    3 将前台要用到的实体,独立设计成单独的类,没有任何关联,都是单表,用到的只是hibernate的封装以及简单的or映射 
    4 在大数据量系统中都会遇到类似的问题,我的解决方法是少用一对多关联映射或者不用一对多关联,设置关联少的数据表,用SQL语句做关联的查询,hibernate中映射的配置 
    lazy都为false

    更多比较:

    http://www.ibm.com/developerworks/cn/java/j-lo-hibernate-jdbc/

  • 相关阅读:
    Ubuntu配置sublime text 3的c编译环境
    ORA-01078错误举例:SID的大写和小写错误
    linux下多进程的文件拷贝与进程相关的一些基础知识
    ASM(四) 利用Method 组件动态注入方法逻辑
    基于Redis的三种分布式爬虫策略
    Go语言并发编程总结
    POJ2406 Power Strings 【KMP】
    nyoj 会场安排问题
    Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.
    Java的String、StringBuffer和StringBuilder的区别
  • 原文地址:https://www.cnblogs.com/cxyzl/p/2570543.html
Copyright © 2011-2022 走看看