一: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>
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(); } } } }
方法一: 我们在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>
<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>
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>
版权声明:本文为博主原创文章,未经博主允许不得转载。