分类:
2008-09-09 17:24:38
摘要:
本文围绕着“JPA:好与坏”这个主题,Bea的Patrick Linskey对相关常见问题进行解答……
问题:EJB专家团队是如何摆脱事务描述符的?
回答:在会话bean和消息驱动bean中,可以通过描述符和注释来控制事务的行为。此外,我们将默认的事务属性更改为“REQUIRED”,这个默认值比以前的值“SUPPORTS”更常用。因此,完全不必为业务方法配置事务行为。
JPA实体仅供本地使用,重点关注域模型。因此,无法在JPA实体上配置事务性(或远程边界或性)。而是必须使用会话bean façade(或消息驱动bean),才可以通过EJB使用这些实体。通常来说,这是一件好事,配置性、远程处理和事务的粒度应该比持久化数据的粒度粗很多。JPA着重关注持久化数据,以及与EJB的其他部分和 EE规范集成起来照管其他企业关注点。
问题:推荐对主键使用“long”还是“Long”?如果允许使用null作为值,将会如何?
回答:这实际上取决于您的数据模型。如果您的数据模型允许主键为null,那么使用Long,如果您的数据模型规定主键列不能为null,则使用long更合适。总的来说,我认为对于非复合主键,允许null作为合法值容易产生混淆,因此我倾向于使用long,而不是Long。
问题:您说EJB 2.0不支持继承,但是可以在几个不同位置(远程/bean)使用继承,只是不在本地使用而已。请解释一下。
回答:根据EJB 2.1规范的附录D3:
当前的EJB规范未指定组件继承的概念。
另一方面,JPA规范确实规定了实体继承的概念。我们已经处理了EJB 2.1规范中指出的各种问题和复杂性,现在允许完全的多态查询和关联。
问题:BEA计划什么时候支持/发布EJB3?
WebLogic Server 10 Technology Preview 是完全符合规范的 EE 5应用。它包括完整的EJB3支持。WebLogic Server 10大概于三月下旬发布。
此外,Kodo 是完全符合规范的生产就绪JPA实现,并且已经发布。
问题:JPA是否支持组合主键?
回答:JPA支持自然ID和组合ID,以及数据库指派或实现指派的数字值。
问题:是否存在Spring模板,像JDBC模板一样可以在容器外部使用?
回答:是的,Spring 2有JPA模板。但是,Spring 2可以对任何标记着@Repository的bean执行JPA异常转译。因此,总的来说,对于新的应用程序,最好直接使用JPA API,而不是另一个模板层。对于使用模板和正在迁移到JPA的现有应用程序来说,使用模板方法比较合理。
此外,可以像在Java EE中一样将JPA的持久化单元部署到Spring,Spring对JPA规范中指出的EntityManager注入和查找服从容器规则。
问题:JPA是否支持JDK1.4?
回答:JPA需要Java 5或更新版本。
问题:使用范围查询时,它是否也会返回结果总数(例如,返回538项结果中的1-10项)?
[1]