Spring原理之JDBC

一、JDBC原理

    JDBC(Java Data Base Connectivity, java数据库连接)是一种用于执行SQL语句的JavaAPI,可为多种关系数据库提供统一的访问方式,它由一组用Java语言编写的类和接口组成。

参看:https://blog.csdn.net/xing_kong_xia_xiang/article/details/7

1、JDBC查询数据库数据,一般需要以下七个步骤:

(1)  加载JDBC驱动

(2)  建立并获取数据库连接

(3)  创建 JDBC Statements 对象

(4)  设置SQL语句的传入参数

(5)  执行SQL语句并获得查询结果

(6)  对查询结果进行转换处理并将处理结果返回

(7)  释放相关资源(关闭Connection,关闭Statement,关闭ResultSet)

2、 Driver接口及驱动类加载

Class.forName("oracle.jdbc.driver.OracleDriver");

   这条语句的含义是:装载Oracle的驱动类,驱动了会通过static块实现在DriverManager中的“自动注册”。

3、Connection接口

    Connection接口负责应用程序对数据库的连接,在加载驱动之后,使用url、username、password三个参数,创建到具体数据库的连接。Connectin只是接口,真正的实现是由数据库厂商提供的驱动包完成的。例如:

Connection connection = DriverManager.getConnection(url, user, password);

4、Statement接口

    Statement接口用来处理发送到数据库的SQL语句对象,通过Connection对象创建。三个常用的方法:execute、executeQuery、executeUpdate。例如:

Statement stmt=conn.createStatement();
//1.execute方法,如果执行的sql是查询语句且有结果集则返回true,如果是非查询语句或者没有结果集,返回false
boolean flag = stmt.execute(sql);
//2.执行查询语句,返回结果集
ResultSetrs = stmt.executeQuery(sql);
//3.执行DML语句,返回影响的记录数
int flag = stmt.executeUpdate(sql);

5、ResultSet接口

     执行查询SQL语句后返回的结果集,由ResultSet接口接收。常用处理处理方式:遍历/判断是否有结果(登录)。

参看:https://blog.csdn.net/qq_27853161/article/details/53608880

二、Spring Jdbc实现

1、JdbcTemplate

     JdbcTemplate是操作数据库的类,它提供了许多便利的数据库操作方法。类图如下:

JdbcTemplate的execute执行时序如下:

JdbcTemplate中的query、update等方法,大多都依赖于前面提到的execute方法。时序图如下:

2、Spring JDBC中的RDBMS操作对象的实现

      Spring  Jdbc不仅通过JdbcTemplate提供了许多简单的查询和更新功能,而且提供了更高层次的、更面向对象的访问方式。Spring JDBC中的RDBMS对象的类图如下:

通过MappingSqlQuery可以将数据库表的数据记录直接映射到一个对象集合,实现一个简单的O/R映射。

具体的调用时序如下:

通过使用Spring JDBC提供的SqlQuery基本特性,免去了手工处理ResultSet数据,对其中每一条数据记录进行逐个迭代,手工 转化为Java对象的繁琐过程。

      同样,SqlUpdate的使用也很简单,只需要提供具体的参数对象的值,并调用update方法就可以完成整个数据的更新过程。设计时序如下:

SqlFunction

SqlFunction类中封装了一个SQL函数包装器,使用这个包装器可以查询并返回一个单行结果集。默认返回对象是一个int值,其他返回类型可以仿照JdbcTemplate中的queryForXXX的实现。使用SqlFunction的优势是用户不必手动创建JdbcTemplate。

用法实例:

// 创建并初始化IoC容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("config.xml");
		
DataSource dataSource = (DataSource)applicationContext.getBean("dataSource");
SqlFunction sf = new SqlFunction(dataSource, "select count(*) from USER_TABLES");
sf.compile();

System.out.println("USER_TABLES Records Count : " + sf.run());

SqlFunction的设计时序:

三、Spring ORM的设计与实现

       Java作为面向对象的语言,与从数学理论发展起来的关系数据库技术在基础上存在很大的不同,Java在与关系数据库打交道的过程中就出现了一些不匹配的地方,为了解决这些不匹配问题,出现了ORM技术。

       已经存在成熟的ORM产品,比如Hibernate、MyBatis等。

       Spring不提供具体的ORM实现,只为应用提供对ORM产品的集成环境和使用平台,更像是对第三方ORM产品提供驱动支持。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring事务原理如下: 1. Spring事务抽象 Spring事务抽象是Spring框架对事务管理的一种封装,它提供了一种统一的事务处理方式,使得我们可以在不同的事务管理API之间进行切换,而不需要修改代码。Spring事务抽象包括了事务管理器、事务定义、事务状态等。 2. Spring事务管理器 Spring事务管理器是Spring框架中用于管理事务的核心接口,它定义了事务的边界和事务的属性,以及事务的提交和回滚等操作。Spring事务管理器支持多种事务管理方式,包括JDBC事务、Hibernate事务、JPA事务等。 3. Spring事务传播行为 Spring事务传播行为是指在多个事务方法相互调用的情况下,事务应该如何传播的问题。Spring事务传播行为包括了7种传播行为,分别是REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER、NESTED。 4. Spring事务隔离级别 Spring事务隔离级别是指在多个事务并发执行的情况下,事务之间应该如何隔离的问题。Spring事务隔离级别包括了4种隔离级别,分别是READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE。 5. Spring事务回滚机制 Spring事务回滚机制是指在事务执行过程中,如果发生异常或者手动回滚,事务应该如何回滚的问题。Spring事务回滚机制包括了默认回滚规则、自定义回滚规则、手动回滚等方式。 6. Spring事务实现原理 Spring事务实现原理是指Spring框架是如何实现事务管理的问题。Spring事务实现原理包括了AOP代理、事务拦截器、事务同步器等。 以下是一个简单的Spring事务示例: ```java @Service @Transactional public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Override public void transfer(String fromUser, String toUser, double amount) { User from = userDao.findByName(fromUser); User to = userDao.findByName(toUser); from.setBalance(from.getBalance() - amount); to.setBalance(to.getBalance() + amount); userDao.update(from); userDao.update(to); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值