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
相关推荐
JDBC与Hibernate的比较JDBC与Hibernate的比较
struts+hibernate+jdbc双表查询
分别使用Hibernate和JDBC操作数据库
Hibernate与JDBC对于数据库的性能操作对比事例,配置,更多信息资源
NULL 博文链接:https://joynet007.iteye.com/blog/784739
kingbaseV8 hibernate jdbc 驱动
JDBC与Hibernate在性能上相比,JDBC灵活性有优势。而Hibernate在易学性,易用性上有些优势。当用到很多复杂的多表联查和复杂的数据库操作时,JDBC有优势。 相同点: ◆两者都是JAVA的数据库操作中间件。 ◆两者对于...
简介Hibernate和JDBC, 并比较二者的关联于区别
jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和...
hibernate和jdbc测试
hibernate所需包:hibernate3,依赖包,JDBC
类似hibernate的jdbc简单封装,说不定大家用的上。。
比较了Hibernate和JDBC的性能和实用场景。
两个项目,一个项目是基于spring jdbc实现的分布式事务,一个是基于spring hibernate的分布式事务,hibernate项目里的applicationContext2.xml是基于mysql和mssql, applicationContext3.xml基于两个mssql, ...
中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱动默认的Fetch Size=15,...<prop key="hibernate.jdbc.batch_size">100</prop> --> <prop key="hibernate.jdbc.batch_size">50 </property>
NULL 博文链接:https://zhaoshijie.iteye.com/blog/910464
Hibernate hibernate.jdbc.batch_size 测试带有 MySQL JDBC 驱动程序的 Hibernate 批量插入示例。 에 관한 설명
hibernate+jdbc版课设 新闻发布系统,附加sql脚本。。。。
初学java者 学习jdbc和hibernate内容
STRUTS+HIBERNATE+JDBC+MYSQL+jsp(综合系统,请假系统,订饭系统).rar STRUTS+HIBERNATE+JDBC+MYSQL+jsp(综合系统,请假系统,订饭系统).rar