hibernat面试题

hibernat面试题

ID:37239598

大小:79.50 KB

页数:15页

时间:2019-05-20

hibernat面试题_第1页
hibernat面试题_第2页
hibernat面试题_第3页
hibernat面试题_第4页
hibernat面试题_第5页
资源描述:

《hibernat面试题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、如何查看hibernate生成并执行的sql在定义数据库和数据库属性的文件applicationConfig.xml里面,把hibernate.show_sql设置为true这样生成的SQL就会在控制台出现了注意:这样做会加重系统的负担,不利于性能调优hibernate都支持哪些缓存策略?Read-only: 这种策略适用于那些频繁读取却不会更新的数据,这是目前为止最简单和最有效的缓存策略*Read/write:这种策略适用于需要被更新的数据,比read-only更耗费资源,在非JTA环境下,每个事务需要在session.close和sess

2、ion.disconnect()被调用*Nonstrictread/write:这种策略不保障两个同时进行的事务会修改同一块数据,这种策略适用于那些经常读取但是极少更新的数据*Transactional:这种策略是完全事务化得缓存策略,可以用在JTA环境下hibernate里面sortedcollection和orderedconnection有什么区别?sortedcollection是在内存中通过java比较器进行排序的orderedcollection是在数据库中通过orderby进行排序的Hibernate面试题小集Hibernate

3、面试题专栏1.Hibernate有哪几种查询数据的方式3种:hql、QBC——QueryByCriteriaAPI、原生sql(通过createSQLQuery建立)2.谈谈Hibernate中inverse的作用inverse属性默认是false,就是说关系的两端都来维护关系。比如Student和Teacher是多对多关系,用一个中间表TeacherStudent维护。Gp)i如果Student这边inverse=”true”,那么关系由另一端Teacher维护,就是说当插入Student时,不会操作TeacherStudent表(中间表)

4、。只有Teacher插入或删除时才会触发对中间表的操作。所以两边都inverse=”true”是不对的,会导致任何操作都不触发对中间表的影响;当两边都inverse=”false”或默认时,会导致在中间表中插入两次关系。3.说说Hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。saveOrUpdate()方法可以实现update()的功能,但会多些步骤,具体如下:如果对象在该session中已经被持久化,不进行操作;对象的标识符属性(identifierproperty

5、)在数据库中不存在或者是个暂时的值,调用save()方法保存它;如果session中的另一个对象有相同的标识符抛出一个异常;以上皆不符合则调用update()更新之。Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于:如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException;load方法可返回实体的代理类实例,而get方法永远直接返回实体类;load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法则

6、仅仅在内部缓存中进行数据查找,如没有发现对应数据,将越过二级缓存,直接调用SQL完成数据读取。Hibernate对象的三种状态是什么?瞬时态(Transient)、持久态(Persistent)、脱管态(Detached)。处于持久态的对象也称为PO(PersistenceObject),瞬时对象和脱管对象也称为VO(ValueObject)。瞬时态由new命令开辟内存空间的java对象,eg.Personperson=newPerson(”amigo”,“女”);如果没有变量对该对象进行引用,它将被java虚拟机回收。瞬时对象在内存孤立存在

7、,它是携带信息的载体,不和数据库的数据有任何关联关系,在Hibernate中,可通过session的save()或saveOrUpdate()方法将瞬时对象与数据库相关联,并将数据对应的插入数据库中,此时该瞬时对象转变成持久化对象。持久态处于该状态的对象在数据库中具有对应的记录,并拥有一个持久化标识。如果是用hibernate的delete()方法,对应的持久对象就变成瞬时对象,因数据库中的对应数据已被删除,该对象不再与数据库的记录关联。当一个session执行close()或clear()、evict()之后,持久对象变成脱管对象,此时持久

8、对象会变成脱管对象,此时该对象虽然具有数据库识别值,但它已不在HIbernate持久层的管理之下。持久对象具有如下特点:1.和session实例关联;2.在数据库中

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。