java面试题

本文探讨了Maven作为项目构建工具的优势及其常用命令,并深入介绍了JPA作为持久化规范的特点与应用场景。同时,对比了JPA与JDBC的操作方式及各自的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jQuery的加载机制$(function(){})和window.onload有什么区别

他们都是在页面加载完过后才执行,但是:
jQuery的 $(function(){})会优先执行
window.onload最后执行

什么是Maven,说出使用Maven的优势是什么?

maven的含义

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具

Maven的优势:

自动构建,jar包依赖管理,契约编程

用过Maven的话,说出几个它常用的命令

  1. 打开cmd命令行,进入Hello项目根目录执行 mvn compile命令,查看根目录变化
  2. cmd 中继续录入mvn clean命令,然后再次查看根目录变化
  3. cmd 中录入 mvn clean compile命令, 查看根目录变化
  4. ****cmd 中录入 mvn clean test命令,查看根目录变化
  5. ****cmd 中录入 mvn clean package命令,查看根目录变化
  6. ****cmd 中录入 mvn source:jar命令,查看根目录变化,源码包
  7. cmd 中录入 mvn clean site命令,查看根目录变化
  8. ****cmd 中录入 mvn install命令,查看本地仓库变化
  9. ****生成Eclipse的需要2个文件mvn eclipse:eclipse
  10. maven打包不执行测试用例的命令
  11. ****mvn package -Dmaven.test.skip=true

为什么要使用JPA?

JPA是持久化规范,一般使用其实现Hibernate框架,不过其底层还是使用JDBC的
jdbc优缺点
优点:
jdbc操作数据库的底层技术
比较简单 比较直接,就可以操作数据库
缺点:
转换的时候特别麻烦
重复性代码比较多
移植数据库比较麻烦
jdbc 自身没有缓存(Cache),如果性能上面需要控制的化,就需要写缓存代码
jdbc不是面向对象的思维来操作的呀 面向sql操作,如果是sql高手,操作jdbc很爽的;

JPA优缺点
优点:
面向对象操作,操作对象 就相当于操作数据 比如 entityManager.perisit(employee)
移植数据比较方法,以后如果想换数据库,只需要换一个数据库方言就OK
JPA有缓存,效率不错的 (一级缓存 二级缓存 查询缓存)
缺点:
不能干预sql的生成 ,查询一个数据 find 默认查询所有字段 (select * from )
有些优化 jpa做不了,比如特别大数据量的时候,jpa也不适合,mybatis也解决不了 (架构策略 分库 分表 (分布式))
一个项目里面 对sql要求比较高,就不适合jpa

查询1千万条数据,怎么才是最快的?

如果内存够大可以先把数据放到缓存(内存)中
否则就分页查询显示1000条
执行SQL:查出1000条显示
在查询完之后,偷偷的查询下一页的数据,放到缓存中准备好

配置自动生成表的属性含义

create
创建策略 每次都要先删除 再创建
update
更新策略 不会删除 如果发现没有表 也会创建
如果是表里面新增字段 配置有效果
如果这个表里面已存在字段,修改属性 没有效果
create-drop
先删除 在创建 再删除 不怎么会用
validate
验证策略 如果有对应实体 但是没有对应的数据库表 会报错
数据库多字段 OK
数据库少字段 不OK

什么场景使用二级缓存

  1. 读取大于修改;
  2. 对数据要有独享控制,数据不会被第三方修改;
  3. 可以容忍出现无效数据,非关键数据(不是财务数据等)
  4. 数据量不能超过内存容量,数据量特别巨大,此时不适合于二级缓存(钝化)

JPA是否支持JDK1.4?

不支持,JPA需要Java 5或更新版本

与Hibernate相比,JPA是不是更好

JPA是规范,而Hibernate是实现。因此,这是不同事物的比较。可以肯定,使用标准API比使用专有API有更多优势,但不存在真正的劣势

什么是持久化单元

持久化单元是类和配置设置的集合,可以根据该集合创建EntityManagerFactory。它在 persistence.xml 文件中作为一个条目出现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值