JAVA面试问题与答案.docxVIP

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1、什么是ORM?? 答:对象关系映射(Object-Relational Mapping,简称ORM)是一种为了解决程序的面向对象模型与 HYPERLINK /base/mysql \o MySQL知识库 \t /jackfrued/article/details/_blank 数据库的关系模型互不匹配问题的技术;简单的说,ORM是通过使用描述对象和数据库之间映射的元数据(在 HYPERLINK /base/javase \o Java SE知识库 \t /jackfrued/article/details/_blank Java中可以用XML或者是注解),将程序中的对象自动持久化到关系数据库中或者将关系数据库表中的行转换成Java对象,其本质上就是将数据从一种形式转换到另外一种形式。 2、持久层设计要考虑的问题有哪些?你用过的持久层框架有哪些?? 答:所谓持久就是将数据保存到可掉电式存储设备中以便今后使用,简单的说,就是将内存中的数据保存到关系型数据库、文件系统、消息队列等提供持久化支持的设备中。持久层就是系统中专注于实现数据持久化的相对独立的层面。 持久层设计的目标包括:? - 数据存储逻辑的分离,提供抽象化的数据访问接口。? - 数据访问底层实现的分离,可以在不修改代码的情况下切换底层实现。? - 资源管理和调度的分离,在数据访问层实现统一的资源调度(如缓存机制)。? - 数据抽象,提供更面向对象的数据操作。 持久层框架有:? -? HYPERLINK / \t /jackfrued/article/details/_blank Hibernate? -? HYPERLINK / \t /jackfrued/article/details/_blank MyBatis? -? HYPERLINK /technetwork/cn/middleware/toplink/overview/index.html \t /jackfrued/article/details/_blank TopLink? -? HYPERLINK /p/guzz/ \t /jackfrued/article/details/_blank Guzz? -? HYPERLINK / \t /jackfrued/article/details/_blank jOOQ? -? HYPERLINK http://projects.spring.io/spring-data/ \t /jackfrued/article/details/_blank Spring Data? -? HYPERLINK /p/activejdbc/ \t /jackfrued/article/details/_blank ActiveJDBC 3、Hibernate中SessionFactory是线程安全的吗?Session是线程安全的吗(两个线程能够共享同一个Session吗)?? 答:SessionFactory对应Hibernate的一个数据存储的概念,它是线程安全的,可以被多个线程并发访问。SessionFactory一般只会在启动的时候构建。对于应用程序,最好将SessionFactory通过单例模式进行封装以便于访问。Session是一个轻量级非线程安全的对象(线程间不能共享session),它表示与数据库进行交互的一个工作单元。Session是由SessionFactory创建的,在任务完成之后它会被关闭。Session是持久层服务对外提供的主要接口。Session会延迟获取数据库连接(也就是在需要的时候才会获取)。为了避免创建太多的session,可以使用ThreadLocal将session和当前线程绑定在一起,这样可以让同一个线程获得的总是同一个session。Hibernate 3中SessionFactory的getCurrentSession()方法就可以做到。 4、Hibernate中Session的load和get方法的区别是什么?? 答:主要有以下三项区别:? ① 如果没有找到符合条件的记录,get方法返回null,load方法抛出异常。? ② get方法直接返回实体类对象,load方法返回实体类对象的代理。? ③ 在Hibernate 3之前,get方法只在一级缓存中进行数据查找,如果没有找到对应的数据则越过二级缓存,直接发出SQL语句完成数据读取;load方法则可以从二级缓存中获取数据;从Hibernate 3开始,get方法不再是对二级缓存只写不读,它也是可以访问二级缓存的。 说明:对于load()方法Hibernate认为该数据在数据库中一定存在可以放心的使用代理来实现延迟加载,如果没有数据就抛出异常,而通过get()方法获取的数据可以不

文档评论(0)

celkhn5460 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档