我用ssh结构,插入一条数据不成功
大概配置:
applicationContext.xml
<bean id="transactionProxyFactoryBean" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref local="transactionManager"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="select*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="has*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<bean id="newInfo" class="com.sgm.tuanwei.bean.NewInfo"></bean>
<bean id="newInfoDAO" class="com.sgm.tuanwei.dao.NewInfoDAO">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="newInfoService" class="com.sgm.tuanwei.service.NewInfoService">
<property name="newInfoDAO" ref="newInfoDAO"></property>
</bean>
<bean id="newInfoProxy" parent="transactionProxyFactoryBean">
<property name="target" ref="newInfoService"></property>
</bean>
NewInfoDAO.java
public boolean saveNewInfo(NewInfo newInfo)
{
// TODO 添加新闻信息
boolean flag = false;
try
{
getHibernateTemplate().save("NewInfo",newInfo);
flag = true;
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("DAO层触发saveNewInfo方法异常");
}
return flag;
}
NewInfoService.java
public boolean saveNewInfo(NewInfo newInfo)
{
// TODO 添加新闻信息
boolean flag = false;
try
{
newInfoDAO.saveNewInfo(newInfo);
flag = true;
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("service层触发saveNewInfo方法异常");
}
return flag;
}
调用方法,返回的是true,没有报任何异常。。。,我想应该不是spring托管的问题,“save*”方法我已经托管给spring了的,可是好像就是不提交,而且数据
的自动增量ID是有反应的,我执行一次就增加1,但是数据却没有,当我用sql语句插入数据时就可以看到自动增量是已经加过的。感觉就像我插入了数据,然后又删除了,这样ID是一致增加,就是没数据。不知道是不是spring托管的没提交数据。。。。我通过实体类查询数据是可以的。看过其他一些问题,说是spring托管在持久层的问题,可是我的好像就是托管在业务层的。。希望有碰到过类似问题的,或者知道的帮忙解决下。。。
分享到:
相关推荐
当使用Hibernate的`getHibernateTemplate().save()`方法尝试保存数据时,如果数据没有被保存到数据库,可能有以下几个原因: 1. **事务管理**:在默认情况下,Hibernate不会自动开启和提交事务。如果在代码中没有...
HibernateTemplate 是 Spring 提供的一个模板类,它封装了对 Hibernate Session 的操作,避免了直接与 Session 进行交互时出现的事务管理、异常处理等问题。HibernateTemplate 提供了一组丰富的静态方法,涵盖了大...
- 保存:`getSession().save()`, `getSession().update()`, `getSession().delete()` - Query的使用: - 可以设置参数,类似PreparedStatement - 判断结果,通过`list.size()`,如有值则通过`list.get(0)`获取 - ...
这意味着即使在第二个对象(stu2)上出现异常,第一个对象(stu1)的保存仍然有效,这显然不是我们想要的事务行为。 问题的关键在于,`HibernateTemplate`并不自动管理事务边界。在Hibernate中,当调用`Session`的`...
this.getHibernateTemplate().save(student); return student.getId(); } @Override public void update(Student student) { this.getHibernateTemplate().update(student); } @Override public void ...
6. **`void save(Object entity)`**:保存一个新的对象实例到数据库中。通常用于新增数据记录。 7. **`void saveOrUpdate(Object entity)`**:根据传入对象的状态(新记录或已存在记录),自动选择保存或更新操作。...
CtxUtil.getBaseManager().getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { // 保存stu1 Student stu1 = ...
- `void save(Object entity)`:保存新的实例到数据库。 - `void saveOrUpdate(Object entity)`:根据实例状态决定是保存还是更新。 - `void update(Object entity)`:更新已存在的持久化实例,但要求该实例处于...
在这个例子中,我们首先创建了一个 `Session`,然后开始一个新的事务,并尝试保存用户数据。如果出现异常,则回滚事务并打印错误信息。 以上就是关于 Hibernate 3.0 的一些使用经验和技巧。这些内容涵盖了如何在 ...
Serializable save(Object entity):保存新的实例 void saveOrUpdate(Object entity):根据实例状态,选择保存或更新 void update(Object entity):更新实例的状态 void setMaxResults(int maxResults):设置分页的...
3. **异常处理**:Spring为Hibernate提供了一层异常转换机制,将Hibernate特有的异常转换为Spring的非检查异常,简化了异常处理逻辑。 4. **DAO支持**:Spring提供了对DAO的支持,可以方便地集成Hibernate DAO实现。...
`insert`方法调用`save`方法保存实体,`find`方法调用`get`方法获取指定ID的实体。 总结来说,Spring DAO支持为开发者提供了统一的数据访问接口,无论使用JDBC还是ORM框架如Hibernate,都能保持一致的编程风格。这...