首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

Spring+hibernate事宜不起作用

2013-08-29 
Spring+hibernate事务不起作用分不多,希望大家帮忙看看配置文件bean iddataSource classcom.mchange

Spring+hibernate事务不起作用
分不多,希望大家帮忙看看
配置文件

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property>
<property name="jdbcUrl"
value="jdbc:sqlserver://localhost:1433;databaseName=TestData"></property>
<property name="user" value="sa"></property>
<property name="password" value="123"></property>
</bean>

<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="mappingLocations">
<value>/WEB-INF/config/*.hbm.xml</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
                </prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>

<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

<aop:config>
<aop:pointcut expression="execution(* com.train.spring.service.impl.*.*(..))"
id="pointcut" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut" />
</aop:config>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" rollback-for="Exception" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>


<bean id="baseDao" class="com.train.spring.dao.BaseHibernateDao">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

BaseHibernateDao.java
public class BaseHibernateDao {

private SessionFactory sessionFactory;

public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}

public Session getSession(){
return sessionFactory.openSession();
}

}

serviceimp类操作
public User getUser() {
User user = dao.getUser();


return user;
}

public void save(User user) {
dao.save(user);
}


dao操作
public class RegisterDaoImpl extends BaseHibernateDao implements RegisterDao{

public User getUser() {

Session session = getSession();
User user = (User) session.load(User.class, 1);
return user;
}

public void save(User user) {

Session session = getSession();
session.save(user);
                //id为int型,出错之后并不回滚,上面的插入成功
long lon = 2;
User u = (User) session.load(User.class, lon);
session.delete(u);

}

}
Spring Hibernate session Java
[解决办法]
如果你想把切面定在service,那就按下面的方式写。
<aop:config proxy-target-class="true">
还要加入cglib的包。

这个问题我遇到过,原因我也不知道,似乎和hibernate的版本有关,我当时用的好像是4.0,spring的版本好像是3.0
[解决办法]
把自动提交关掉~

热点排行