在网上找了个项目,准备做 spring + hibernate 整合测试的时候,update()方法出现问题了。update()是用Spring+Hibernate,程序不报错,但是数据库里面的数据没有任何变化。save()是没有任何问题的,save()是
hibernate写的。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:test.xml")
@Transactional
public class Testutil {
@Resource
private Date date;
@Resource
private CategoryService categoryService;
@Test // 测试IOC
public void test(){
System.out.println(date); }
@Test //测试Hibernate
public void testhibernate(){
CategoryService categoryService = new CategoryServiceImpl();
Category category = new Category("男士休闲",true);
categoryService.save(category); }
@Test // 测试 Hibernate + Spring 整合
public void testSpringAndhibernate(){
categoryService.update(new Category(1,"休闲女式",true));
System.out.println(".........");
}
}
public class CategoryServiceImpl implements CategoryService {
@Override
public void save(Category category) {
Session session = HibernateSessionFactory.getSession();
try {
// 使用 hibernate 进行数据库连接
session.getTransaction().begin();
session.save(category);
session.getTransaction().commit();
System.out.println("数据已经提交!");
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException();
} finally {
HibernateSessionFactory.closeSession();
}
}
// 整合 Spring + Hibernate
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
protected Session getSession() {
return sessionFactory.getCurrentSession();
}
public void update(Category category) {
this.getSession().update(category);
System.out.println("-----");
}
}
<bean id="date" class="java.util.Date"/>
<bean id="categoryService" class="cn.it.shop.service.impl.CategoryServiceImpl">
<!-- 依赖的sessionFactory用我们之前配好的sessionFactory-->
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- com.mchange.v2.c3p0.ComboPooledDataSource类在c3p0-0.9.5.1.jar包的com.mchange.v2.c3p0包中 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/shop" />
<property name="user" value="root" />
<property name="password" value="" />
</bean>
<!-- org.springframework.orm.hibernate4.LocalSessionFactoryBean类在spring-orm-4.2.4.RELEASE.jar包的org.springframework.orm.hibernate4包中 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 加载hibernate配置文件 -->
<property name="configLocation" value="classpath:hibernate.cfg.xml" />
</bean>
<!-- org.springframework.orm.hibernate4.HibernateTransactionManager类spring-orm-4.2.4.RELEASE.jar包的org.springframework.orm.hibernate4包中 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:advice id="advice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="*" propagation="SUPPORTS"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="pointcut" expression="execution(* cn.it.shop.service.impl.*.*(..))" />
<aop:advisor advice-ref="advice" pointcut-ref="pointcut"/>
</aop:config>
</beans>
请各位大神看看,是哪段代码有问题