Hibernate 框架
1、Hibernate框架主要解决什么问题?
参考答案:Hibernate是一个ORM框架,即对象关系映射框架。能够将java类与关系数据库表进行映射,同时提供面向对象的数据查询(操作)机制,能够最大程度缩短程序员在SQL和JDBC上的编程时间,从大量的数据持久层编程工作中解脱出来。
2、Hibernate属性文件主要包括哪些内容?
参考答案:数据库访问的相关信息需要在Hibernate属性文件中进行配置,如数据库驱动类、连接池、用户名称、密码、需要映射的java类所在的包等。
3、Hibernate应用中的映射文件(hbm.xml)主要包括哪些内容?
参考答案:映射文件都存在与根元素<hibernate-mapping>下,其中使用最多的元素是class。Class下常用的子元素有:id、property、component、set、等。
4、Hibernate中持久化对象有哪三种状态?每种状态有什么特征?
参考答案:
(1) 瞬时状态(transient state):当通过new操作符实例化一个对象,而这个对象没有被session对象所管理,也就是说该对象没有与一个Session对象关联时,那么这个对象就是瞬时状态对象。瞬时状态对象不能被持久化到数据库中,也不会被赋予持久化标示(Identifier)。
(2) 持久状态(persistent state):如果一个对象与session对象关联,例如被session对象刚加载的、刚保存的、刚更新的,那么该对象就是持久化状态对象。持久化对象与数据库中的一条记录对应,并拥有持久化标示(Identified),当持久化对象有所改变是,当前事务提交后,Hibernate会自动检测到对象的变化,并持久化的数据库中。
(3)托管状态(detached state)当与持久状态对象关联的session关闭后,该对象就变成托管状态对象。托管状态的对象引用依然有效,可以继续使用。当托管状态的对象再次与某个Session关联后,托管状态对象将转变为持久化状态对象,托管期间进行的修改将被持久化到数据库中。
5、HQL语言与SQL的区别?
参考答案:
(1) HQL语言中出现的是类名、属性名,SQL语言中出现的是表名、字段名称。
(2) HQL语言严格区分大小写,SQL语言不区分大小写。
(3) HQL语言理解继承、多态等面向对象的概念。
6、一对多/多对一关联的实现方式有哪些?
参考答案:
(1) 基于朱外键的一对多/多对一关联:这种关联指的是从表通过外键参考主表的主键,从而实现关联。
(2)基于连接表的一对多/多对一关联:这种关联指的是两个表之间不直接关联,而是把各自的主键存放到关联表中,维护二者的关联关系。
7、什么是Hibernate中的TPS?
参考答案:
TPS(Table Per Subclass) 是Hibernate中一种实现继承映射的策略,即每个子类对应一张表,TPS 使用<joined-subclass>元素配置子类映射关系。
8、什么是Hibernate中的TPH?
参考答案:
TPH(Table Per Class Hierarchy)是hibernate中一种实现继承映射的策略,即每个子类对应的是表的一个分层结构。TPH策略中,使用<subclass>来配置子类,指定子类的区分字段值,同时配置子类扩展的属性。
9、什么是延迟加载?如何设置是否使用延迟加载?
参考答案:
延迟加载的意思是,当查询某个实例时,默认情况不查询其关联的实例。使用属性lazy可以设置是否使用延迟加载,lazy=”true” 表示使用延迟加载。