Hibernate数据插入、更新失败
时间:2008-06-04 19:25:02
来源:论坛整理 作者: 编辑:chinaitzhe
//************************
applicationContext.xml文件
<beans>
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass">
<value>oracle.jdbc.driver.OracleDriver </value>
</property>
<property name="jdbcUrl">
<value>jdbc:oracle:thin:@localhost:1521:oradb </value>
</property>
<property name="user">
<value>sa </value>
</property>
<property name="password">
<value>pass </value>
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
<prop key="hibernate.connection.autocommit">true </prop>
<prop key="hibernate.show_sql">true </prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>/org/bh/vo/User.hbm.xml </value>
</list>
</property> </bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<bean id="iuserdao" class="org.bh.dao.user.IUserDAO" abstract="true"> </bean>
<bean id="iuserdaoimpl" class="org.bh.dao.user.impl.IUserDAOImpl" parent="iuserdao">
<property name="hibernateTemplate">
<ref bean="hibernateTemplate"/>
</property>
</bean>
<bean name="/user" class="org.bh.struts.action.UserAction" singleton="false">
<property name="iuserdao">
<ref bean="iuserdaoimpl" />
</property>
</beans>
//***********************************
User.hbm.xml文件
<hibernate-mapping package="org.bh.vo">
<class name="User" table="BH_USER">
<id name="id" column="USER_ID">
<generator class="assigned">
</generator>
</id>
<property name="username" column="USER_NAME" type="string"/>
<property name="age" column="AGE" type="int" />
</class>
</hibernate-mapping>
//***************
web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>OpenSessionInView </filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>OpenSessionInView </filter-name>
<url-pattern>*.do </url-pattern>
</filter-mapping>
<context-param>
<param-name>contextConfigLocation </param-name>
<param-value>/WEB-INF/classes/applicationContext.xml </param-value>
</context-param>
<servlet>
<servlet-name>context </servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet </servlet-class>
<load-on-startup>0 </load-on-startup>
</servlet>
<servlet>
<servlet-name>action </servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet </servlet-class>
<init-param>
<param-name>config </param-name>
<param-value>/WEB-INF/struts-config.xml </param-value>
</init-param>
<init-param>
<param-name>debug </param-name>
<param-value>3 </param-value>
</init-param>
<init-param>
<param-name>detail </param-name>
<param-value>3 </param-value>
</init-param>
<load-on-startup>1 </load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action </servlet-name>
<url-pattern>*.do </url-pattern>
</servlet-mapping>
</web-app>
//*************************
User.java文件
package org.bh.vo;
public class User {
/** age property */
private int age;
/** userid property */
private String userid;
/** username property */
private String username;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
public class IUserDAOImpl extends HibernateDaoSupport implements IUserDAO {
public void updateUser(User user) throws Exception{
super.getSession().update(user);
}
public void addUser(User user) throws Exception{
super.getSession().save(user);//我debug调试了一下,发现在这里能顺利通过,但在数据库中看不到添加的数据
System.out.println("add user");
}
}
//***********************
写的有点乱,请各位见谅!问题已经困扰我好几天了,恳请各位帮忙!谢谢!
网友回复:super.getSession().save(user);//我debug
@(&%(#%(@有你那么写的么?
就直接session.save(User)就可以了呀
你还super.getSession()。。。。getSession是获取数据然后再在获取的数据里面保存对象
那也只是在缓存里面保存而已
你最后又没提交
我连事务都没看到。。。
他插的进去就有鬼了。。。
网友回复:你连生成的sql都没看到,只能说明他根本就没往数据库里面插呀
网友回复:throws Exception改称try catch一下
到底有没有错误
网友回复:
我试过了,没有提示错误!
网友回复:
谢谢你的回答,请问:Spring是否会帮忙治理事务?我是看了一个ssh的视频教学,参考它的代码写的,对ssh学习深度还不够,很多知识理解的有偏差,有待学习!
网友回复:要配上声明式事务
demo
- Java code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /> </bean> <bean id="userServer" parent="baseTxProxy"> <property name="target"> <bean class="com.syj.blog.server.UserServer"> <property name="userDao"> <ref local="userDao" /> </property> </bean> </property> </bean> <bean id="baseTxProxy" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"> <ref bean="transactionManager" /> </property> <property name="transactionAttributes"> <props> <prop key="save*">PROPAGATION_REQUIRED,-Throwable</prop> <prop key="remove*"> PROPAGATION_REQUIRED,-Throwable </prop> </props> </property> </bean>
网友回复:UserServer类中以save或remove开头的方法就有事务了
你要有个
- Java code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ <!--hibernate事务--> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="sessionFactory"/> </property> </bean>
网友回复:像ls那样用spring就行了。。。
不过你还是要理解才行的。。。
网友回复:楼上的应该解决来了吧
网友回复:该回复于2008-06-04 09:28:36被版主删除
网友回复:spring是可以不用在代码上写事务提交等的,通过配置就可以了,你的配置文件里面没有,而代码里面也没写事务,真的,插得进去有“鬼”,例如:
<bean id="userDAOProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="userDAO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED </prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly </prop>
<prop key="is*">PROPAGATION_REQUIRED,readOnly </prop>
</props>
</property>
</bean>
网友回复:谢谢sunyujia,问题已经解决了!
关键字:Hibernate,数据,插入,更新,失败,
下一篇:下面没有链接了











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面