`
sslaowan
  • 浏览: 373794 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring的持久层封装

阅读更多

 

Spring的持久层封装
(零雨其蒙原创,转载请注明)
一、概述
(一)基本概念
1、数据访问的关键技术
     我们可以将数据访问分为两个部分:一是获得数据源;二是进行数据库操作(增删改查)。
2、获得数据源的几种方法
因为只是为了记录一些关键的东西,以实用为主,因此没有过多的考虑措辞和学术上的严谨。这里指的是在Java中怎么能取得和数据源(DataSource)的联系,方法主要有传统的在程序中硬编码和通过XML注入。Spring提供三种XML注入:(1)使用Spring自带的DriverManagerDataSource;(2)使用DBCP连接池(3)使用Tomcat提供的JNDI。其中(1)可以配合Hibernate、iBatis等ORM一起使用(在XML配置文档中加入相应的配置段)。
(二)框架图

XML注入数据源的三种方式
Spring自带的DriverManagerDataSource
DBCP连接池
Tomcat的JNDI
 
数据库操作的两种方式
SpringJdbcTemplate
使用ORM工具
 

(三)何时使用什么
          现在大多数轻量级开发,都采用Hibernate作为持久层解决方案,因此可以作为首选。
二、详细
(一)数据源注入
1、使用Spring自带的DriverManagerDataSource  
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
 "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
   <!定dataSourceà
   <bean id=dataSource” class=”org.springframework.jdbc.datasource.DriverManagerDataSource”>
      <!—使用SQL Serverà
       <property name=”driverClassName”>
          <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
       </property>
        <property name=”url”>
          <value>jdbc:Microsoft:sqlserver://localhost:1433/stdb</value>
       </property>
<property name=”name”>
          <value>admin</value>
       </property>
<property name=”msg”>
          <value>admin</value>
       </property>
    </bean>
 
    <!—设定transactionManagerà
    <bean id=transactionManager
class=org.springframework.jdbc.datasource.DataSourceTransactionManager>
        <property name=dataSource>
            <ref bean=dataSource/>
        </property>
    </bean>
 
   <!—示例中DAO-->
   <bean id=”bookDAO” class=”com.bookDAO”>
        <property name=”dataSource”>
            <ref bean=”dataSource”/>
        </property>
        <property name=”transactionManager”>
            <ref bean=”transactionManager”>
        </property>
   </bean>
</beans>
   红色部分显示了所使用的类,就是用它来处理数据库连接。
2、使用DBCP连接池
    要在Spring中使用DBCP连接池,需要引入spring-framework-2.0-ml\lob\jakarta-commons文件夹中的commons-collections.jar、commons-dbcp.jar和commons-pool.jar。
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
 "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
   <!定dataSourceà
   <bean id=dataSource” class=”org.apache.commons.dbcp.BasicDataSource”>
      <!—使用SQL Serverà
       <property name=”driverClassName”>
          <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
       </property>
        <property name=”url”>
          <value>jdbc:Microsoft:sqlserver://localhost:1433/stdb</value>
       </property>
<property name=”name”>
          <value>admin</value>
       </property>
<property name=”msg”>
          <value>admin</value>
       </property>
    </bean>
 
    <!—设定transactionManagerà
    <bean id=transactionManager
class=org.springframework.jdbc.datasource.DataSourceTransactionManager>
        <property name=dataSource>
            <ref bean=dataSource/>
        </property>
    </bean>
 
   <!—示例中DAO-->
   <bean id=”bookDAO” class=”com.bookDAO”>
        <property name=”dataSource”>
            <ref bean=”dataSource”/>
        </property>
        <property name=”transactionManager”>
            <ref bean=”transactionManager”>
        </property>
   </bean>
</beans>
   红色部分为不同之处,可以看出,Spring为各种不同的数据源提供了统一的方式,下面看使用Tomcat提供的JNDI,有了一些不同。
3、使用Tomcat提供的JNDI
分两步,第一步是配置Tomcat的server.xml;第二步是编写Spring的配置文件。
Tomcat的server.xml
<Context path=”/demo” reloadable=”true” docBase=”c: \eclipse\workspace\demo” workDir=” c: \eclipse\workspace\demo\work”>
<Resource 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”
<!--设定最大等待时间à
maxWait=”10000”
removeAbandoned=”true”
removeAbandonedTimeout=”10”
logAbandoned=”true”
/>
</Context>
Spring配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
 "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
   <!定dataSourceà
   <bean id=dataSource” class=”org.springframework.jndi.JndiObjectFactoryBean>
     <property name=”jndiName”>
         <value>jdbc/opendb</value>
     /*以下信息在server.xml中已经配置过了,不需要再配置了
 <!—使用SQL Serverà
       <property name=”driverClassName”>
          <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
       </property>
        <property name=”url”>
          <value>jdbc:Microsoft:sqlserver://localhost:1433/stdb</value>
       </property>
<property name=”name”>
          <value>admin</value>
       </property>
<property name=”msg”>
          <value>admin</value>
       </property>*/
    </bean>
 
    <!—设定transactionManagerà
    <bean id=transactionManager
class=org.springframework.jdbc.datasource.DataSourceTransactionManager>
        <property name=dataSource>
            <ref bean=dataSource/>
        </property>
    </bean>
 
   <!—示例中DAO-->
   <bean id=”bookDAO” class=”com.bookDAO”>
        <property name=”dataSource”>
            <ref bean=”dataSource”/>
        </property>
        <property name=”transactionManager”>
            <ref bean=”transactionManager”>
        </property>
   </bean>
</beans>
   红色部分为不同之处,可以看出,使用Tomcat提供的JNDI,有了一些不同。第一方式只是Spring包装了一下Jdbc,跟直接使用Jdbc没什么大的区别;后两种采用了连接池技术,比较好。我们也可以看出,三种方式配置基本相同,而作为使用数据源的类,调用方式相同,都是使用基本的依赖注入的方式。
4、使用Hibernate
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
 "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
   <!定dataSourceà
   <bean id=dataSource” class=”org.springframework.jdbc.datasource.DriverManagerDataSource”>
      <!—使用SQL Serverà
       <property name=”driverClassName”>
          <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
       </property>
     &n
分享到:
评论

相关推荐

    spring的持久层封装

    spring持久层封装,新手可用,物超所值

    Spring持久层的封装

    这份文档以例子的形式讲诉了Spring持久层的封装,希望可以帮助学习的人!

    Spring开发指南

    持久层封装 JDBC Hibernate in Spring ibatis in Spring Aspect Oriented Programming AOP 概念 AOP in Spring Dynamic Proxy 与Spring AOP CGLib 与 Spring AOP AOP 应用 DAO Support Remoting

    Spring从入门到精通 源码

     全书共分14章,内容涵盖了Spring的基础概念、核心容器、Spring AOP、事务处理、持久层封装、Web框架、定时器、Spring和Struts、Spring和Hibernate、Spring和Ant、Spring和Junit。本书适用于...

    Spring.pdf

    Spring框架,控制反转,依赖注入,服务定位,面向切面,持久层封装和事务管理,MVC

    Spring从入门到精通(珍藏版)

     全书共分14章,内容涵盖了Spring的基础概念、核心容器、Spring AOP、事务处理、持久层封装、Web框架、定时器、Spring和Struts、S pring和Hibernate、Spring和Ant、Spring和Junit。本书适用于初、中级软件开发人员...

    SpringData.zip

    支持 Oracle RAD、高级队列和高级数据类型JPA - 简化创建 JPA 数据访问层和跨存储的持久层功能Mapping - 基于 Grails 的提供对象映射框架,支持不同的数据库Examples - 示例程序、文档和图数据库Guidance - 高级...

    spring4.1核心包

    11.spring-jms-4.1.1.RELEASE.jar 简单封装jms api接口 jms: Java消息服务(Java Message Service)应用程序接口 12. spring-messaging-4.1.1.RELEASE.jar 消息发送 13. spring-orm-4.1.1.RELEASE.jar 14. spring-...

    spring ppt 课件

    Spring课件!!介绍Spring IOC类型,封装,事务管理,持久层,AOP,DAO,remoting,MVC。

    第24次课-1 Spring与Hibernate的整合

    Spring提供的持久层访问的方式,无须显式地打开和关闭Session,也无须在代码中执行任何的事务操作语句。 Spring提供了HibernateTemplate,用于持久层访问。它只要获得SessionFactory的引用,就可以智能地打开Session...

    开源框架 Spring Gossip

    BeanNameAutoProxyCreator DefaultAdvisorAutoProxyCreator &lt;br&gt; 持久层 来看看 Spring 的 IoC 容器与 AOP 框架如何应用于持久层,包括了资料库、交易等相关议题。 资料库存取 Spring ...

    Spring2.5和Hibernate3集成--学习spring aop ioc

    * 继承HibernateDaoSupport类,使用this.HibernateTemplate这个类持久化数据 * HibernateTemplate是对session的轻量级的封装 * 默认事务回滚异常是RuntiimeException(包括所有继承RuntimeException的子类).普通...

    spring data API

    JPA - 简化创建 JPA 数据访问层和跨存储的持久层功能 Mapping - 基于 Grails 的提供对象映射框架,支持不同的数据库 从之前发布其他chm文件下载用户的反映看,有不少朋友反映下载后打开无法显示,这一般不是chm...

    spring培训学习笔记

    Spring 的核心是个轻量级(Lightweight)的容器(Container),它是实现IoC(Inversion of Control)容器、非侵入性(No intrusive)的框架,并提供AOP(Aspect-oriented programming)概念的实现方式,提供对...

    JAVA SMART系统-系统框架设计与开发(源代码+论文).rar

    而在持久层的设计中则是采用基于现有持久层框架的实现模式,实现了对产生Session实例的封装,对常用数据库操作的封装。这样设计减少了耦合性且避免了生成大量的临时对象。 该系统框架能达到良好的可拓展性和维护性。...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    第十二章 使用Hibernate快速实现持久层处理 12.1 Hibernate介绍 12.1.1 Hibernate简介 12.1.2 下载Hibernate 12.1.3 配置Hibernate 12.2 Hibernate的核心 12.2.1 Configuration(配置Connection) 12.2.2 ...

    SMART系统-系统框架设计与开发

    而在持久层的设计中则是采用基于现有持久层框架的实现模式,实现了对产生Session实例的封装,对常用数据库操作的封装。这样设计减少了耦合性且避免了生成大量的临时对象。 该系统框架能达到良好的可拓展性和维护性。...

    Spring Data JPA 106精讲

    开发者要做的,就是声明持久层接口,其他都交给 Spring Data JPA 来帮你完成!本套课程从最基础JPA到SpringData JPA面面俱到!一共有106讲, 本系列课程会实战演示SpringData JPA的各个功能特性。 1:本系列课程...

Global site tag (gtag.js) - Google Analytics