已阅读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内蒙古呼伦贝尔市莫力达瓦达斡尔族自治旗招募特聘农技员2人笔试考试参考题库及答案解析
- 2025四川省现代种业发展集团有限公司部分权属企业社会化招聘13人考试笔试备考试题及答案解析
- 2025年丽江市宁蒗县纪委监委招聘公益性岗位人员(1人)考试笔试参考题库附答案解析
- 2025江苏苏州工业园区翡翠幼儿园教学辅助人员招聘1人考试笔试模拟试题及答案解析
- 2025南昌市育新学校红谷滩分校招聘劳务派遣人员考试笔试参考题库附答案解析
- 2025福建泉州城建集团人才引进1人考试笔试模拟试题及答案解析
- 2026年陕西省选调生招录(面向华中科技大学)笔试考试备考题库及答案解析
- 2026中国能源建设集团云南省电力设计院有限公司招聘笔试考试参考题库及答案解析
- 2025下半年四川艺术职业学院考核招聘工作人员15人笔试考试备考试题及答案解析
- 山东省菏泽市单县第五中学高二下学期第二次月考(月)英语试题
- 水闸安全管理办法
- 2025中华护理学会团体标准-成人患者医用粘胶相关性皮肤损伤的预防及护理
- 雨课堂学堂在线学堂云《SPSS在医学统计中的应用(首都医大 )》单元测试考核答案
- 药剂证书考试题库及答案
- 绳锯施工方案及现场安全操作标准
- 江苏省2026年普通高中学业水平合格性考试英语仿真模拟卷01(春季高考适用)(全解全析)
- 14-GP12控制作业指导书
- 混凝土表面缺陷修补方案
- 2023数字图像处理重修试题
- HY/T 0330-2022海滩养护与修复工程验收技术方法
- 中药材的采收与加工
评论
0/150
提交评论