Spring学习笔记---8-SpringJDBC

这一篇是为了研究SpringJDBC的。在项目中所用到的Spring的JDBC代码不是很多,不过请注意,它又很重要,但代码用的不多,只能说明SpringJDBC封装的很好。

SpringJDBC 是Spring所提供的持久层技术。它的重要目的是降低使用JDBCAPI的门槛,以一种更直接,更简洁的方式使用JDBC API。 在SpringJDBC里,用户仅需要做那些必不可少的事,而将资源获取、statement创建、异常处理、资源释放等繁杂乏味的工作交给Spring。如果你不适用ORM框架来完成对象与实体的映射,那JDBC就是最好的选择,更何况他还那么灵活。

在面试或者之前的项目中,经常会需要手动将JDBC中步骤完成,那现在就不需要这样了,只需要将链接,数据库信息写到配置文件中,然后在Spring配置文件中得到其值,剩下的就可以交给Spring了,而你只需要将SQL及其参数正确的传给JDBC模板,就可以了。

下面这个是jdbc.properties 文件中关于数据信息的配置,示例如下:
Spring学习笔记---8-SpringJDBC_第1张图片
下图是applicationContext-dataSource.xml 文件,下图中将在服务器启动时创建链接等等操作,在使用时直接使用即可。
Spring学习笔记---8-SpringJDBC_第2张图片

上面这个图的意思是导入相关的JDBC配置文件,然后得到其值,在使用的时候可以使用JDBC的JDBCTemplate模板信息。

SpringJDBC是用JDBC.properties配置数据库信息,然后在applicationContext.xml中加载入,在这个项目中使用的是dbcp连接池,
使用jdbcTemplate声明。


基本的数据操作

      数据库的CRUD以及存储过程调用时最基本的数据库操作,jdbcTemplate提供了众多的方法,通过JdbcTemplate,用户可以用简单的方法完成这些数据操作。
       由于本人在项目中很少使用这样的方式,所以就直接使用书中源代码来研究了。
        Spring学习笔记---8-SpringJDBC_第3张图片
         JdbcTemplate在内部通过PreoparedStatement执行SQL语句,所以可以使用绑定参数的SQL。
         JdbcTemplate已经把原来复杂数据更新操作简化为定义SQL语句,准备参数,调用 sql 这三个简单的步骤。
         如下图是很久之前的一段代码:
          Spring学习笔记---8-SpringJDBC_第4张图片
          这段代码就是SpringJDBC来做操作的,将前端传入的参数作为sql的参数,并调用相应的sql来完成操作。
          
实战经验:
         尽量使用可绑定参数的sql语句,以便数据库可以复用SQL的执行计划,提高数据库的执行效率。此外,应尽量在Dao中使用类级别的静态常量的(final static)定义SQL字符串,不应在方法内部声明SQL字符串变量,以提高JVM的内存使用效率。
         如下图:
        
            调用SQL的代码如下:
        Spring学习笔记---8-SpringJDBC_第5张图片
        通过这种方式,就可以让数据库使用其执行计划(数据库概念)。通过这种将SQL抽离出来成为常量的方式来提高JVM效率。

       需要指出的是,在实际使用中, 应当优先考虑使用不带回调接口的JdbcTemplate方法。首先,回调使代码显得臃肿其次,回调并不能给我们带来额外的好处。

返回数据库的表自增主键值
        
        在项目中经常要用到自增主键值,而主键值是在插入数据之后才能得到的,在Hibernate中,新对象持久化之后,主键值会自动绑定到对象上,给程序的开发带来了很大的方便。
       但是有一个问题:怎么在高并发的情况下,执行操作的过程中保证主键不会重复。
       Spring学习笔记---8-SpringJDBC_第6张图片

批量操作
        如果需要一次性插入或更新多条记录,当然可以简单的通过调用update()方法完成任务,但这不是最好的实现方案。更好的选择是使用JdbcTemplate批量更改数据的方法。一般情况下,后者拥有更好的性能,因为更新的数据将被批量发送到数据库中,它减少了对数据库访问的次数。这个本人用的比较少。

      用的最多的是一次性插入很多数据,但是没有采用书中所说方法,用的是将值放到list中,然后对list进行循环,之后调用sql语句,完成操作。

      这里介绍的是SpringJDBC,没有采用ORMapping框架。

你可能感兴趣的:(java开发--Spring)