你用了spring,但却没有看到你把session注入到配置文件中,
applicationContext.xml也没有看到关于事物的配置。
用了spring后这些应该都交给spring来做的,我们是不用管close的,不然用spring还有什么用,配置半天还和原来一样,那还不如不用呢。
下面是spring3.0 + hibernate3.5的配置文件的部分代码,完整代码太多发不上来,你可以到csdn下载频道搜索写ssh整合的例子,可以给你最大程度上的帮助。
-
-
-
-
-
-
-
可能是因为你没使用同步来管理数据库。
你应该用hibernate的提供的同步机制来处理,处理如下:
public class HibernateUtil {
public static final SessionFactory sessionFactory;
static {
try {
Configuration configuration = new Configuration().configure();
sessionFactory = configuration.buildSessionFactory();
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static final ThreadLocal threadLocal = new ThreadLocal();
public static Session currentSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null) {
session = sessionFactory.openSession();
threadLocal.set(session);
}
return session;
}
public static void closeSession() throws HibernateException {
Session s = (Session) threadLocal.get();
if (s != null)
s.close();
threadLocal.set(null);
}
}
然后在你上面生成session的代码改成下面这种:
Session session = HibernateUtil.currentSession();
Transaction transaction = session.beginTransaction();
你试试这种方!!
看看是不是驱动版本不对,驱动加上还要进行设置