Hibernate 在Tomcat上运行JPA
我正在构建一个maven测试项目,该项目运行于: Spring MVC 3.1.1 JPA,使用Hibernate4.1.4作为JPA提供程序 MYSQL 5.5.x 雄猫7 我正在尝试创建一个简单的基本用例,其中包括从DB读取和更新。 因为我喜欢使用纯JPA,所以我使用spring的LocalContainerEntityManagerFactoryBean,它使用@PersistenceContext注释注入我的dao 我在这一点上遇到的问题:Hibernate 在Tomcat上运行JPA,hibernate,spring-mvc,jpa-2.0,maven-3,tomcat7,Hibernate,Spring Mvc,Jpa 2.0,Maven 3,Tomcat7,我正在构建一个maven测试项目,该项目运行于: Spring MVC 3.1.1 JPA,使用Hibernate4.1.4作为JPA提供程序 MYSQL 5.5.x 雄猫7 我正在尝试创建一个简单的基本用例,其中包括从DB读取和更新。 因为我喜欢使用纯JPA,所以我使用spring的LocalContainerEntityManagerFactoryBean,它使用@PersistenceContext注释注入我的dao 我在这一点上遇到的问题: 我无法坚持使用DB(没有抛出异常,但也没有DB
- 将spring工具tomcat依赖项添加到我的pom.xml中(只是为了检索jar)
- 我把那个jar复制到我的tomcat的lib目录中
- 在META-INF目录下,我创建了一个context.xml文件,其内容如下:
<Context docBase="SpringTest" path="/SpringTest" reloadable="true" source="org.eclipse.jst.jee.server:SpringTest"> <Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader" useSystemClassLoaderAsParent="false" /> </Context>
- 我将InstrumentationLoadTimeWeaver添加到实体管理器定义中
到DispatcherServlet上下文(到目前为止,我只在我的根应用程序上下文中有它)。在完成这些工作后,事务就被提交给数据库
在这一点上,我开始怀疑是否所有其他的东西仍然是必需的,所以我回滚了除了添加到DispatcherServlet之外我所做的一切,它仍然可以完美地工作
那么,我的问题是:它是如何工作的?我真的需要所有这些来支持tomcat中的JPA吗?最后,为什么我需要将声明复制到DispatcherServlet来解决这个问题
提前感谢,,
Yogi您不需要“spring instrument tomcat对我的pom.xml的依赖性”来破坏数据库。在没有异常的情况下,您可以读取但不能写入或更新数据库,这表明ok配置缺少spring事务(正确注释@Transactional,正确声明注释驱动的spring上下文)。不要给Tomcat装不必要的罐子。
在spring source toolsuite中启动一个新的spring模板项目(简单的spring jpa实用程序项目),检查spring hibernate jpa项目真正需要的依赖项是什么。好问题,知道这个会很有趣。我想总结一下,Tomcat不会自动为您处理事务。不应使用任何容器。您需要一个事务来进行任何数据库更改。可能在记录器中的某个位置显示了错误或消息,但您的级别没有显示它们。不,你不需要你添加的乐器材料。在我看来,带注释的事务支持是在任何现代Spring3.x应用程序中实现事务处理的最佳方式。我不太清楚为什么声明在根上下文中不起作用。它应该在那里工作。