




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Spring的持久层封装(零雨其蒙原创,转载请注明)一、概述(一)基本概念1、数据访问的关键技术 我们可以将数据访问分为两个部分:一是获得数据源;二是进行数据库操作(增删改查)。2、获得数据源的几种方法因为只是为了记录一些关键的东西,以实用为主,因此没有过多的考虑措辞和学术上的严谨。这里指的是在Java中怎么能取得和数据源(DataSource)的联系,方法主要有传统的在程序中硬编码和通过XML注入。Spring提供三种XML注入:(1)使用Spring自带的DriverManagerDataSource;(2)使用DBCP连接池(3)使用Tomcat提供的JNDI。其中(1)可以配合Hibernate、iBatis等ORM一起使用(在XML配置文档中加入相应的配置段)。(二)框架图XML注入数据源的三种方式Spring自带的DriverManagerDataSourceDBCP连接池Tomcat的JNDI数据库操作的两种方式Spring的JdbcTemplate使用ORM工具二、详细(一)数据源注入1、使用Spring自带的DriverManagerDataSource 配置文件 !设定dataSource !使用SQL Server数据库 com.microsoft.jdbc.sqlserver.SQLServerDriver jdbc:Microsoft:sqlserver:/localhost:1433/stdb admin admin !设定transactionManager 红色部分显示了所使用的类,就是用它来处理数据库连接。2、使用DBCP连接池 要在Spring中使用DBCP连接池,需要引入spring-framework-2.0-mllobjakarta-commons文件夹中的commons-collections.jar、commons-dbcp.jar和commons-pool.jar。配置文件 !设定dataSource !使用SQL Server数据库 com.microsoft.jdbc.sqlserver.SQLServerDriver jdbc:Microsoft:sqlserver:/localhost:1433/stdb admin admin !设定transactionManager 红色部分为不同之处,可以看出,Spring为各种不同的数据源提供了统一的方式,下面看使用Tomcat提供的JNDI,有了一些不同。3、使用Tomcat提供的JNDI分两步,第一步是配置Tomcat的server.xml;第二步是编写Spring的配置文件。Tomcat的server.xmlResource name=”jdbc/opendb” auth=”Container” type=”javax.sql.DataSource” factory=”org.apache.tomcat.dbcp.BasicDataSourceFactory” driverClassName=”com.microsoft.jdbc.sqlserver.SQLServerDriver” url=”jdbc:Microsoft:sqlserver:/localhost:1433/stdb”name=”admin”!设定密码msg=”admin”!-设定最大连接数maxActive=”10000”!-设定最大空闲时间maxldle=”10000”Spring配置文件 !设定dataSource jdbc/opendb /*以下信息在server.xml中已经配置过了,不需要再配置了!使用SQL Server数据库 com.microsoft.jdbc.sqlserver.SQLServerDriver jdbc:Microsoft:sqlserver:/localhost:1433/stdb admin admin */ !设定transactionManager 红色部分为不同之处,可以看出,使用Tomcat提供的JNDI,有了一些不同。第一方式只是Spring包装了一下Jdbc,跟直接使用Jdbc没什么大的区别;后两种采用了连接池技术,比较好。我们也可以看出,三种方式配置基本相同,而作为使用数据源的类,调用方式相同,都是使用基本的依赖注入的方式。4、使用Hibernate配置文件 !设定dataSource !使用SQL Server数据库 com.microsoft.jdbc.sqlserver.SQLServerDriver jdbc:Microsoft:sqlserver:/localhost:1433/stdb admin admin /在第一种方法的基础上加上Hibernate的配置段就OK了。!使用Hibernate的sessionFactory com/demo/bo/Book.hbm.xml net.sf.hibernate.dialect.SQLServerDialect true !设定transactionManager 红色部分显示了不同之处,有三点:1)、加入了段,引入Hibernate的sessionFactory;2)事务处理的属性由原来的dataSource变成了sessionFactory;3)DAO引用从原来的dataSource变成了sessionFactory。其实就是说,在原来的datasouce之上加了Hibernate这一层,来处理相应的数据访问问题。因此在Spring中引入ORM是很容易的。Book.hbm.xml和Book.java是通过工具互相生成的,在这里不展示代码了,而Book就是一个POJO。4、使用iBatis配置文件 !设定dataSource !使用SQL Server数据库 com.microsoft.jdbc.sqlserver.SQLServerDriver jdbc:Microsoft:sqlserver:/localhost:1433/stdb admin admin /在第一种方法的基础上加上iBatis的配置段就OK了。!使用iBatis WEB/sqlMapConfig.xml !设定transactionManager 红色部分显示了不同之处,主要来看一下其与Hibernate的不同之处,1)同样引入iBatis配置段,不过其mappingResources配置信息放在了sqlMapConfig.xml下,该文件放在WEB-INF下,示例代码如下: 而这其中的Book.xml文件类似于Hibernate中的Book.hbm.xml。2)事务处理配置段依然引用的是dataSource,而不是sqlMap。3)在DAO配置段,引用dataSource的同时,又加入了sqlMap引用。其PO对象Book.java与Hibernate中相同。(二)数据库操作1、使用JDBCTemplateimport javax.sql.DataSource;import org.springframework.jdbc.core.*;import org.springframework.transaction.*;import org.springframework.dao.*;public class bookDAOprivate DataSource dataSource依赖注入dataSource,管理数据库;/private PlatformTransationManager transactionManager;/依赖注入管理事务public void setDataSource(DataSource dataSource) this.dataSource=dataSource; public void setTransactionManager(PlatformTransationManager transactionManager) this. transactionManager= transactionManager;public int create(String msg) JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource); jdbcTemplate.update(“INSERT INFO book VALUES(1,gf,Mastering Spring)”);配置文件 !设定dataSource !使用SQL Server数据库 com.microsoft.jdbc.sqlserver.SQLServerDriver jdbc:Microsoft:sqlserver:/localhost:1433/stdb admin admin !设定transactionManager !声明式事务处理- !-表示对bookDAO中的create方法进行事务处理,并指明当前没有事务就新建一个(用PROPAGATION_REQUIRED常量来表示的) PROPAGATION_REQUIRED 最简便、灵活的写法:import javax.sql.DataSource;import org.springframework.jdbc.core.*;import org.springframework.transaction.*;import org.springframework.dao.*;public class bookDAOprivate DataSource dataSource依赖注入dataSource,管理数据库;/private PlatformTransationManager transactionManager;/依赖注入管理事务private String sql;public void setDataSource(DataSource dataSource) this.dataSource=dataSource; public void setTransactionManager(PlatformTransationManager transactionManager) this. transactionManager= transactionManager;public void setSql(String sql) this.sql=sql;public int create(String msg)/*JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource); jdbcTemplate.update(“INSERT INFO book VALUES(1,gf,Mastering Spring)”);*/使用下述代码代替上面注释的内容 jdbcTemplate.update(this.sql);配置文件 !设定dataSource !使用SQL Server数据库 com.microsoft.jdbc.sqlserver.SQLServerDriver jdbc:Microsoft:sqlserver:/localhost:1433/stdb admin admin !设定transactionManager !设定jdbcTemplate /jdbcTemplate属性代替处的代码将dataSource注入到jdbcTemplate中 /sql属性代替处代码 INSERT INTO hello VALUES(1,gf,Mastering Spring) !声明式事务处理- !-表示对bookDAO中的create方法进行事务处理,并指明当前没有事务就新建一个(用PROPAGATION_REQUIRED常量来表示的) PROPAGATION_REQUIRED 2、使用Hibernateimport javax.sql.DataSource;import org.springframework.jdbc.core.*;import org.springframework.transaction.*;import org.springframework.dao.*;import org.springframework.orm.*;public class bookDAO/private DataSource dataSource;依赖注入dataSource,管理数据库private SessionFactory sessionFactory;private PlatformTransationManager transactionManager;/依赖注入管理事务/*public void setDataSource(DataSource dataSource) this.dataSource=dataSource;*/ public void setTransactionManager(PlatformTransationManager transactionManager) this. transactionManager= transactionManager;public void setSessionFactory(DataSource sessionFactory) this. sessionFactory = sessionFactory;public int create(String msg)/*JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource); jdbcTemplate.update(“INSERT INFO book VALUES(1,gf,Mastering Spring)”);*/下面这行替代 HibernateTemplate hibernateTemplate=new HibernateTemplate(sessionFactory); Book book=new Book(); book.setId(1); book.setAuthor(“gf”); book.setName(“Mastering Spring”);/下面这行替代 hibernateTemplate.saveOrUpdate(book);sessionFactory里引入了book.hbm.xml3、使用iBatisimport javax.sql.DataSource;import org.springframework.jdbc.core.*;import org.springframework.transaction.*;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版九年级物理全一册《第二十一章 电磁波及其作用》单元检测卷及答案
- 2025年小学统考道法真题及答案
- 2025年外科出科护理试卷及答案
- 海航网络笔试题目及答案
- 2025年社区笔试考试试题及答案
- 2025年昌平高考地理题库及答案
- 以往中考语文试卷及答案
- 化学与计算科学伦理联系试题
- 化学人类命运共同体素养全球视野评价试题
- 古诗抄写考试题及答案
- 金匮要略-黄芪桂枝五物汤
- J17J177 钢丝网架珍珠岩复合保温外墙板建筑构造
- 酒店账单-水单-住宿
- 手游经典案例《王者荣耀》的营销分析
- SEPIC主要参数设计软件
- GB/T 24002.1-2023环境管理体系针对环境主题领域应用GB/T 24001管理环境因素和应对环境状况的指南第1部分:通则
- 2023版思想道德与法治专题5 明确价值要求 践行价值准则 第2讲 坚定社会主义核心价值观自信
- 2023年自考全国10月财务管理学试题+答案
- 日语动词分类课件 【高效课堂+备课精研】 高考日语一轮复习
- GA/T 850-2021城市道路路内停车位设置规范
- 护士的压力与情绪管理 -张琦课件
评论
0/150
提交评论