SSH整合好后,调用DAO中的save方法不能把数据保存到数据库
测试代码:publicstaticvoidmain(String[]args){ApplicationContextctx=newClassPathXmlApplicat...
测试代码:
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
SessionFactory sf = (SessionFactory) ctx.getBean("sessionFactory");
JueseDAO jsd = (JueseDAO) ctx.getBean("JueseDAO");
Juese js = new Juese();
js.setDh("001");
js.setName("系统管理员");
Session s=sf.openSession();
Transaction tr = s.beginTransaction();
try{
jsd.save(js);
tr.commit();
}catch(Exception e){
tr.rollback();
e.printStackTrace();
}finally{
s.close();
}
}
DAO中的save方法代码:
public void save(Juese transientInstance) {
log.debug("saving Juese instance");
try {
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
} 展开
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
SessionFactory sf = (SessionFactory) ctx.getBean("sessionFactory");
JueseDAO jsd = (JueseDAO) ctx.getBean("JueseDAO");
Juese js = new Juese();
js.setDh("001");
js.setName("系统管理员");
Session s=sf.openSession();
Transaction tr = s.beginTransaction();
try{
jsd.save(js);
tr.commit();
}catch(Exception e){
tr.rollback();
e.printStackTrace();
}finally{
s.close();
}
}
DAO中的save方法代码:
public void save(Juese transientInstance) {
log.debug("saving Juese instance");
try {
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
} 展开
若以下回答无法解决问题,邀请你更新回答
展开全部
亲 你没有commit save之后要commit一下
追问
jsd.save(js);
tr.commit();
我这不是commit;了么?
难得commit要放到DAO里么?
追答
貌似是 这里的tr用的是新的session
Session s=sf.openSession();
这个s没有和你的dao绑在一起
你看看dao里面有没有session要用那个才行
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
事物你配好了么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@Resource
private SessionFactory sessionFactory;
Class<T> entityClass;
protected Log log = LogFactory.getLog(this.getClass());
// private static Logger logger = Logger.getLogger(Test.class);
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public Session getSession() {
return sessionFactory.getCurrentSession();
}
交给spring 自动处理
private SessionFactory sessionFactory;
Class<T> entityClass;
protected Log log = LogFactory.getLog(this.getClass());
// private static Logger logger = Logger.getLogger(Test.class);
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public Session getSession() {
return sessionFactory.getCurrentSession();
}
交给spring 自动处理
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询