`

Jdbc 和hibernate

阅读更多

Jdbc hibernate

 

一、Jdbcjava连接数据库的基础,无论那种框架,只要用到数据库都需要jdbc,所以掌握了jdbc的细节了才能用好更高级的框架,如hibernate

 

以下总结了jdbc的性能和效率(主要从处理时间和内存消耗上做出比较),希望能给大家带了益处。

1.  StatementPreparedStatement

2.  插入数据(一次1万条)。

3.       读数据。

4.       脏数据的问题。

5.       锁表。

6.       索引

7.       索引和select

8.       索引和insert,update

 

 

1.       StatementPreparedStatement(后续有例子)

1)      Statement

特点:statement不会初始化,没有预处理,每次都是从0开始执行SQL

优点:sql语句直观;对于只执行一次的sql(就是sql语句执行一次后就基本不再用了)存取的时侯, StatementPreparedStatement 性能高。因为PreparedStatement需要预编译。

缺点:对于需要反复执行的sql语句,则效率远远低于PreparedStatement

      对于oracle,会缓存sql语句,如果以Statement方式多次提交的相同语句sql,其中仅参数不同,oracle也会作为不同的语句缓存起来,可以查看v$sqlarea.

这就是为什么叶飞要发邮件强调的“绑定变量问题,垃圾sql多了。 呵呵,我们新业务部在这个问题上受到了表扬。

       2PreparedStatement

特点:prepareStatement会先初始化SQL,先把这个SQL提交到数据库中进行预处理,多次使用可提高效率。

优点:当sql重复多次执行时,PreparedStatement将会大大降低运行时间,加快访问数据库的速度;参数可以有?表示,方便和易读; 安全和可靠:保证数据的合法性和有效性。较少的占用Oracle的缓存空间。

           对于大数据量的操作可以用批处理的方式进行,大大提高了性能。

 

2.       插入数据:1Statement插入2PreparedStatement插入3PreparedStatement. executeBatch()插入。4CallableStatement

注:1) CallableStatement存储过程插入数据比较少见,我这个存储过程仅仅传来一个数字参数,来告诉存储过程要插入多少数据,仅仅想看看在写入相同的数据时消耗在网络上时间有多少。

2)对于oracle, 一张表如果并发的insertupdate比较频繁时可以设置in..参数。

有一个表t2(id ,name),分别用各种方式单独写入1万条数据。

测试时间:晚1230。环境 我自己的机器连接19oracle服务器。

每种情况单独运行3次的平均值。

方式

记录数insert into t2(id,name)values(?,?)

处理时间(s)

内存消耗(M

写入oracle最大数据量/

数据多时:

语句insert into t2(id,name)values(?,?)

 

 

 

Statement插入

写入1万条

(42.819+43.738+43.233)/3=43.26S

(0.046+0.046+0.036)/3=0.042M

231/每秒

PreparedStatement插入

写入1万条

(8.178+8.364+8.38)/3=8.30S

0.096+0.096+0.090=0.094M

1204/每秒

PreparedStatement. executeBatch()

写入1万条

(0.328+0.313+0.312)/3=0.32S

(0.164+0.165+0.167)/3=0.165M

31250/每秒(经验证8万条数据才用时1S

CallableStatement

写入1万条

0.812+1.078+0.797=0.90S

忽略(和我写的存储过程有关)

11111/每秒

数据少时:

 

 

 

 

Statement插入

写入1

0.078S

 

 

PreparedStatement插入

写入1

0.172s

 

 

PreparedStatement. executeBatch()

写入1

0.156s

 

 

CallableStatement

写入1

0.203s

我的存储过程有返回参数,因此网络占据了一部分时间

 

 

 

 

 

 

 

可以看出在数据多时:PreparedStatement. executeBatch()的效率最高,Statement的效率最低。

在数据少时:Statement的效率最高,存储过程的效率最低。说明下,我的存储过程有返回参数,因此网络占据了一部分时间。

在使用PreparedStatement. executeBatch()插入数据时,8万条才用时1S,可见数据量越大性能越高。

3.       读数据

关于读数据可以说是

1ResultSet.TYPE_FORWARD_ONLY:默认的游标方式 Statement PreparedStatement CallableStatement读(取出游标)

2ResultSet.TYPE_SCROLL_INSENSITIVE方式读

3)  ResultSet.TYPE_SCROLL_SENSITIVE 方式读

 

 

方式

记录数

第一次处理时间(s)

第一次内存消耗(M

第二次处理时间(S

第二次内存消耗

写入oracle最大数据量/

TYPE_FORWARD_ONLY

Statemen

100万条

103.213+ 118.941 +111.929

11.97+11.97+11.97

106.384+ 118.255+101.745

10.70+10.70+10.70

 

TYPE_FORWARD_ONLY

PreparedStatement

100万条

90.343+83.767+83.611

 
分享到:
评论

相关推荐

    jdbc和hibernate的区别

    JDBC(Java Database Connectivity)和Hibernate是两种不同的Java数据库访问技术,它们各有优缺点,适用于不同的场景。 **相同点:** 1. **中间件角色**:两者都是Java平台上的数据库操作中间件,允许开发者通过...

    oracle分别使用jdbc和hibernate的例子

    本文将深入探讨如何使用JDBC和Hibernate来操作Oracle数据库,同时结合提供的标签"源码"和"工具",我们将讨论它们的实现细节和优势。 首先,JDBC是Java语言的标准API,它允许Java应用程序与各种类型的数据库进行通信...

    jdbc和hibernate学习内容

    JDBC(Java Database Connectivity)和Hibernate是Java中处理数据库操作的两个重要工具。对于初学者来说,理解和掌握这两个技术对于深入理解Java后端开发至关重要。 JDBC是Java API,它提供了一种标准的方式来连接...

    spring分别与jdbc和hibernate结合的事务控制--案例

    本案例重点探讨了Spring如何与两种流行的数据访问技术——JDBC(Java Database Connectivity)和Hibernate——相结合,进行事务管理。事务控制是确保数据库操作一致性、完整性的关键,尤其在多步骤操作中,它能防止...

    JDBC与Hibernate的比较

    总的来说,JDBC和Hibernate各有优劣。JDBC提供了更多的灵活性和控制力,适合对性能有特殊需求或者需要精确控制SQL查询的情况;而Hibernate则更适合于需要快速开发、减少编码量并关注业务逻辑的场景。选择哪种方式取...

    JDBC与Hibernate区别

    Java开发人员来说,JDBC(Java Database Connectivity)和Hibernate是两个重要的数据库操作工具。它们各自具有独特的优点和适用场景。 JDBC是Java平台的标准接口,用于连接和操作各种类型的数据库。它提供了直接的...

    jdbc和hibernate总结

    JDBC由一组Java类和接口组成,使得Java开发者可以编写数据库独立的代码,通过驱动适配器模式来实现与特定数据库的交互。 1. **JDBC基本组件** - **Driver Manager**: 负责管理数据库驱动,加载并注册驱动。 - **...

    在JDBC,hibernate中实现分页

    以上代码展示了如何在Hibernate和JDBC中实现数据分页。通过Hibernate提供的API可以方便快捷地实现分页功能,而JDBC则需要更多的手动处理来构建合适的SQL语句和处理结果集。两种方法各有优势,开发者可以根据实际项目...

    JDBC和hibernate事务的详解

    本讲解将深入探讨JDBC(Java Database Connectivity)和Hibernate两种不同的技术在处理事务时的方法和特点。 ### 1. JDBC事务 JDBC是Java中用于与各种数据库交互的标准接口。在JDBC中,事务管理主要通过以下步骤...

    使用JDBC和Hibernate来写入Blob型数据到Oracle中

    要将Blob型数据写入Oracle数据库,我们可以使用两种常见的技术:JDBC(Java Database Connectivity)和Hibernate。JDBC是Java与数据库交互的标准API,而Hibernate则是一个ORM(Object-Relational Mapping)框架,...

    JDBC Hibernate学习笔记

    ### JDBC与Hibernate学习笔记 ...JDBC提供了与数据库交互的低级API,而Hibernate则是在JDBC基础上构建的一个高级ORM框架,能够显著减少开发过程中与数据库交互所需的代码量,并提高了开发效率和应用程序的可维护性。

    jdbc与hibernate的优缺点比较(转载的精髓).pdf

    JDBC(Java Database Connectivity)是Java中用于与数据库交互的一组接口和类,而Hibernate是一个对象关系映射(ORM)框架,它将Java对象与数据库表之间的映射过程自动化。 1. **Hibernate的优点**: - **对象化...

    基于Java 通用数据访问组件,基于mybatis、spring jdbc、hibernate.zip

    本压缩包文件"基于Java 通用数据访问组件,基于mybatis、spring jdbc、hibernate.zip"包含了一些关于如何使用Java中的三种主流数据访问技术——MyBatis、Spring JDBC和Hibernate的资源,这些技术都是Java开发者必备...

    JDBC+Hibernate将Blob数据写入Oracle

    本篇将详细介绍如何利用JDBC和Hibernate框架将Blob数据写入Oracle数据库。 首先,Blob数据类型的优点在于其比Long字段有更好的性能,适合存储大量的二进制数据。然而,Blob字段的写入方式与普通字段有所不同,因为...

    hibernate和jdbc测试

    在IT行业中,数据库操作是应用程序开发的核心部分,而Hibernate和JDBC是两种常见的Java数据库连接技术。本篇文章将深入探讨这两个技术,以及如何进行相关的测试。 首先,JDBC(Java Database Connectivity)是Java...

Global site tag (gtag.js) - Google Analytics