1、直接在xml文件中写入value值(不好)
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" /> <property name="url" value="jdbc:sqlserver://localhost:1433;DatabaseName=spring" /> <property name="username" value="sa" /> <property name="password" value="********" /> </bean>
2、结合properties文件,分离value值和xml文件(目前项目中普遍使用的,较好)
<bean id="mappings" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations" value="classpath:jdbc.properties"></property> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <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>
3、这种方法和方法1是同样的思路(并不好)
<bean id="mappings" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <!-- typed as a java.util.Properties --> <property name="properties"> <value> jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver jdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=spring jdbc.username=sa jdbc.password=******** </value> </property> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <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>
4、使用命名空间
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" p:driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" p:url="jdbc:sqlserver://localhost:1433;DatabaseName=spring" p:username="sa" p:password="********"/> xmlns:p=http://www.springframework.org/schema/p -- 需要加上这个命名空间
--------------------------------------------------------------------------------------------
数据库访问方式:
HibernateTemplate:org.springframework.orm.hibernate3.HibernateTemplate
HibernateDaoSupport:org.springframework.orm.hibernate3.support.HibernateDaoSupport
spring如果要整合hibernate,首先应该获得SessionFactory这个类,然后通过获得session来进行访问数据库。即spring提供的类HibernateDaoSupport、HibernateTemplate应该是有setSessionFactory()方法的,在使用的时候注入一下就ok了。
<bean id="orderSessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="orderDataSource"/> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">${bl3.order.dal.hibernate.order.dialect}</prop> <prop key="hibernate.jdbc.batch_size">${bl3.order.dal.hibernate.order.jdbc.batch_size}</prop> <prop key="hibernate.show_sql">${bl3.order.dal.hibernate.order.show_sql}</prop> <prop key="hibernate.generate_statistics">${bl3.order.dal.hibernate.order.generate_statistics}</prop> </props> </property> <property name="packagesToScan"> // 直接去扫描整个包,而不用一个一个的指定类 <list> <value>com.sdo.bl3.order.dal.order.model</value> </list> </property> </bean>------------------------------------------------------ 下面的方式就是一个个的指定类,在类少的时候还是可行的<property name="annotatedClasses"> <list> <value>com.zcy.model.User</value> <value>com.zcy.model.Log</value> </list> </property>
1、注入SessionFactory
<bean id="UserInfoDao" class="com.hr2job.dao.impl.UserInfoDaoImpl"> <property name="sessionFactory" ref="sessionFactory" /> </bean>
这里的SessionFactory注入不是给类的,而是给继承HibernateDaoSupport类的SessionFactory。好处是不需要关心关闭、是否连接成功等问题。
2、注入HibernateTemplate
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean>
本质上是和SessionFactory一样的,好处就是Dao中的类不用再继承HibernateDaoSupport了。
3、注入jdbcTemplate
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"> <ref bean="dataSource" /> </property> </bean>