Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 在Tomcat上运行JPA_Hibernate_Spring Mvc_Jpa 2.0_Maven 3_Tomcat7 - Fatal编程技术网

Hibernate 在Tomcat上运行JPA

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

我正在构建一个maven测试项目,该项目运行于: Spring MVC 3.1.1 JPA,使用Hibernate4.1.4作为JPA提供程序 MYSQL 5.5.x 雄猫7

我正在尝试创建一个简单的基本用例,其中包括从DB读取和更新。 因为我喜欢使用纯JPA,所以我使用spring的LocalContainerEntityManagerFactoryBean,它使用@PersistenceContext注释注入我的dao

我在这一点上遇到的问题:

  • 我无法坚持使用DB(没有抛出异常,但也没有DB反射)
  • 我无法删除表单DB(没有抛出异常,但也没有DB反射)
  • 虽然我能从数据库里读出来

    在浏览了文档之后,我发现我可能缺少一些JPA支持,因为TOMCAT没有提供这种现成的支持

    我通过和(以及其他一些…)应用了以下内容:

    • 将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添加到实体管理器定义中

    这本该起作用的,但事实并非如此。我也经历过同样的行为

    然后我遇到了来自stackoverflow的问题。其中一个答案建议添加事务定义:
    到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应用程序中实现事务处理的最佳方式。我不太清楚为什么声明在根上下文中不起作用。它应该在那里工作。