常见框架的面试要点

1 hibernate

概念:

         它是O/R Mapping框架(对象关系映射框架)与之类型的框架有JPA,Mybatis框架。它提供丰富的查询(HQL查询,SQL查询,离线查询,命名查询(与mybatis类似,将查询语句写在实体类映射文件中))和对表的操作。

 

JDBC和Hibernate区别

      相同点:1 都是操作数据库的中间件

                    2 操作的对象都不是线程安全

                    3 都要进行显示事务处理

      不同点: 1 操作语言不同,JDBC只能写纯sql,Hibernate可以是HQL或者是SQL

                     2 操作的语句对象不同,JDBC操作的是表和表字段,Hibernate的HQL操作的实体类和其属性

                     3 操作的对象状态不同,jdbc基本都是瞬时状态的数据,hibernate操作的数据对象可以瞬时,持久和游离中的一种。

 

Hibernate对象三种状态以及如何切换?

       瞬时:一般指new出来的数据,数据库没有数据与之相对应

       持久:数据库有数据与之相对应,且当前的session没有关闭,如果修改了这个对象的值就有可能影响数据库表中的值

       游离(脱管):数据库有数据与之相对应,但是当前session已经关闭。

                 瞬时转持久?------》调用save(瞬时对象)或者saveorupdate(瞬时对象)方法

                持久转瞬时?-----》调用delete(持久对象)

                持久转游离?----》调用session.close()或者session.clear()方法

                游离转持久?---》sessionFactory.openSession()方法

                不能直接将瞬时转游离状态。

 

Hibernate中session的get方法和load方法的区别?

       1 当查询不到数据时,get会返回null,load会抛出异常

       2 get方法获取的数据都是真实数据(包括外键对象都是真实数据),load方法获取的数据如果有外键对象,那么该对象就是代理对象(代理对象默认是没有数据,如果向让代理对象获取数据,可以通过Hibernate.initialize(代理对象)方法)。

 

Hibernate主键生成策略

      1 native 本地化,根据当前配置数据库的类型做出适应的匹配

      2 increment  添加记录前,查询当前表最大id值,再+1后作为这条添加的记录的id

      3 sequence 适用于不支持主键自增,但是支持序列自增的数据库(oracle,DB2)

      4 identity 适用于支持主键自增,比如mysql,sqlServer ,sqlite

      5 assigned  字符串类型的主键,需要程序员自己添加。

      6 uuid.hex 按照算法生成的128位逻辑主键,该主键在当前世界是唯一。

 

Hibernate级联和懒加载

       级联:与增删改。如果需要通过修改一张表的数据影响另一张表的数据,建议使用级联。使用级联要注意删除时候,有可能会误删掉外键关联的其他数据,删除之前是否使用级联要慎重。

       懒加载:与查询数据有关。希望通过查询一个实体数据时,取出对应的实体外键对象的数据,应该配置

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值