最近空闲了很长一段时间..忘了不少了
1.Query query = session.createQuery("from Emp"); // HQL语句
2.List empList = query.list(); 在默认情况下,hibernate会把所有数据装入list
3.<generator class="assigned" /> 在idcolumn中设置主键的获取方式
identity,自动主键 都需要数据库功能的支持
sequence,序列主键
<generator class="native">
<param name="sequence">emp_seq</param>
</generator>
native,数据库会根据自己的方言自动选择一个主键生成方式
4.Iterator it = query.iterate(); 默认情况下,hibernate只会取出数据库的所有主键放入it
如果在Emp.hbm.xml进行lazy设置
<class name="domain.Emp" table="t_emp" lazy="false">
List empList = query.list();
在FALSE情况下,hibernate会把所有数据装入list
Iterator it = query.iterate(); 这里 hibernate会先查询所有的主键 装入it 然后执行第一条sql语句 让指针指向迭代器的第一个元素,即需要查询第一个元素的数据.
5.<many-to-one name="dept" class="domain.Dept" column="dept_id" />
此方式将在emp中引用到dept对象 产生多对一的效果
6.
<set name="emps" cascade="delete">
<!--delete, save-update, delete-orphan-->
<key column="dept_id" />
<one-to-many class="domain.Emp" />
</set>
这里在Dept中有emp的集合set, cascade是级联属性
delete: session.delete(session.load(Dept.class, "001"));//这样就删除了所有和Dept有关的emp
若是使用iterator.remove() 仅仅是吧Dept_id修改为null 此记录成为孤儿
7.delete-orphan:
Dept dept = (Dept) session.load(Dept.class, "002");
Set set = dept.getEmps();
Iterator it = set.iterator();
while (it.hasNext()) {
Emp emp = (Emp) it.next();
if ("director".equals(emp.getPosition())) {
it.remove();
}
}
此方法将把满足条件的孤儿删除.
8.save-update: 当向集合里add一个新的emp的时候,会向数据库中插入一条新的数据
9.组合映射
<hibernate-mapping package="domain">
<class name="User" table="user" lazy="false">
<id name="id" type="integer">
<generator class="identity" />
</id>
<property name="name" />
<component name="mailAddress" class="Address">
<property name="city" column="address_city" type="string" />
<property name="street" column="address_street" type="string" />
</component>
</class>
</hibernate-mapping>
以上xml给出了一个组合映射的例子,在程序中也许是几个对象,但是在数据库中就只有一个表
在user里有一个address的对象属性 在配置时需要component标签对hibernate进行说明
10.继承映射
hibernate能自动帮助我们对复杂关系的对象进行数据库的处理
比如Question下的两个子类EasyQuestion和ChoiceQuestion都是共享一张数据库表
id name question_type question_choice
由type来判断是某种问题,下面就是一个配置好的Question.hbm.xml文件
<hibernate-mapping package="domain">
<class name="Question" table="question" lazy="false">
<id name="id" type="integer">
<generator class="identity" />
</id>
<discriminator column="question_type" type="string" />
<property name="name" />
<subclass name="EssayQuestion" discriminator-value="e">
</subclass>
<subclass name="ChoiceQuestion" discriminator-value="c">
<property name="option" column="question_option" type="string" />
</subclass>
</class>
</hibernate-mapping>
其中我们会告诉hibernate一个分支点
<discriminator column="question_type" type="string" />
由这个的column内容来判定需要用哪个类来封装数据
在subclass中来指定判定条件和封装类
ChoiceQuestion cq = new ChoiceQuestion();
cq.setName("Java是不是微软的产品");
cq.setOption("是;不是;以上都对;以上都不对");
session.save(cq);
hibernate会根据配置文件来保存type和内容
取也是同理
使用继承映射方便了很多操作,例如
Question q1 = (Question)session.load(Question.class, 2);
Question q2 = (Question)session.load(Question.class, 3);
System.out.println(q1);
System.out.println(q2);
分享到:
相关推荐
Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...
【hibernate权威整理文档!】 一、Hibernate简介 Hibernate是一个强大的ORM(Object-Relational Mapping)框架,它致力于简化Java应用程序的持久层开发。通过Hibernate,开发者可以将Java对象映射到数据库表,从而实现...
hibernate jar包整理,新手上路
该笔记由作者根据马士兵老师的教程整理而成,其中包含了个人的学习注解,使得内容更加生动易懂。 1. **Hibernate简介** Hibernate是一种开放源代码的ORM框架,它简化了Java应用程序与数据库之间的交互,通过将对象...
**标题:“Hibernate配置连接池整理”** 在Java开发中,数据访问层的性能优化往往离不开高效的数据连接管理,而连接池就是实现这一目标的关键技术。Hibernate作为一款强大的对象关系映射(ORM)框架,它提供了与...
在这个"hibernate整理"中,我们将深入探讨Hibernate的核心概念,包括SessionFactory、Session以及如何进行增、删、改、查(CRUD)操作。 首先,`SessionFactory`是Hibernate的核心组件之一,它是线程安全的,负责...
**Hibernate 二级缓存总结整理** 在Java的持久化框架中,Hibernate是一个广泛使用的ORM(对象关系映射)工具,它极大地简化了数据库操作。在处理大数据量或高并发的场景下,为了提高性能和减少数据库负载,...
【Hibernate 知识整理】 1- Hibernate 是什么? Hibernate 是一个流行的对象关系映射(ORM)框架,它允许 Java 开发者用面向对象的方式来处理数据库交互。Hibernate 自动处理 SQL 转换和数据库访问,使得开发人员...
《Hibernate开发实战讲解》源码解析 在Java领域,Hibernate是一个非常重要的持久化框架,它极大地简化了数据库操作,使得开发者能够专注于业务逻辑而非繁琐的数据交互。本篇将深入探讨Hibernate的核心概念,以及...
### hibernate框架学习笔记整理 #### 一、Hibernate框架简介 **Hibernate框架**是一种用于Java应用的**对象关系映射**(Object-Relational Mapping, ORM)解决方案,它允许开发者使用面向对象的方式操作数据库中的表...
为了方便起见,可以将这些jar包整理到一个压缩包中,便于下载和使用。在给出的文件名称列表中,"spring"可能指的是Spring框架的相关jar包,但具体还需查看压缩包内容以了解完整的依赖集合。 综上所述,Spring MVC和...
- **2005年3月**:Hibernate 3 正式发布,相比前一版本有重大改变,这份文档将以之前Hibernate 2 的文档为基础,针对Hibernate 3 进行重新整理的工作,使用的版本为Hibernate 3.0。 #### 三、基础入门 **基础入门*...
这两份笔记可能由经验丰富的开发者整理,包含他们在学习和使用Hibernate过程中积累的实用技巧和常见问题解决方案。这些个人经验往往能提供独特的视角和实战经验,对于解决实际问题非常有价值。 通过这些资料的学习...
这个压缩包包含的是整合这两个框架所需的jar文件,已经过整理,方便开发者直接使用。 SpringMVC 4.0 是Spring框架的一个模块,专注于Web应用的开发。它提供了模型-视图-控制器(MVC)架构模式,使得开发者可以将...
### Hibernate 3.2中文手册知识点汇总 ...以上是基于提供的文件信息中提到的部分章节内容所整理的关键知识点。这些知识点涵盖了从Hibernate的基本使用到高级配置和技术细节,有助于深入理解和掌握Hibernate框架。
本资源集合整理了所有用于搭建和运行Hibernate项目所需的Jar包,旨在帮助开发者快速构建基于Hibernate的应用,无需逐个寻找依赖库。 Hibernate的核心特性在于它能够将Java对象与数据库表进行映射,通过对象的方式来...
自己整理的hibernate4.3.5 core参考文档,详细的开发文档,chm格式,看着更加方便
整理了一个上午,共9个包,信息如下: hibernate-3.2.0.ga.jar Hibernate的核心包,所以是必须的jar包 cglib-nodep-2.1_3.jar AOP dom4j-1.6.1.jar dom4j是一个Java的XML API,类似于jdom, 用来读写XML文件的,这是...
最新整理的hibernate-mapping的dtd文件!欢迎大家下载!最新整理的hibernate-mapping的dtd文件!欢迎大家下载!