Spring与数据库

来源:互联网 发布:协同过滤算法cf 编辑:程序博客网 时间:2024/06/05 12:39
Spring与数据库




**Spring的数据异常访问体系
Spring的平台无关持久化异常


数据访问模板   回调
应用程序DAO--->DAO支持--->数据访问模板--->持久化框架--->数据库




**配置数据源
不管选择哪种Spring DAO的支持方式,都需要配置一个
数据源引用。
Spring提供了在上下文中配置数据源Bean的多种方式,包括:
-通过JDBC驱动程序定义数据源;
-通过JNDI查找数据源;
-连接池的数据源;


=====使用JNDI数据源=====
<jee:jndi-lookup id="dataSource" jndi-name="/jdbc/SpitterDS" 
     resource-ref="true"/>
其中jndi-name属性用于指定JNDI中的资源名称。如果只设置了jndi-name属性,
那么就会根据指定的名称查找数据源。但是如果应用程序运行在Java服务器中
(Tomcat,JBoss等),则需将resource-ref,属性设置为true,这样给定的jndi-name会自动加上java:comp/env/前缀。




=====使用数据源连接池(推荐使用)=====
尽管Spring没有提供数据源连接池实现,但DBCP项目是个不错的选择,DBCP包含了
多个提供连接池功能的数据源,其中BasicDataSource是最常用的的,因为它易于在Spring
中配置。
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">


<!-- results in a setDriverClassName(String) call -->
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
<property name="username" value="root"/>
<property name="password" value="masterkaoli"/>
</bean>




=====使用JDBC驱动的数据源=====
在Spring中,通过JDBC驱动定义数据源是最简单的配置方式。
Spring提供了两种数据源对象(都没有提供连接池功能)
-DriverManagerDataSource每次请求返回一个新建连接
-SingleConnectionDataSource每次请求返回同一个连接
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>


<context:property-placeholder location="jdbc.properties"/>




**在Spring中集成Hibernate
  <bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="myDataSource"/>
    <property name="mappingResources">
      <list>
        <value>product.hbm.xml</value>
      </list>
    </property>
    <property name="hibernateProperties">
      <value>
        hibernate.dialect=org.hibernate.dialect.HSQLDialect
      </value>
    </property>
  </bean>
  
0 0