Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/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持久性API_Java_Jpa - Fatal编程技术网

Java持久性API

Java持久性API,java,jpa,Java,Jpa,我是新手。我刚刚学会了它,现在想在我的Java桌面应用程序中使用它。但我有以下问题: 问题1。哪个JPA实现的大小最小(因为我希望应用程序的大小尽可能小) 问题2。如何在persistence.xml文件中查找标记的值。我知道它的价值是特定于供应商的,但我找不到从下载的JPA实现的价值。Q1。非常粗略的计算: 带有deps的Hibernate(大约3.4.0.GA版本)约为3.6MB TopLink Essentials(2.0.1-04)约2.4 Mb 日食线(例如TopLink)(1.1.

我是新手。我刚刚学会了它,现在想在我的Java桌面应用程序中使用它。但我有以下问题:

问题1。哪个JPA实现的大小最小(因为我希望应用程序的大小尽可能小)


问题2。如何在
persistence.xml
文件中查找
标记的值。我知道它的价值是特定于供应商的,但我找不到从下载的JPA实现的价值。

Q1。非常粗略的计算:

  • 带有deps的Hibernate(大约3.4.0.GA版本)约为3.6MB
  • TopLink Essentials(2.0.1-04)约2.4 Mb
  • 日食线(例如TopLink)(1.1.3-M1)约4.7MB

问题2。打开JAR,检查META-INF/services/javax.persistence.spi.PersistenceProvider文件

你是说内存中的大小?或者罐子的大小?内存中的大小取决于要持久化的类的数量、它们的元数据、打开的EntityManager的数量以及L1/L2缓存中的内容。我知道DataNucleus使用的内存比Hibernate少,因为用户自己也报告过这一点,不知道其他的主要实现是什么

罐子的大小是衡量任何东西的一个毫无意义的尺度,因为那里的大多数东西可能都没有被使用

另外,DataNucleus也是一个JPA1+2实现

问题1。哪个JPA实现的大小最小(因为我希望应用程序的大小尽可能小)

对于JPA1.0:

  • Hibernate实体管理器3.4.0.GA:~4.9MB
  • 日食1.1.3:~4.7MB
  • OpenJPA 1.2.2:~2.7MB(我不确定这一个,目前还没有测试,所以我可能缺少一些JAR)
我会远离TopLink Essentials

对于JPA2.0:

  • DataNucleus 2.0.3:~3.7MB
  • 日食1.2和2.0+:~4.8MB
  • Hibernate实体管理器3.5.0-Final:~5.8MB
  • OpenJPA 2.0.0-beta3:未测量(仍处于测试阶段)
这些措施已经在我的宠物项目(包括除JDBC驱动程序之外的依赖项)上完成。就个人而言,我不会只根据尺寸来选择,即使是桌面应用程序也是如此

问题2。如何在persistence.xml文件中查找标记的值

  • DataNucleus:
    org.DataNucleus.jpa.PersistenceProviderImpl
  • EclipseLink:
    org.eclipse.persistence.jpa.PersistenceProvider
  • Hibernate:
    org.Hibernate.ejb.HibernatePersistence
  • OpenJPA:
    org.apache.OpenJPA.persistence.PersistenceProviderImpl
  • TopLink Essentials:
    oracle.TopLink.Essentials.PersistenceProvider

我在问题中提供的JPA IMemmentation(glassfish-persistence-api-b32g)链接大小仅为50KB。但是它在META-INF文件夹中没有任何
服务
文件夹。它是API,不是实现。据我所知,GlassFish使用EclipseLink作为RI。@BalusC您想对JPA实现发表评论吗。我被它的最小尺寸(50KB)所吸引。这里提到的不是JPA的实现。它只是一个JPAAPIJAR(接口),是所有实现所必需的。。。无论大小,您会选择哪种实现?我正要使用TopLink Essentials。为什么你要远离它?@Yatendra因为Toplink Essentials没有发生任何事情(它被维护了,但已经死了),因为它需要编织,因为你需要使用javaagent,因为我总是觉得使用它很痛苦(但对于5个实体来说可能没有那么痛苦)。但它是有效的。@Yatendra我喜欢Hibernate,它被广泛使用、测试和支持,这对我很重要。但是,对于五表应用程序来说,这可能并不是那么关键。也许你应该实现你的应用程序,并与各种JPA提供商一起测试它。