java - JPA 使用指南/Eclipselink/JPA 实体生成器

标签 java jpa orm persistence eclipselink

我想要一些有关多个(超过 3 个)表案例中 JPA 使用情况的反馈。

  1. 如何从多个连接的表中检索记录?使用 JPA Join 语句,或通过检索集合 并迭代和获取下一组外键集合等等?第二种方式似乎是首选方式,但确实很痛苦而且效率低下。

  2. eclipselink 生成关系的方式是进行大量级联。最重要的是,即使是简单的外键也被设置为对象,而不是简单的整数 id。换句话说,要提取 X.fk_of_table_Y 我需要调用两个方法

X.getFKTableY().getFKtableY()

第一个函数返回映射类的对象,第二个函数返回整数。哎呀,这效率也太低了吧?当你只想要我自己的表的 id 时,为什么需要从另一个表加载对象?

你打算怎么做?

  1. 您更喜欢使用 eclipselink 生成的方法还是通常编写自己的方法?它基本上与 (1) 相同,只是我要求提供 eclipselink 上下文。

  2. 除了 EclipseLink 之外,还有哪些工具可以生成代码?如果我可以使用自己的 JPA 连接查询来建立关系(如果这是一个好方法),我希望从实体文件中删除关系映射,而 EclipseLink 不会这样做。有没有一种工具只能生成实体类而不生成实体类之间的关系?

  3. 如果我希望通过 Eclipselink 每晚(或每当数据库更改时)自动生成实体,我需要做什么?修改源码?

原谅我的英语,我可以写得更好一点。

最佳答案

抱歉,回复很短,这是通过电话发送的。首先,在 EclipseLink 中可以将 FK 的整数 id 和对象本身作为不同的属性;只需给两者提供相同的列名,但仅将其中之一标记为可更新和可插入。您将能够设置与其中一个属性的关系,但不能同时设置两者的关系。

其次,我使用实体映射和具有复杂 JPA 查询的 DAO 对象来访问实体,区别在于我使用查询进行多个联接和聚合函数或需要预取时,而在遍历时使用实体映射实体图。尽管如此,到处都需要基准测试 - 我有一个复杂的查询,当分解为实体映射时,速度更快(60 毫秒与 300 毫秒)。

关于java - JPA 使用指南/Eclipselink/JPA 实体生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8442067/

相关文章:

java - 在什么情况下会发生这种奇怪的 jpa 行为?

design-patterns - 将 SQL View 映射到 JPA 实体

java - 使 jpa oneToMany 关系有效?

android - Sugar ORM Android 多数据库

java - 在 Hibernate 中对属性使用惰性

java - 减少 Room DataBase Repository 中 AsyncTask 的数量

java - Joda Time : Strange behavior for leap year in Period calculation

java - 使用 Commons IO 将目录压缩成一个 zipfile

java - 通过 ArrayList 创建项目菜单

hibernate - 提取后的条件 api 连接抛出无效路径错误