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
相关推荐
标题中的“本人理解hibernate 与 JDBC 的最本质区别”揭示了我们即将探讨的核心主题:Hibernate 和 JDBC 在处理数据库操作时的不同之处。 Hibernate 是一个对象关系映射(ORM)框架,而 JDBC(Java Database ...
4. **Hibernate与JDBC比较**: - Hibernate抽象了数据库层,使代码更简洁,降低了维护成本。 - Hibernate提高了开发效率,减少了SQL编写工作。 - Hibernate的查询优化可能不如直接手写的SQL,但在大部分场景下...
本文将深入探讨Spring如何为Hibernate和JDBC提供支持,帮助开发者更高效地进行数据访问操作。 首先,Spring对Hibernate的支持体现在其集成层面。通过Spring,我们可以将Hibernate的SessionFactory和Session对象的...
总结起来,"struts+hibernate+jdbc双表查询"是关于如何在Java Web项目中,利用Struts处理请求,Hibernate管理数据对象与数据库的映射,以及JDBC进行复杂数据库操作,特别是涉及到两个表之间的联合查询。在实际开发中...
通常情况下,JDBC与数据库交互的一般步骤包括: 1. **加载特定的JDBC驱动程序**:因为该驱动程序实际上负责与数据库进行通信。 2. **打开连接**:使用这个连接来发送SQL语句并获取结果。 3. **创建JDBC Statement...
Hibernate与JDBC对于数据库的性能操作对比事例,配置,更多信息资源
### JDBC与Hibernate的比较 在软件开发领域,尤其是在基于Java的应用程序中,数据库访问技术的选择对项目的成功至关重要。本文将详细探讨两种常见的Java数据库访问方式:JDBC(Java Database Connectivity)与...
比较两者,JDBC适合简单的数据库操作,而Hibernate更适合复杂的业务逻辑和大型项目,因为它的ORM特性减少了大量手动SQL编写的工作量,提高了开发效率和代码的可维护性。在实际项目中,开发者通常根据需求和项目规模...
Hibernate通过JDBC与数据库进行通信,执行SQL语句。在Hibernate中,JDBC驱动程序是必要的,以便应用程序能够连接到特定的数据库。例如,"mysql-connector-java-3.1.13-bin.jar"就是MySQL的JDBC驱动,用于连接到MySQL...
在Java开发环境中,与KingbaseV8数据库进行交互通常会用到Hibernate框架和JDBC驱动。 Hibernate是一个优秀的对象关系映射(ORM)框架,它简化了Java应用程序对数据库的操作,通过将Java对象与数据库表进行映射,...
而Hibernate则提供了持久化对象的概念,这些对象的属性值可以与数据库保持一致,简化了数据管理。 总结起来,JDBC和Hibernate各有优势,选择使用哪种取决于项目需求。对于性能敏感、需要高度控制的场景,JDBC可能是...
Hibernate是一个流行的Java对象关系映射(ORM)框架,它简化了数据库操作,将SQL语句与Java代码解耦,提供了面向对象的方式来处理数据。然而,有些场景下,我们可能并不需要完整的ORM功能,而是寻求一个轻量级的解决...
对于性能测试,可以比较使用JDBC和Hibernate执行相同任务的时间消耗,评估哪种方式更高效。同时,要关注内存使用情况,因为ORM框架可能会增加内存开销。 在进行测试时,使用单元测试框架,如JUnit,可以帮助自动化...
两个项目,一个项目是基于spring jdbc实现的分布式事务,一个是基于spring hibernate的分布式事务,hibernate项目里的applicationContext2.xml是基于mysql和mssql, applicationContext3.xml基于两个mssql, ...
`hibernate.jdbc.batch_size`是Hibernate配置中的一个重要参数,用于控制批处理操作的大小。本文将深入探讨这个参数的意义、作用以及如何在实际应用中进行测试。 批量插入是提高数据库性能的有效手段,特别是在大量...
这两个文件夹可能分别包含了项目中与JDBC和Hibernate相关的代码。"jdbc"文件夹可能包含了一些自定义的JDBC操作,如连接池配置、数据访问对象(DAO)类,或者是一些在Hibernate未能完全覆盖到的特定数据库操作。而...
Java编程领域中,数据库操作是不可或缺的一部分,而Hibernate和JDBC是两种常用的数据访问技术。本文将深入探讨这两种技术,并对比它们的特点、优缺点以及适用场景。 Hibernate是一种强大的对象关系映射(ORM)框架...
例如,如果设置了`default-cascade="all"`,那么在保存或更新一个实体时,Hibernate会自动更新与该实体相关的所有关联对象的状态。这样不仅可以简化代码,还可以确保数据的一致性。 #### 七、监控并调整Hibernate的...
1. **SQL语言**:JDBC直接使用标准SQL与数据库通信,而Hibernate则使用HQL(Hibernate Query Language),一种面向对象的查询语言,更贴近Java代码。 2. **操作对象**:JDBC操作的是数据,需要手动编写SQL语句,而...