Java面试之hibernate
Hibernate之我见:
Hibernate的核心思想就是ORM了,即对象到关系的映射。也就是将数据表中的数据表映射为对象,同时通过hibernate也能够把对象自动持久化到关系数据库中。hibernate主要就是充当业务逻辑层与数据库层之间的一个桥梁作用。也是对jdbc思想的一个实现吧。
具体的来说:个人觉得hibernate干了两个事情。
1. 就是hibernate将传统的MVC中的业务逻辑层进一步的进行分层。单独分出了持久化层负责数据的持久化操作。
2. Hibernate 封装了数据库的访问细节,并且维护着实体类与数据库之间的映射关系。使得业务处理程序通过Hibernate API可以进行数据库操作。
Hibernate执行流程:
大体上分为两个部分:
1. Session对象的创建。hibernate通过Configuration类的configure方法加载Hibernate配置信息,默认加载hibernate.cfg.xml文件。加载完毕后通过configuration类的buildSessionFactory方法创建SessionFactory对象。SessionFactory是一个生产session对象的工厂。当需要session对象时从此工厂中获取即可。
2. Session对象对数据进行增删改查的操作。Hibernate框架对JDBC作了轻量级的封装,使用hibernate对数据进行操作时,不需要再写繁琐的JDBC代码,完全面向对象的思维模式,其中还加入了对事务的控制。流程如:
A. 或许session对象
B. 开启事务
C. 数据操作 有异常 回滚事务 没有下一步
D. 提交事务
E. 关闭session对象
Hibernate缓存以及延迟加载
Hibernate中缓存分为两种:Session缓存和SessionFactory缓存。详见:
1. Session缓存(一级缓存)
Session级的缓存,生命周期很短,与session对应。调用session的load,get,save等方法时,hibernate会对实体对象进行缓存;当在同一个session中时再次调用时,hibernate会首先到缓存中查询,找到直接使用。就就不需要发出sql语句到数据库查询。
2. SessionFactory缓存(二级缓存)
二级缓存是sessionFactory级的缓存,生命周期与sessionFactory对应,可以在多个session之间共享。Hibernate中二级缓存需要使用相关的插件。需要进行配置。记不太清了。就是需要把使用二级缓存的属性设置为true。一般的对不是经常更新的数据进行二级缓存,如:热点新闻。 如果经常变化的话,使用二级缓存就得不偿失了。
3. Hibernate的延迟加载策略(get和load的区别)
Hibernate通过代理机制实现了延迟加载技术。也就是使用延迟加载的对象,在获取对象的时候返回的是对象的代理,并不是对象的真正引用,只有在对象真正被调用的时候,hibernate才会对其进行查询,返回真正的对象。
Hibernate的关系映射问题
1. 关联关系映射
多对一单向:
<many-to-one> 标签使用在多的一端,并使用<column >name属性一的一端的主键标识。
多对一双向:
多的一端没有变化,一的一端需要映射文件需要使用<set>标签进行映射。
<set name=”books”>
<key culume=”categoryId”>
<ont-to-many class=”Book”>
</set>
一对一主键关联:
User文件中: <one-to-one name=”idCard”>
idCare文件中:<one-to-one name=”user” constrained=”true”>
//constrained属性用于建立一个约束。
一对一外键关联:
User文件中:<many-to-one name=”idCard” unique=”true”>
多对多关联映射:
需要借助第三张表。持久化类中分别加上了set集合。
持久化配置文件为:
<set name=”course” table=”tb_studeng_course”>
<key column=”studentId”></key>
<many-to-many class=”Course” column=”courseId”>
</set>
//table用于指定第三张表。另外一张表同理。
2. 级联操作
级联操作通过cascade属性来实现。属性值可选值:none,save-update,delete,all。
3. 继承映射
有三种方法:
1. 映射成一张表
2. 每个子类映射成一张表
3. 每个具体类映射成一张表
Hibernate的hql语句查询
这块涉及到暑假库的知识,看着就闹心。数据库是一块永远的痛啊! 等以后心情好了,再看吧!
分享到:
相关推荐
Java程序员面试三十二问.doc Java经典试题及答案.doc java面试笔试题大汇总.doc 企业面试题精选.doc 9JAVA代码查错.doc jdbc.doc Struts.doc Hibernate?.doc
│ Java面试题56.ibatis和hibernate有什么不同.mp4 │ Java面试题57.hibernate对象状态及其转换.mp4 │ Java面试题58:hibernate的缓存.mp4 │ Java面试题59.webservice的使用场景.mp4 │ Java面试题60.Activiti的...
《Java面试宝典2018版》是针对Java开发者准备面试的重要参考资料,它涵盖了Java编程语言、Java虚拟机(JVM)、并发编程、框架、设计模式等多个关键领域的重要知识点。这本书旨在帮助Java程序员深入理解技术原理,...
最全的j2EE面试题,题量...8、java面试题及答案 9、java面试题编程篇 10、Oracle面试题 11、Oracle企业面试题集锦 12、Spring面试题 13、SSH面试题 14、Strut+Spring+Hibernate面试题 15、张孝祥整理Java就业面试题大全
《JAVA面试宝典》是一本全面涵盖Java技术体系和求职面试知识的指南,旨在帮助Java开发者准备面试,提升技能。本书共分为十章,从基础知识到框架应用,再到项目实战和面试题解析,覆盖了Java开发者的必备技能。 第一...
史上最全的android和java面试文档集。包括有: java程序员面试宝典.txt Java面试宝典2011版-1C,Java基础部分.doc 三大框架面试题.zip 技术面试题.zip Android笔试题库 C语言终极面试宝典.doc Java笔试题目汇总.pdf ...
在准备Java面试时,了解关键概念和技术是至关重要的。这份"java面试题总结资料"涵盖了多个Java核心领域的关键知识点,包括但不限于: 1. **基础语法**:理解基本的数据类型(如整型、浮点型、字符型和布尔型),...
### Java面试评价表知识点梳理 #### 一、Java基础知识 - **语法基础**:考查面试者对于Java语言的基础语法掌握程度,例如变量声明、数据类型转换、运算符使用等。 - **算法基础**:评估面试者对常见算法的理解,...
本文总结了Java面试题及答案,涵盖了Java基础、容器、多线程、反射、对象拷贝、JavaWeb、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/SpringCloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、...
JAVA面试问题总结 JAVA是一种广泛应用的编程语言,作为一名JAVA开发者,需要具备扎实的基础知识和实践经验。本文总结了常见的JAVA面试问题,涵盖了JAVA基础、JSP、Servlet、XML、J2EE、MVC、数据库等方面的知识点。...
在IT行业中,尤其是在Java开发领域,面试题常常围绕着核心技术和框架进行,如Hibernate、Struts、SQL、Java和Spring。这些技术是构建J2EE应用程序的基础,它们各自扮演着重要的角色。 首先,让我们深入了解一下Java...
【标题】:“日语java面试问题集”揭示了在针对日本客户的Java外包项目中,面试者可能遇到的技术和语言双重要求。这类面试通常旨在测试应聘者的Java编程基础、问题解决能力,以及与日本客户沟通的技能。 【描述】:...
总的来说,准备Java面试时,你需要深入理解这些技术的原理、应用场景和最佳实践,结合实际项目经验进行回答,才能在面试中展现出专业水平。通过这份1000+面试题的资源,你可以系统地复习并测试自己的知识深度,提升...
Java 面试中遇到的问题 Java 面试中常设计到的问题,以下是对标题和描述中所说的知识点的详细说明: Core Java * 线程:Java 中的线程是通过 Thread 类或 Runnable 接口来实现的。线程的生命周期包括新建、就绪、...
Java面试是每位求职者在进入IT行业,尤其是Java开发领域时必须经历的重要环节。这份"Java面试题库"包含了丰富的知识点,旨在帮助求职者更好地准备面试,提高成功几率。以下是一些关键的Java编程和面试相关知识点的...
这份PDF文件包含了122道精心挑选的Java面试题目,旨在全面覆盖Java编程语言的核心概念、框架、设计模式以及最佳实践。以下是对这份宝典中可能涵盖的知识点的详细解析: 1. **Java基础**:这部分可能会涉及Java的...
这份"JAVA面试大全"包含了丰富的知识点,旨在帮助初、中级开发者巩固基础,提升技能,并在面试中表现出色。 首先,Java基础是面试中的常见考点。这包括对Java语法的理解,如类、对象、封装、继承、多态等面向对象...
下面将详细讨论如何构建一个突出的Java面试简历以及如何展示项目经验。 首先,让我们从简历的结构和内容谈起。一个好的Java简历应该包括以下几个部分: 1. **基本信息**:姓名、联系方式、邮箱地址等,确保这些...
【标题】与【描述】提及的是“Hibernate面试题专栏”,主要涵盖了全面的Hibernate面试题、笔试题以及相关问题,这表明我们将要讨论的是Java领域中著名的对象关系映射框架——Hibernate的相关知识。Hibernate是一个...
Mybatis 可以使开发者更专注于 SQL 的编写,同时提供了强大的 XML 或注解方式来映射 SQL 语句,使得 SQL 与 Java 代码分离,提高开发效率。 2、Mybatis 的优点: - 灵活性高:允许开发者自由编写 SQL,适应各种复杂...