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