扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
回答:该行为取决于实现。OpenJPA将只更新被修改字段对应的列。但是,我们可能在某些位置添加update-all-columns选项。请参阅 OPENJPA-38。
问题:EJB3.0如何替换EJB2.0中的ejbLoad()、ejbStore()之类的回调方法?
回答:JPA规范提供了一些可以随意(单个)实现的 回调方法。
问题:EJB3.0如何替换EJB2.0 CMP和BMP?
回答:EJB3 JPA规范对EJB2 CMP提供了功能完善的替换。JPA规范没有解决bean管理的持久化,如果您希望实现自己的持久化,应该继续使用BMP,或者最好使用会话bean façade进行自定义持久化。
问题:命名查询可以位于JPA实体以外吗?就像在会话bean或帮助类中那样?
回答:JPA实现仅扫描实体类(和映射超类以及嵌入类)来查找命名查询。我希望将来的JPA规范版本提供一种方式,用于将命名查询限制到一个类对象中,到那个时候,就可以认为能够在任何位置定义命名查询。
可以在orm.xml文件中定义命名查询,然后使您的持久化单元指向该orm.xml文件,JPA规范允许将任意数目的orm.xml文件合并到一起。
问题:JPQL支持多数据库查询吗?
回答:JPA规范并不要求实现必须只使用单个数据库(甚至实现必须使用关系数据库)。因此实现可以随意提供对多个数据库的访问。但是,据我所知,当前的JPA实现都没有这么作,除非是通过数据库方的工作来实现多数据库查询。
问题:在JPQL中,SELECT子句可以从多个实体中拉出数据吗?
回答:是的。JPQL语言允许查询聚合和投影。因此以下语句是有效的JPQL语句:
select p.name, p.contactInfo.phoneNumber from Person p select p.address.state, avg(p.salary) from Person p group by p.address.state |
问题:JPA规范是否解决了缓存问题?
回答:JPA规范仅解决给定EntityManager相关对象的事务工作集的行为。它称之为“持久化上下文”。从某些方面来讲,这是一个缓存,但通常是为了保持事务一致性,而不是为了性能的原因。
JPA规范没有解决性能缓存,如OpenJPA的 数据缓存 和 查询缓存。但是规范中的规则对这类性能缓存暗示了某些行为约束。
总而言之,JPA规范主要关注的仅是API的行为方面,而由各种实现完成大多数性能有关的调优。尽管如此,所有可靠的实现都应该拥有某种数据缓存,以作为选择。
问题:WebLogic Server 9.0仍然仅支持EJB2.0,是吗?
回答:正确。WebLogic Server 10.0是完全支持EJB3规范的第一款BEA产品。在WebLogic Server 9中可以通过BEA Kodo产品来使用JPA。
问题:关于JPA的推荐教程是什么?
回答:Kodo文档 中提供了许多JPA教程。
问题:是否存在任何方式,用于跨所有实体表配置表前缀?
回答:JPA规范中没有提供这种方式,在OpenJPA中,可以通过创建扩展的 DBDictionary 并重写getValidTableName()方法来实现该功能。
问题:是否可能通过编程修改ORM绑定(如重写orm.xml中指定的一些ORM配置)?
回答:不是通过JPA规范实现的。OpenJPA提供了一些方法,用于以编程的方式创建映射信息,并且该规范确实提供了一种方法,用于在创建EntityManager时,将特定于供应商的重写内容传递给persistence.xml中的数据。
问题:我们正在构建一个大型应用程序,其中有350个对象坚持JPA规范。当我们使用Kodo 4.1持久化这些对象时,它的SELECT查询最终将每个查询的大多数表连接起来,这使得Kodo相当慢。TopLink Essentials实现仅连接少量的相关表。您对解决该问题有什么建议?
回答:我认为这与“一对一”和“多对一”字段类型的不同默认行为有关。我猜想,如果您明确地告知Kodo对“一对一”和“多对一”字段类型执行惰性加载,就会很清楚。如果这不起作用,或者如果您希望获得更多帮助来分析您的具体用例,请发送电子邮件到plinskey@bea.com。
问题:开发人员可以使用JPA来控制表的连接方式吗?
回答:不能直接控制,并且不是通过规范实现的。但是,大多数实现可能提供了一些方式来影响如何连接。有关OpenJPA的详细信息,请参阅关于 主动fetching 的文档。
问题:在何处指定数据源?
回答:数据源通常是在persistence.xml中指定的,根据您的实现和应用服务器的默认行为,可能需要为jta-data-source和/或non-jta-data-source设置提供值。
问题:JPA规范是否计划在将来支持里程碑或双时态链(bi-temporal)?
回答:据我所知,JPA规范团队目前没有计划提供任何时态功能。
问题:如果抛出乐观锁定异常,可以了解哪些列发生冲突吗
回答:不可以。您可以了解哪些实例失败,但不是字段。给定失败的实例,很容易从数据库中加载新值,并进行比较。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者