我正在尝试在Spring 3 MVC中使用hibernate模式,但此刻我抛出了此异常。我想我需要在hibernate.cfg.xml某个地方定义我的名字,但不确定在哪里?
hibernate.cfg.xml
我基本上在这里遵循了这个示例,网址为http://www.nabeelalimemon.com/blog/2010/05/spring-3-integrated- with-hibernate- part-a/特别是在那里看到的这行代码应该“神奇地”使用以下命令找到我的hibernate.cfg文件:
return new Configuration().configure().buildSessionFactory();
我猜这是不正确的?我目前在我的hibernate.cfg文件中src/com/jr/hibernate/
src/com/jr/hibernate/
以下是我的cfg文件:
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/racingleague</property> <property name="connection.username">username</property> <property name="connection.password">password</property> <property name="hibernate.format_sql">true</property> <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name="hibernate.show_sql">true</property> <!-- Drop and re-create the database schema on startup --> <property name="hibernate.hbm2ddl.auto">update</property> <!--property name="hbm2ddl.auto">update</property--> <mapping resource="com/jr/model/hibernateMappings/user.hbm.xml"/> </session-factory> </hibernate-configuration>
我的hibernate实用程序类:
package com.jr.utils; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtils { private static final SessionFactory sessionFactory = buildSessionFactory(); public static SessionFactory buildSessionFactory() { try { // Create the SessionFactory from hibernate.cfg.xml return new Configuration().configure().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); } } }
这个抽象类被称为bu:
package com.jr.db; import org.hibernate.SessionFactory; import org.hibernate.classic.Session; import com.jr.utils.HibernateUtils; public abstract class DbWrapper<T> { private static SessionFactory sessionFactory = null; private static Session session; public DbWrapper() { setSessionFactory(); } private void setSessionFactory() { sessionFactory = HibernateUtils.buildSessionFactory(); session = sessionFactory.getCurrentSession(); } public boolean addNewItem(T dbItem) { try { session.getTransaction().begin(); session.save(dbItem); session.getTransaction().commit(); } catch (Exception e) { System.err.println("error exception when adding new item to table" + e); } finally { session.close(); sessionFactory.close(); } return false; } public abstract boolean removeItem(String uid); public abstract boolean modifyItem(String uid, T item); }
这是最初执行一些hibernate操作的控制器:
private Logger logger = Logger.getLogger(UserController.class); private UserDb userDb; @RequestMapping(value = "/user/registerSuccess", method = RequestMethod.POST) public String submitRegisterForm(@Valid User user, BindingResult result) { // validate the data recieved from user logger.info("validate the data recieved from user"); if (result.hasErrors()) { logger.info("form has "+result.getErrorCount()+" errors"); return "account/createForm"; } else{ // if everthings ok, add user details to database logger.info("if everthings ok, add user details to database"); userDb = new UserDb(); userDb.addNewItem(user); // display success and auto log the user to the system. return "account/main"; } }
提前加油。我的所有表hibvernate xml映射都与hibernate.cfg.xml文件位于同一位置
而不是将hibernate.cfg.xml文件放在src/com/jr/hibernate/目录下,而是将其放在src目录下。然后,它将自动出现在WEB- INF/classes目录中,如此处的人员所提到的。
src
WEB- INF/classes