关于hibernate的笔试题(四)

1.内连接和外链接的区别是什么

从格式上:内连接有隐式内连接和显式内连接,隐式内连接没有inner join...On,而显式内连接的格式为inner join...On,他们的效果都是只显示与查询条件相匹配的那条记录

外链接有左外,右外,全外。左外格式是left join...on,显示的是left左边的表的内容全部显示,而left后面的那个表只显示符合的数据,其他的都为空。

右外格式是right join ...on,显示出来的数据是right右边的那个表全部显示数据,而左边的表只显示符合的数据,其他的都空着。

全外的格式是full join...on。两个表的数据全部都会显示出来,空的地方会显示null

2.讲一下你对SQLHQL的一些理解

hql是面向对象查询,格式:from + 类名 + 类对象 + where + 对象的属性

sql是面向数据库表查询,格式:from + 表名 + where + 表中字段

Hibernate 负责解析 HQL 查询语句, 然后根据对象-关系映射文件中的映射信息, HQL 查询语句翻译成相应的 SQL 语句

Hql对大小写敏感

3.讲一下你对SQL语句优化的了解(重要,面试必问)

1.尽量避免使用子查询先查外表再匹配内表,而不是先查内表t2,当外表的数据很大时,查询速度会非常慢。

2.避免函数索引由于MySQL不像Oracle那样支持函数索引,即使字段有索引,也会直接全表扫描。

3.exists 代替 in,EXISTS 是判断是否存在,in类似,但效率要比in

4.尽量不要使用Like模糊查询:全表查询

5.如果知道要查的数据的大概位置,读取适当的记录用LIMIT M,N

6.禁止不必要的ORDER BY排序

7.如果需要插入大量数据,批量INSERT插入,不要一条一条插

8.应尽量避免在 where 子句中使用!=<>操作符,否则将引擎放弃使用索引而进行全表扫描。

9.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描

4.讲一下你对hibernate检索策略的了解

 

5.说下Hibernate的缓存机制(重要,此为简答,不会的可以查资料) 

一级缓存,二级缓存

Session 的缓存被称为hibernate的第一级缓存。SessionFactory的外置缓存称为hibernate 的二级缓存。这两个缓存都位于持久层,它们存放的都是数据库数据的拷贝。SessionFactory的内置缓存存放元数据和预定义SQL,SessionFactory的内置缓存是只读缓存。

Hibernate的缓存包括Session的缓存和SessionFactory的缓存,其中SessionFactory的缓存又可以分为两类:内置缓存和外置缓存。Session的缓存是内置的,不能被卸载,也被称为Hibernate的第一级缓存。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值