我希望在多个(超过3个)表格案例中对JPA用法提供一些反馈。
如何从多个连接表中检索记录?使用JPA Join语句,或通过检索集合 并迭代和获取下一组外键控集合等等?第二种方式似乎是一种首选方式,但却是一种真正的痛苦而且效率低下。
eclipselink生成关系的方式是有大量的级联正在进行。最重要的是,即使将简单的外键设置为obect而不是简单的整数id。换句话说,提取X.fk_of_table_Y我需要调用两个方法
X.getFKTableY()。getFKtableY()
第一个函数返回映射类的对象,第二个函数返回整数。哎呀不是太低效了?当你只想要我自己的表的id时,你为什么需要从另一个表中加载对象?
你是怎么做到的?
您是否更喜欢使用eclipselink生成的方法,或者您通常编写自己的代码?它与(1)jsut基本相同,我要求eclipselink上下文。
除了EclipseLink之外还有哪些工具可以生成代码?如果我可以使用我自己的JPA连接查询关系(如果这是一个很好的方法),我希望关系映射从EclipseLink不会执行的实体文件中删除。是否有工具只生成实体类而不是它们的关系?
如果我希望每晚自动生成实体(或每当数据库更改时),通过Eclipselink,我该怎么做?修改来源?
原谅我的英语,我可以写得更好。
答案 0 :(得分:0)
对不起,简短回复,这是来自手机。首先,在EclipseLink中可以将FK的整数id和对象本身作为不同的属性;只是给两个相同的列名,但只标记其中一个可更新和可插入。您将能够设置与其中一个属性的关系,但不能同时设置两者。
其次,我使用具有复杂JPA查询的实体映射和DAO对象来访问实体,不同之处在于我使用查询进行多个连接和聚合函数或需要预取时,我在遍历时使用实体映射实体图。不过,在任何地方都需要进行基准测试 - 在分解为实体映射时,我的复杂查询速度更快(60ms vs 300ms)。