spring+hibernate 不能保存数据

zhangmou_tj 2008-07-20 11:09:41
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" singleton="true">

<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<!--<prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
-->
<prop key="connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</prop>
<prop key="hibernate.proxool.xml">Proxool.xml</prop>
<prop key="hibernate.proxool.pool_alias">DBPool</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com\sth\bean\Test.hbm.xml</value>
</list>
</property>
</bean>

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

<bean id="testServiceProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
<property name="target">
<ref local="testDAO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="insert">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>


<bean id="testDAO" class="com.sth.service.TestService">
<property name="sessionFactory">
<ref local="mySessionFactory"/>
</property>
</bean>

<bean id="test" class="com.sth.service.TestDAO">
</bean>
</beans>
Proxool.xml
<?xml version="1.0" encoding="UTF-8"?>

<something-else-entirely>
<proxool>
<alias>DBPool</alias>

<driver-url>jdbc:jtds:sqlserver://localhost:1433;DatabaseName=pubs;username=sa;password=sa;</driver-url>
<driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class>

<driver-properties>
<property name="user" value="sa"/>
<property name="password" value="sa"/>
</driver-properties>

<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<maximum-new-connections>20</maximum-new-connections>
<prototype-count>5</prototype-count>
<maximum-connection-count>1000</maximum-connection-count>
<minimum-connection-count>100</minimum-connection-count>

</proxool>
</something-else-entirely>
TestDAO.java
import java.util.List;

import com.sth.bean.Test;

public interface TestDAO {
public abstract void insert(Test t) ;
public abstract void update(Test t) ;
public abstract void delete(Test t) ;
public abstract List queryAll();
public abstract Test queryDataById(String title);

}


import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.sth.bean.Test;
public class TestService extends HibernateDaoSupport implements TestDAO {

private String HQL = "from Test where title = ?" ;

public TestService()
{

}

public void insert(Test t){
this.getHibernateTemplate().save(t) ;
}

public void update(Test t){
this.getHibernateTemplate().update(t) ;
}

public void delete(Test t){
this.getHibernateTemplate().delete(t) ;
}

public List queryAll(){
List testAllList ;
testAllList = this.getHibernateTemplate().find("from Test") ;
return testAllList ;
}


public Test queryDataById(String title){
List testList ;
if(this.getHibernateTemplate().find(HQL,title)== null ){
testList = new ArrayList() ;

} else {
testList = this.getHibernateTemplate().find(HQL, title) ;
}

return (Test)testList.get(0) ;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Resource rs = new ClassPathResource("applicationContext.xml") ;
BeanFactory factory = new XmlBeanFactory(rs) ;

TestService ts=(TestService)factory.getBean("testDAO") ;
Test t = new Test();

t.setTitle("tibet") ;
t.setContent("tibet") ;
t.setPubdate("20080719");

ts.insert(t) ;

}

}
...全文
90 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
phon_oy 2008-07-22
  • 打赏
  • 举报
回复
getHibernateTemplate()是自动提交的。
zhangmou_tj 2008-07-22
  • 打赏
  • 举报
回复
自己解决了,谢谢各位帮忙,帮忙的人都有分。
public static void main(String[] args) {
// TODO Auto-generated method stub
Resource rs = new ClassPathResource("applicationContext.xml") ;
BeanFactory factory = new XmlBeanFactory(rs) ;

TestDAO testDAO=(TestDAO)factory.getBean("testServiceProxy") ;
Test t = new Test();

t.setTitle("tibet") ;
t.setContent("tibet") ;
t.setPubdate("20080719");

testDAO.insert(t) ;
}
zhangmou_tj 2008-07-21
  • 打赏
  • 举报
回复
添加
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="mySessionFactory">
<ref bean ="mySessionFactory" />
</property>
</bean>
依然没有提交事务
各位大侠用getHibernateTemplate()怎么才能提交事务呢 ?
jrg9522 2008-07-21
  • 打赏
  • 举报
回复
没有提交。
在框架内好像默认都不是自动事务提交的。
d3d2008 2008-07-21
  • 打赏
  • 举报
回复
SpringDAO?
这不应该是
<value>com/sth/bean/Test.hbm.xml </value>
这样的嘛?

不能添加数据是因为没有事务提交..

添加个这东西看看
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="mySessionFactory">
<ref bean ="mySessionFactory" />
</property>
</bean>

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧