jpa面试题解析,java面试题

jpa在目前企业面试中经常会被问到,多了解一些相关面试题有益无害,小编这里就整理了常见jpa面试题,有兴趣的小伙伴们可以多了解一下。

一、jpa是什么

答:Java Persistence API(JPA)是Java的规范,用于在Java对象和关系数据库之间保存数据。

JPA充当面向对象的域模型和关系数据库系统之间的桥梁。 由于JPA只是一个规范,它本身不执行任何操作。 它需要一个实现。

因此,Hibernate,TopLink和iBatis等ORM工具实现了数据持久性的JPA规范。 Java Persistence

API(JPA)的第一个版本,JPA 1.0于2006年作为EJB 3.0规范的一部分发布。

二、jpa默认的FetchType是LAZY还是EAGER

答:不是lazy也不是eager,要区分来看。

onetoone默认是eager

manytoone默认eager

onetomany默认是lazy

三、jpa如何设置CascadeType才会级联查询

答:CascadeType本身与查询没有一毛钱关系,级联指的是增删改这些操作的时候,进行哪些相关操作。

四、EJB 2.0不支持继承,但是可以在几个不同位置(远程/bean)使用继承,只是不在本地使用而已。说一下其中原因。

答:根据EJB2.1规范的附录D 3:当前的EJB规范未指定组件继承的概念。

另一方面,JPA规范确实规定了实体继承的概念。我们已经处理了EJB 2.1规范中指出的各种问题和复杂性,现在允许完全的多态查询和关联。

五、BEA计划什么时候支持/发布EJB3

答:WebLogic Server 10 Technology Preview 是完全符合规范的Java 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或更新版本。

九、规范是否解决了缓存问题

答:JPA规范没有解决二级缓存问题(EntityManagerFactory-级),但是提供了实现该缓存必须遵守的一些数据锁定和一致性规则,即使在启用缓存时也是如此。

有少量与缓存有关的主题可能会在将来的JPA规范版本中解决,但是大多数缓存主题不必指定规则,这样,不同的供应商就可以轻松地完成不同的工作。此处增加的最重要的内容是一些基本缓存控制API,如回收某些对象ID,或将一些经常访问的ID固定到缓存中。

十、相对于EJB2来说,EJB3可以处理多少个并发事务

答:从纯会话bean的观点来讲,至少在WebLogic

Server中,并发事务的数目没有什么差别。也就是,如果将应用程序从EJB2会话bean转换到EJB3会话bean,但是完全没有修改持久化机

制,可能不会发现重大差别。这是因为EJB3规范对会话bean部分的大多数更改着重实现编程模型的改进。

从实体bean的观点来讲,我认为对于大多数应用程序,WebLogic Server的EJB

2.1和JPA支持的并发事务数目相同。可能发现JPA对于非主键的查询来说,可伸缩性更高。一旦开始钻研Kodo的

锁定组之类的功能,则对于固定的域模型,可以从基于JPA的系统中获得更多并发事务。

十一、如何为AquaLogic DSP应用JPA

答:AquaLogic

DSP着重关注对数据的多重存储访问,并将数据作为数据服务提供,通常作为XML或SDO呈现这些数据。JPA规范着重关注与数据存储交互的Java

API。可以设想,JPA绑定到AquaLogic DSP,或SDO绑定到Kodo产品(BEA的JPA实现)。

十二、什么是实现过程的最佳位置,例如,检查许多用户及其帐户(在银行应用程序中)以付给利息是在数据库的存储过程中实现,还是在EJB中使用JPA实现,还是同时使用这两种方式

答:根据我的经验,这实际上取决于组织因素,而不是其他因素。一些工作室更喜欢在存储过程中进行大量编码,而另一些则喜欢在Java中实现其业务逻辑。每种方法各有优势和代价。

尽管如此,还是有一些问题可促使他们优先考虑其中的一种环境。在您的例子中,在数据库中执行大量计算可能比将数据加载到内存中更快,因此使用存储过

程可能比较合理。另一方面,数据库承担这么多负载将对该应用程序的用户产生负面影响,因此最好付出一定代价跨网络拉出这些数据,以便将该数据库用作严格的

存储系统,而不是计算引擎。或者,如果应用程序的其余部分主要使用JPA,则适用的话,可能希望使用JPQL的大批量更新功能来进行更新。

十三、如果不先将数据加载到内存中,是否可以执行大批量更新

答:是的,可以通过JPQL执行大批量更新和大批量删除:

UPDATE Employee e SET e.salary = e.salary * 1.1 WHERE e.salary <

100000

十四、你们对Kodo

JDO有什么规划JPA是否会通过实现JDO的所有功能而将其取代如果是的话,是否存在任何时间表如果不是,你们会不会继续积极地开发JDO

答:BEA仍然完全忠于JDO。从规范的观点来看,我认为过一段时间之后,JPA将包含当前的JDO规范中越来越多的功能。

十五、什么是持久化单元

答:持久化单元是类和配置设置的集合,可以根据该集合创建EntityManagerFactory。它在 persistence.xml

文件中作为一个条目出现。

十六、如何在WebLogic 9.2中测试JPA

答:现在可以在WebLogic

9.2中使用OpenJPA或Kodo。该服务器不执行会话bean持久化单元注入,但是在10.0服务器中可以这么作,并且在9.2中,没有任何

Kodo控制台集成。但是除了引导注入问题之外,应该能够在WebLogic 9.2中成功地使用JPA,包括参与托管事务。

十七、JDBC连接对应于JPA中的什么概念

答:JPA EntityManager大致相当于JDBC连接,而JPA EntityManagerFactory从概念上类似于JDBC数据源。JPA

EntityTransaction(仅在JTA / appserver上下文以外可用)相当于JDBC连接的事务控制API。。

以上就是今天的全部内容,有关jpa面试题就到这了,还想了解更多java面试题的话,就请多多关注我们网站了解具体了。

推荐阅读:

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

猜你喜欢

转载自blog.csdn.net/m0_67401660/article/details/126061387