many-to-one
(1)在数据库中的体现:
一个表的主键对应另一个表的外键 (ec_order表 和 ec_item表)
建表语句和one-to-one里的一样,只要在最后加一个外键关联
alter table ec_item
add constraint fk_item_order
foreign key (orderid)
references ec_order(id);
(注:各个实体类都要实现Serializable接口 ,
都要有一个无参的构造方法,以便于通过反射机制来实例化这个类的对象)
*****************************************************************************
(2)在javaBean中的体现:
oen方的一个对象包含着many方的一组对象的引用(用set集合存放), many方的一个对象包含one方的一个对象的引用;
都应提供相应的getXXX()方法和setXXX()方法.
同样为了方便维护两者之间的关系还可以在one一方增加一个add(XXX)方法,来同时增加修改双方.
(注:各个实体类都要实现Serializable接口 ,都要有一个无参的构造方法,以便于通过反射机制来实例化这个类的对象)
*****************************************************************************
(3)在Hibernate中的体现:
Order.hbm.xml
------------------------
省略DTD的声明
<hibernate-mapping package="com.allanlxf.hibernate.association.o2m.entity">
<class name="Order" table="ec_order">
<id name="id" column="id" type="integer">
<generator class="native" />
</id>
<property name="owner" column="owner" type="string" length="15" not-null="true"/>
<property name="phone" column="phone" type="string" length="15" not-null="true"/>
<property name="address" column="address" type="string" length="50" />
<set name="items cascade="all-delete-orpan" invese="true">
<key column="orderid" />
<one-to-many class="Item" />
</set>
</class>
Hibernate笔记
需积分: 0 34 浏览量
更新于2008-12-21
收藏 7KB RAR 举报
**Hibernate笔记**
Hibernate是一款强大的Java持久化框架,它简化了数据库与Java对象之间的交互,使得开发者无需关注底层的SQL语句,而是通过面向对象的方式来操作数据。本笔记将深入探讨Hibernate的核心概念、配置、实体映射以及基本操作。
**一、Hibernate概述**
Hibernate是一个开源的对象关系映射(ORM)框架,它将Java对象与数据库表进行映射,实现了对象的透明持久化。通过Hibernate,开发者可以避免编写大量的SQL语句,提高了开发效率,同时减少了数据库依赖,增强了软件的可移植性。
**二、Hibernate核心概念**
1. **实体(Entity)**:在Hibernate中,实体是Java类,代表数据库中的表。通常,我们会用`@Entity`注解标记一个类为实体类。
2. **持久化类(Persistent Class)**:具备了持久化特性的Java类,其对象可以在数据库中持久化。
3. **Session**:是Hibernate的主要工作接口,用于在应用程序和数据库之间建立会话,处理事务并执行CRUD操作。
4. **SessionFactory**:创建Session的工厂,负责初始化与数据库的连接,并管理Session的生命周期。
5. **Criteria查询**:提供了一种面向对象的方式来查询数据,比传统的SQL更易读,更灵活。
6. **HQL(Hibernate Query Language)**:是Hibernate特有的查询语言,类似于SQL,但面向对象。
**三、Hibernate配置**
在使用Hibernate之前,我们需要配置Hibernate的`hibernate.cfg.xml`文件,其中包含数据库连接信息、方言、缓存设置等。此外,每个实体类也需要相应的映射文件(`.hbm.xml`或使用注解进行映射)。
**四、实体映射**
1. **注解映射**:通过在实体类上添加`@Entity`,`@Table`,`@Id`,`@GeneratedValue`等注解来完成映射。
2. **XML映射**:使用`.hbm.xml`文件定义实体与数据库表的映射关系,如`<class>`,`<id>`,`<property>`标签。
**五、基本操作**
1. **保存(Save)**:`session.save()`或`session.persist()`方法将对象状态变为持久化,首次插入数据库。
2. **更新(Update)**:修改对象属性后,调用`session.update()`或`session.saveOrUpdate()`将变化同步到数据库。
3. **删除(Delete)**:`session.delete()`方法从数据库中移除对应的记录。
4. **加载(Load)**:`session.load()`根据主键获取对象,如果对象不存在,会抛出异常。
5. **检索(Query)**:使用`session.get()`直接获取对象,或通过Criteria、HQL、JPQL进行复杂查询。
**六、事务处理**
Hibernate支持事务管理,通常使用`session.beginTransaction()`开始事务,`transaction.commit()`提交事务,`transaction.rollback()`回滚事务。事务的隔离级别、传播行为等也是重要的考虑因素。
**七、缓存机制**
Hibernate提供了两级缓存:第一级缓存是SessionFactory级别的,每个Session都有一个独立的缓存;第二级缓存是应用级别的,可以跨Session共享。通过配置,可以选择第三方缓存提供商,如EhCache或Infinispan。
**八、性能优化**
1. **批处理**:通过设置`hibernate.jdbc.batch_size`,批量处理多个SQL语句,提高性能。
2. **懒加载(Lazy Loading)**:延迟加载关联对象,只在实际访问时加载,减少数据库交互。
3. **集合分页**:使用Criteria的`setFirstResult()`和`setMaxResults()`方法实现分页查询,避免一次性加载大量数据。
4. **缓存策略**:合理使用缓存,减少数据库访问次数。
本笔记旨在提供对Hibernate基础的概述,实际应用中,开发者还需要结合项目需求,深入理解并熟练运用Hibernate的各种高级特性,如级联操作、事件监听、多态映射等,以实现高效、稳定的数据访问。
locationkey
- 粉丝: 10
- 资源: 4
最新资源
- Fluent激光电弧复合焊模拟 UDF包括高斯旋转体热源、双椭球热源(未使用)、VOF梯度计算、反冲压力、磁场力、表面张力,以及熔滴过渡所需的熔滴速度场、熔滴温度场和熔滴VOF
- 智能桌面宠物完整资料.zip
- 基于springboot的实习管理系统源码(java毕业设计完整源码+LW).zip
- Python期末大作业-奶牛疾病预测项目源码+报告(高分项目).zip
- 混合动力汽车simulink模型 P2插电式混合动力系统simulink模型 基于逻辑门限值控制策略 (模型可完美运行 ) ①(工况可自行添加)已有WLTC、UDDS、EUDC、NEDC工况; ②仿真
- 单相PWM整流器两种控制策略实现(交流220V-直流350V整流)仿真,分别采用直接电流控制(PR控制器)与dq控制(PI控制器)实现,两个仿真动稳态性能良好,附带仿真介绍文档,详细讲述仿真搭建过程
- EhLib VCL 10.2 Build 10.2.042 source
- matlab:基于遗传算法的多无人机协同任务分配 - 基于遗传算法的多无人机协同任务分配 - 种群中的每一个个体代表一次完整的任务分配方案,模型目标是找到代价函数的最小值,当作任务分配的最终方案 -
- top250电影资源翻页抓取python代码
- 机械设计走心机自动化step项目全套技术资料.zip
- SpringBoot的体育场馆预约小程序v12.0.1
- 机械设计左右循环倍数链线sw21可编辑项目全套技术资料.zip
- 2024雇佣关系趋势报告:新质职场重构增长路径-智联招聘-2024-24页.pdf
- 2024电商消费趋势年度报告-Flywheel-2024-90页.pdf
- 2024虎啸年度洞察报告—汽车行业-虎啸-2024-86页.pdf
- 2024年12月中国数据库行业分析报告-数据智能,融合创新-墨天轮-2024.12.13-48页.pdf