1、Spring的数据访问设计思想(DAO、模板方法)
DataIntegrityViolationException: insert或update数据时违反了完整性,如违反了唯一性限制
DataAccessResourceFailureException:数据访问资源失败,如不能连接数据库
InvalidDataAccessResourceUsageException:使用错误的SQL语法访问数据库
2、数据源配置:
方式一:Spring内置实现 DriverManagerDataSource
<bean id ="dataSource" class ="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/hibdb</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>windows</value>
</property>
</bean>
方式二:DBCP提供的BasicDataSource
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/hibdb</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>windows</value>
</property>
</bean>
方式三:JNDI数据源 (在讲解SSH整合时再说明)
JNDI数据源:(mysql5,tomcat5.5)
step1:
在server.xml中:
<Resource name="jdbc/mydatasource" auth="Container" description="DB Connection"
type="javax.sql.DataSource" username="root" password="windows"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/tarena" maxActive="5" />
step2:
在context.xml中(conf/context.xml):
<ResourceLink name="jdbc/mydatasource" global="jdbc/mydatasource" type="javax.sql.DataSourcer"/>
step3:
在beans-config.xml:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/mydatasource</value>
</property>
</bean>
3、JDBC支持:
step1: 配置数据源
step2: 配置JdbcTemplate
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
step3:配置DAO
<bean id="orderDao" class="lab5.OrderDAOImpl">
<property name="jt"><ref bean="jdbcTemplate"/></property>
</bean>
注意: 查询时,使用RowMapper
4、hibernate支持:
step1: 配置数据源
step2: 配置sessionfactory
<bean id="mySessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>lab6/Order.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
注意:配置映射文件位置的另一种用法
<property name="mappingDirectoryLocations">
<list>
<value>classpath:/bo</value>
</list>
</property>
或者
直接使用hibernate.cfg.xml,此时,配置内容如下:
<property name="configLocation">
<value>exec/t2/hibernate.cfg.xml</value>
</property>
注意,此时,因为由hibernate来管理事务,所以,必须在spring配置文件中,配置事务后才能使用,否 则,结果不会真正写入数据库!
可以参照工程spring下的t2
step3: 配置DAO
<bean id="orderDao" class="lab6.OrderDAOHibernateImpl">
<property name="sessionFactory">
<ref bean="mySessionFactory" />
</property>
</bean>
注意:以上配置是要求dao 继承HibernateDaoSupport
本文来自优快云博客,转http://blog.youkuaiyun.com/sdandan/archive/2009/02/17/3901507.aspx