Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
Java TopLinkJPA适配器是否有Spring ORM/JPA的继承者或替代者?_Java_Spring Mvc_Jpa_Derby_Spring Orm - Fatal编程技术网

Java TopLinkJPA适配器是否有Spring ORM/JPA的继承者或替代者?

Java TopLinkJPA适配器是否有Spring ORM/JPA的继承者或替代者?,java,spring-mvc,jpa,derby,spring-orm,Java,Spring Mvc,Jpa,Derby,Spring Orm,这似乎是一个非常基本的问题,我应该能够很容易地找到,但我还没有找到答案 在Spring 3.2.4文档中,它表明供应商对Toplink Essentials的支持已被删除: 但是在任何地方我都找不到使用这个类的替代方法——所有使用Spring配置Toplink的例子似乎都是在Spring2.5前后出现的,例如 有谁能告诉我,现在为Toplink JPA实现定义spring应用程序上下文的公认方法是什么 我正在使用: 弹簧(4.1.4) Toplink Essentials(2.1-60f)

这似乎是一个非常基本的问题,我应该能够很容易地找到,但我还没有找到答案

在Spring 3.2.4文档中,它表明供应商对Toplink Essentials的支持已被删除:

但是在任何地方我都找不到使用这个类的替代方法——所有使用Spring配置Toplink的例子似乎都是在Spring2.5前后出现的,例如

有谁能告诉我,现在为Toplink JPA实现定义spring应用程序上下文的公认方法是什么

我正在使用:

  • 弹簧(4.1.4)
  • Toplink Essentials(2.1-60f)
  • 嵌入式Derby DB(10.11.1.1)
  • Tomcat(8.0.18)
我当前的代码和配置设置如下图所示,它是有效的——从某种意义上说,当我在模拟web应用程序中转到
/help
时会创建DB——但它不会自动创建实体表,这正是我目前主要试图找到的解决方案。我怀疑这是因为下面定义的只是一个简单的JDBC数据源,而不是一个合适的JPA实体管理器工厂,它可以为我自动创建所有实体

在我将其迁移到WAR并将其部署到Tomcat之前,我有一个独立的java应用程序,它使用相同的
persistence.xml
,并且运行良好(自动创建数据库和实体表)。现在,我已经转移到web应用程序,并将Spring加入其中,而不是:-(

基本上,我知道我需要在Spring应用程序上下文中的某个地方指定
创建表
(或
generateDdl=true
),就像在
persistence.xml
文件中一样,但如果没有
TopLinkJpaVendorAdapter
类,我不知道如何做到这一点(请参阅下面
applicationContext.xml
中注释掉的元素)

Spring实体管理器工厂似乎引用了
persistence.xml
中定义的持久化单元名称,但似乎没有注意到其中定义的任何其他内容-有没有办法让Spring接受这些其他设置(即Toplink实体管理器工厂提供程序类和JDBC详细信息等)根据
persistence.xml
中的定义?或者,如果Spring放弃了供应商对它的实现,而改用Eclipselink或Hibernate,那么它是否值得在Toplink的道路上继续下去?(顺便说一句,有人知道为什么这个实现类首先被放弃?)

META-INF/persistence.xml:


oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider
org.xyz.MyDbEntity
WEB-INF/spring/applicationContext.xml:


WEB-INF/WEB.xml:


XYZ
上下文配置位置
/WEB-INF/spring/applicationContext.xml
调度员
org.springframework.web.servlet.DispatcherServlet
上下文配置位置
1.
调度员
/
org.springframework.web.context.ContextLoaderListener
META-INF/context.xml:


org.xyz.web.HelpController:

@RestController
公共类帮助控制器{
私人实体管理工厂实体管理工厂;
公共助理总监(){
}   
公共EntityManagerFactory getEntityManagerFactory(){
返回实体管理工厂;
}
公共无效设置EntityManagerFactory(EntityManagerFactory EntityManagerFactory){
this.entityManagerFactory=entityManagerFactory;
}
@请求映射(value=“/help”,products=MediaType.TEXT\u HTML\u值)
public@ResponseBody字符串getHelp(){
EntityManager EntityManager=EntityManager工厂。createEntityManager();
返回“Helpy Mc Help Help”;
}
}
从顶部链接:

2007,TopLink源代码被捐赠给Eclipse基金会,Eclipse项目诞生了。 因此,TopLink的开源版本现在作为EclipseLink存在,它是JPA2.0的参考实现


除非您使用TopLink Essentials有非常具体的原因(因为您使用的是最新版本的Spring框架和Tomcat,所以不太可能),你应该使用另一个JPA实现。

谢谢manish-我也开始接受这个观点。不过,请欣赏背景细节……我从没想过要在维基百科上查找这种东西!不过下次会记得。我注意到的一件事是,它们之间似乎存在巨大的差异在罐子大小方面…eclipselink.JAR大约是8.5Mb-我想8年内会发生很多事情:-)