Java---JDBC学习

Java---JDBC学习

1、JDBC简介

JDBC全称为Java Data Base Connectivity(java数据库链接)

可以为多种数据库提供统一的访问

体现了Java“编写一次,处处运行”的高大上精神


2、JDBC编程步骤


1、加载驱动程序: Class.forName(driverClass)

加载MySQL驱动:Class.forName("com.mysql.jdbc.Driver")

加载Oracle驱动:Class.forName("oracle.jdbc.driver.OracleDriver")

2、获得数据库链接

Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/database",“root”,"root");

3、创建Statement对象:Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("");


3、JDBC各种链接方式对比


1、JDBC + ODBC桥的方式。特点:需要数据库的ODBC驱动,仅适用于微软的系统
这种方式,JDBC将调用传递给ODBC,然后ODBC再调用本地的数据库驱动代码。
2、JDBC + 厂商API的形式。特点:厂商API一般使用C编写
这种方式,JDBC将调用直接传递给厂商API的服务,然后在调用本地的数据库驱动。
3、JDBC + 厂商Database Connection Server + DataBase的形式。
特点:在JAVA与DATABASE之间架起了一台专门用于数据库连接的服务器(一般有数据库厂商提供)
这种方式,JDBC将调用传递给中间服务器,中间服务器再将调用转换成数据库能够被调用的形式,在调用数据库服务器。中间增设数据库服务器能够提升效率,但不如直接操作数据库便捷。
4、JDBC + DATABASE的连接方式。
特点:这使得Application与数据库分开,开发者只需关心内部逻辑的实现而不需注重数据库连接的具体实现。(没有中间环节,是推荐方式!)

4、JDBC调用存储过程

1、JDBC调用无参存储过程
首先写存储过程代码:
CREATE PROCEDURE imoc.sp_select()
BEGIN
select *from imoc_goddess;
END;

调用过程:
Connection c = DBHelper.getConnection();
CallableStatement cs = c.PrepareCall("call sp_select");
cs.execute();
ResultSet rs = cs.getResultSet();
然后遍历结果集!
2、JDBC调用输入参数存储过程
首先写存储过程代码:


3、JDBC调用输出参数存储过程
首先写存储过程代码:

4、JDBC调用输入、输出存储过程

5、事务管理

事务的概念
.事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作
.这些操作作为一个整体一起向系统提交,
要么都执行、要么都不执行
事物特点:
1、原子性(完整一致)
2、一致性(同时操作)
3、隔离性(互不影响)

4、永久性(永久保存)

6、JDBC对事务管理的支持

1、我们通过提交commit()或是回退rollback()来管理事务的操作
2、事务操作默认是自动提交
3、可以通过setAutoCommit(false)来禁止自动提交

jdbc实现事务
先将自动提交关闭    conne.setAytoCommit(false);
然后try catch整个事物
如果有异常就catch住执行回滚   conn.rollback();
当正常执行整个事物{try块}后,在最后一行手动提交commit

7、JDBC连接池

背景

1、数据库连接池是一种重要的资源

2、频繁的连接数据库会增加数据库的压力

3、为解决以上问题出现连接池技术

常用的开源数据库连接池

1、dpcp

1、导入相关的jar包

commons-dbcp2-2.1.1.jar

commons-pool2-2.4.1.jar

commons-logging-1.2.jar

2、在项目根目录增加配置文件

dbcp.properties


2、c3p0

c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3和JDBC2的标准扩展

1.导入相关jar包

c3p0-0.9.2-pre4.jar

mchange-commons-java-0.2.2.jar

2.在项目根目录增加配置文件

c3p0.properties

3.编写类文件,创建连接池



8、JDBC替代品

1、Commons-dbutils
Apache组织提供的一个开源JDBC工具类库,对传统操作数据库的类进行二次封装,可以把结果集转化成List。
特点:
1.杜绝资源泄漏。修正JDBC代码并不困难,但是这通常导致连接泄漏并且难以跟踪到。
2.大段的持久化数据库到数据库代码彻底精简,剩下的代码清晰地表达了编码的意图。
3.不需要手工从ResultSet里set值到JavaBean中,每一行数据都将会以一个Bean实例的形式表现。
核心接口

1.DbUtils 

提供如关闭、装载JDBC驱动程序等常规工作的工具类

2.QueryRunner

该类简化了SQL查询,它常与ResultSetHandler组合在一起使用。

3.ResultSetHandler

执行处理一个java.aql.ResultSet,将数据转变并处理为任何一种形式,这样有益于其应用而且使用起来更容易

2、Hibernate
一种Java语言下的对象映射的解决方案。它是一种自由、开源的软件。
优点:
1、轻量级的ORM框架
2、对JDBC进行了很好的封装,使用了ORM做了映射,那么就可以通过面向对象的方式很容易的操作数据库了。
3、它还提供了 缓存机制,可以提高效率

缺点:

如果对大量的数据进行频繁的操作,性能效率比较低,不如直接使用JDBC

核心接口:

1、Seesion接口

Seesion接口负责执行被持久化对象的CRUD(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句)

2、SessionFactory接口:

SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。

3、Configuration接口:

Configuration接口负责配置并启动Hibernate,创建SessionFactory对象

4、Transation接口:

Transation接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。

5、Query和Criteria接口:

Query和Criteria接口负责执行各种数据库查询。它可以使HQL语言或SQL语句两种表示。

3、Mybatis
MyBatis是支持普通SQL查询,存储和高级映射的优秀持久层框架
特点:
1、易于上手和掌握
2、SQL写在xml中,便于统一管理和优化
3、解除了SQL与程序的耦合
4、提供映射标签,支持对象与数据库的orm字段关系映射
5、提供对象关系映射标签,支持对象关系组建维护
6、提供xml标签,支持编写动态的SQL


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值