Hibernate哪点事?
1.为什么在Hibernate的实体类中要提供一个无参数的构造器这一点非常重要?
每个Hibernate实体类必须包含一个 无参数的构造器, 这是因为Hibernate框架要使用Reflection API,
通过调用Class.newInstance()来创建这些实体类的实例.如果在实体类中找不到无参数的构造器,
这个方法就会抛出一个InstantiationException异常。
2.Hibernate中Session的lock()方法有什么作用?
Session的lock()方法重建了关联关系却并没有同数据库进行同步和更新。
因此,你在使用lock()方法时一定要多加小心。在进行关联关系重建时,
可以随时使用Session的update()方法同数据库进行同步。
3.Hibernate中save、persist和saveOrUpdate这三个方法的不同之处?
将对象保存到数据库中的方法,但其中有些细微的差别。
例如,save()只能INSERT记录,但是saveOrUpdate()可以进行 记录的INSERT和UPDATE。
还有,save()的返回值是一个Serializable对象,而persist()方法返回值为void。你
还可以访问 save、persist以及saveOrUpdate,找到它们所有的不同之处。
4.为什么保存一个父对象,而它的关联对象没有自动储存到数据库里
答:关联对象必需显式的调用session.save()(或session.persist()),
或者在关联的映射文件中加入cascade="all"或cascade="save-update"(或cascade="persist")才能够自动关联执行。
5.为什么在Hibernate中添加、删除、修改一个对象或Collection,但是数据库中实际上没有任何变化
这是因为如果没有使用Hibernate的自动事务处理,则必需显式的提交事务,操作才会在数据库中执行。
6.Cascade和Inverse有什么区别?
答:可以这样理解,Cascade定义的是关系两端对象到对象的级联关系;而Inverse定义的是关系和对象的级联关系。
7.Hibernate常用的接口有哪些?
SessionFactory,Query,Session,Transaction,Criteria,SQLQuery
8.简述Hibernate操作数据库的步骤?
1.加载解析配置文件,
2.读取并解析映射信息,创建SeesionFactory
3.打开Session
4.开启事务
5.数据库的操作
6.事务提交或回滚
7.关闭Session
9.说明以下属性的作用lazy,fetch,inverse,cascade?
lazy:延迟加载
true 延迟加载
false 即时加载,访问1方的时候N方信息自动加载
fetch:抓取策略
select 两次抓取(默认)join 一次抓取(迫切左外连接)
inverse:控制权转移
true (1:M是为true,对方为主控方)false
cascade:级联操作
9.list()和iterate()方法的区别?
list()每次都要 从数据库查询数据
iterate() 采用N+1次查询方式,先从数据库中先查所有的ID,在根据ID查询对象
10.hibernate.cfg.xml和User.hbm.xml分别是干什么的?
hibernate.cfg.xml----hibernate 配置文件
配置数据库的连接和hibernate 运行时各种属性,配置缓存,连接池等信息
User.hbm.xml -----实体类到数据库表的映射文件
配置表中字段和实体类属性的名称,类型,之间的关系
11.在hibernate.cfg.xml文件中显示SQL,格式化SQL需要设置哪些属性?
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
12.session.commit 和flush区别
commit会先调用flash执行session清理,然后提交事物;
flash执行session,但不一定提交事物(因为事物可能被委托给外围的aop代理来做);

浙公网安备 33010602011771号