毕业设计(五)---spring学习笔记(3)之-dataSource,sessionFactory,hibernateTemplate,事务 的简单配置。


一:dataSource 数据源配置

在applicationContext.xml 中配置 dataSource 

<bean id="dataSource"  class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<!-- 这里使用的dbcp方式,还有c3p0 和 proxool , 我没有使用,先不列举。 -->		
<property name="driverClassName" value="com.mysql.jdbc.Driver">
		</property>
		
		<property name="url" value="jdbc:mysql://localhost:3306/数据库名"></property>
		<property name="username" value="root"></property>
		<property name="password" value="111111"></property>
		<property name="maxIdle" value="30"></property> 
		<property name="maxWait" value="10"></property> 
		<property name="defaultAutoCommit" value="false"></property>
	</bean>


在dao或者service 中注入,dataSource

public class UserDAOImpl implements UserDAO {
private DataSource dataSource ;

public DataSource getDataSource(){
	return dataSource;
}

@Resource  //从bean中获取
public void setDataSource(DataSource dataSource){
	this.dataSource = dataSource;
}

public void save(User user){
try{
	Connection conn = datasource.getConnection();   //dataSource 的方法, 获得连接。
	conn.createStatement().executeUpdate("insert into user values (null,'wangyi')");
	conn.close();
   }catch(SQLException e){
	e,printStackTrace();
	}
   }
 }


}

二: sessionFactory配置:

方法一: 我们在spring的配置文件applicationContext.xml里面引用hibernate.cfg.xml (也就是保留hibernate.cfg.xml)

 <!-- 配置sessionFactory -->
 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="configLocation">
   <value>classpath:hibernate.cfg.xml</value>
  </property> 
 </bean>   

方法二:不使用hibernate的 hibernate.cfg.xml 配置文件。

<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		
		<!-- 
		<property name="configLocation">
		<value>classpath:hibernate.cfg.xml</value>
		</property>
		 -->
		 
		<property name="dataSource" ref="dataSource"></property>
		<property name="mappingResources">
			<list>
				<value>com/bbs/model/Administrator.hbm.xml</value>
				<value>com/bbs/model/Attention.hbm.xml</value>
				<value>com/bbs/model/Collection.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>

三:hibernateTemplate :

xml配置:

<bean name="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>

使用:

	private HibernateTemplate hibernateTemplate;
	
	public HibernateTemplate getHibernateTemplate() {
		return hibernateTemplate;
	}
	@Resource
	public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
		this.hibernateTemplate = hibernateTemplate;
	}
	public List<Posts> searchAllPosts() {
		List<Posts> list = hibernateTemplate.find("from Posts");
		return list;
	}


四:事务:

<!-- dbcp data base connection pool -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="com.mysql.jdbc.Driver">
		</property>
		<property name="url" value="jdbc:mysql://localhost:3306/myblog"></property>
		<property name="username" value="root"></property>
		<property name="password" value="111111"></property>
	</bean>
	
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="configLocation"
			value="classpath:hibernate.cfg.xml">
		</property>
	</bean>
	
	
	<!-- 事务管理, 方法之前方法之后加点东西。。HibernateTransactionManager就是  aspect 切面类 -->
	<bean id="txManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>
	
	<!-- Annotation 驱动的事务管理   我没有用到-->
	<!--   <tx:annotation-driven transaction-manager="txManager" /> --> 
	<!-- 在需要的方法上加上 @Transactional 会自动在前后加上关于事务的业务逻辑。
	tx.beginTransaction 和   tx.commit  或者是抛出错误 回滚 callback()
	 -->
	
	
	<!-- 下面进行的就是为方法加事务 -->
	<tx:advice id="txAdvice" transaction-manager="txManager">
		<tx:attributes>
			<tx:method name="*" propagation="REQUIRED" />
			<!-- propagation="REQUIRED"的意思,前面方法没有transaction就创建,有就不创建 -->
		</tx:attributes>
	</tx:advice>
	<!--  advice是你想向别的程序内部不同的地方注入的代码。
	pointcut定义了需要注入advice的位置,通常是某个特定的类的一个public方法。
	advisor是pointcut和advice的装配器,是将advice注入主程序中预定义位置的代码。
	 -->
	 
	
	<aop:config>
		<aop:pointcut id="managerService"
			expression="execution(public * com.myblog.manager..*.*(..))" />
		<aop:advisor pointcut-ref="managerService" advice-ref="txAdvice" />
	</aop:config>


	





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值