hibernate学习笔记
需积分: 0 176 浏览量
更新于2013-03-14
收藏 301KB DOCX 举报
Hibernate 是一个开源的对象关系映射框架,它允许开发者将Java对象和关系数据库的数据进行映射,从而简化数据库操作。在本篇文章中,我们将深入探讨 Hibernate 的核心概念和使用方法。
创建 Hibernate 项目的步骤包括新建 Java 项目,然后设置 User Library 并加入必要的 JAR 包,例如 Hibernate 的主库 hibernate3.jar 和所有相关的 lib/*.jar,以及 MySQL JDBC 驱动。接下来,我们需要创建 hibernate.cfg.xml 配置文件,这是 Hibernate 连接数据库和进行其他配置的主要文件。同时,为了便于调试,通常会包含 log4j 的配置。
在定义实体类时,每个 Java 类代表数据库中的一个表,类的属性与表的字段相对应。例如,我们可以定义一个 User 类,并为其创建对应的映射文件 User.hbm.xml,这样 Hibernate 就知道如何将 User 类实例转换为数据库中的记录。在 User.hbm.xml 文件中,我们通过 <class>, <property> 等标签指定类与表的映射规则。
为了将实体类自动映射到数据库表,可以编写一个工具类,如 ExportDB,它使用 SchemaExport 类读取配置文件并生成数据库表。通过 Configuration 和 SchemaExport 类,我们能够根据实体类创建数据库表结构。
在实际操作数据库时,我们需要经历以下步骤:
1. 读取配置文件,创建 Configuration 对象。
2. 使用 Configuration 创建 SessionFactory。
3. 打开 Session。
4. 开启事务。
5. 使用 Session 进行数据操作,如 save() 方法用于保存实体对象。
6. 提交事务。
在 Hibernate 中,对象有三种状态:瞬时对象(Transient Object)、持久对象(Persist Object)和离线对象(Detached Object)。瞬时对象未被 Session 管理,且在数据库中无对应记录。持久对象在数据库中有记录,并由 Session 管理。离线对象则是已存在数据库记录,但不再受 Session 管理。
测试实体对象的生命周期通常使用 JUnit,创建测试类并编写以 test 开头的方法。了解 CRUD(Create, Read, Update, Delete)操作是数据库操作的基础。get 和 load 方法的区别在于对懒加载(lazy loading)的支持,get 直接加载数据,而 load 支持延迟加载。如果 get 无法找到数据,则返回 null;load 则会抛出异常。
transient 状态的特征是数据库中没有对应记录,且对象未纳入 Session 管理。persistent 状态的对象有数据库记录,被 Session 管理,并在清理缓存时与数据库同步。detached 状态的对象也有数据库记录,但未被 Session 管理。
实体类映射到数据库表时,通常使用 <class> 和 <property> 标签。如果实体类或属性与 SQL 关键字冲突,可以使用 table 或 column 属性重命名。设计实体类时,应提供无参构造函数、标识属性,并为持久化字段声明访问器。主键生成策略有多种,如 uuid、native 和 assigned。
在多对一映射示例中,User 类有一个名为 group 的属性,表示用户所属的组,这在数据库中可能对应一个 Group 表。这种映射关系允许我们在 User 类中直接访问 Group 对象,简化了数据操作。
通过以上内容,我们对 Hibernate 的基本使用和核心概念有了深入了解,包括配置、对象状态管理、对象关系映射以及数据操作等。在实际开发中,熟练掌握这些知识能有效提高数据库操作的效率和代码的可维护性。

lijieqianqian
- 粉丝: 0
最新资源
- 网络教师讲座学校心理危机干预分钟.ppt
- 计算机多媒体技术应用于教学的优点和不足.docx
- 大数据背景下的行政事业单位国有资产管理.docx
- plc机械手控制系统设计方案组.doc
- 软件技术专业大学生职业生涯规划.docx
- 电子商务个人工作汇总.doc
- 浅议电梯安装工程项目管理工作.docx
- 探究互联网+时代背景下企业财务管理.docx
- 电气自动化在电力工程系统的应用发展.docx
- 《物联网技术及应用》习题二.doc
- 项目教学法与《电子商务网站开发》课程教学.pdf
- 电子科大16秋《网页与网站设计》在线作业1.doc
- 论我国电子商务发展中的物流3.doc
- 主流云计算技术平台搭建及案例.docx
- 加快发展软件服务业.ppt
- 11物联网应用技术专业人才需求调研研究报告.docx