Hibernate XML配置与实战教程
需积分: 10 159 浏览量
更新于2024-09-25
收藏 97KB DOC 举报
"王勇Hibernate自学笔记"
这篇笔记主要介绍了如何开始学习和使用Hibernate,一个流行的Java ORM(对象关系映射)框架。笔记分为几个部分,包括创建Hibernate项目、理解JUnit测试以及Hibernate的基本映射实体。
一、创建第一个Hibernate项目
1. 创建Java项目:这是任何Java应用程序的基础,为接下来的工作提供项目结构。
2. 添加依赖:引入Hibernate的库文件,包括`HIBERNATE_HOME/lib/*.jar`和`HIBERNATE_HOME/hibernate3.jar`,以及数据库驱动(如MySQL驱动),确保项目能够与Hibernate框架及数据库进行交互。
3. 配置`hibernate.cfg.xml`:这是Hibernate的核心配置文件,用于设置数据库连接、方言等基本信息。
4. 实体类:创建一个名为`User`的实体类,代表数据库中的表或记录。
5. 映射文件:编写`User.hbm.xml`,定义实体类与数据库表的映射规则。
6. 将映射文件加入配置:将`User.hbm.xml`包含在`hibernate.cfg.xml`中,使得Hibernate知道如何处理这个实体。
7. `hbm2ddl`工具:通过`ExoprtDB.java`生成DDL,即数据库表结构,便于快速创建数据库表。
8. 日志配置:添加`hibernate.show_sql`和`hibernate.format_sql`配置,显示执行的SQL语句,便于调试;同时引入`log4j`配置文件,便于程序的日志记录和调试。
二、JUnit简介
- 测试类:编写以`XXTest`命名的测试类,继承自`TestCase`,用于进行单元测试。
- 单元测试方法:方法名以`test`开头,无参数,无返回值,用`public`修饰。
- 测试目录:建议将测试类放在独立的目录下,以保持代码组织清晰。
- 断言:使用断言来验证方法的预期结果,确保代码功能正确。
三、Hibernate的CRUD操作与对象状态
- `get`和`load`的区别:`get`直接从数据库获取数据,若不存在则返回`null`;而`load`返回代理对象,若对象不存在,会在尝试访问时抛出`ObjectNotFoundException`异常。
- Hibernate的对象状态:
- `Transiet`:对象未被Session管理,数据库中无对应记录。
- `Persistent`:对象被Session管理,数据库中有对应记录,修改会自动同步到数据库。
- `Detached`:对象不再被Session管理,但数据库中仍有对应记录。
四、Hibernate基本映射实体
这部分简要介绍了如何将Java类映射到数据库表,包括属性到字段的映射、主键配置、关联映射(一对一、一对多、多对多)、级联操作、懒加载等概念。这些映射通常通过`@Entity`、`@Table`、`@Id`、`@Column`等注解或XML配置文件完成。
通过这份笔记,读者可以系统地学习到如何开始一个Hibernate项目,理解JUnit测试,以及进行基本的数据库操作和对象状态管理。进一步深入,还需要掌握更复杂的查询(如HQL或Criteria API),事务管理,性能优化等方面的知识。
2011-07-02 上传
2023-07-26 上传
2023-07-24 上传
2023-07-25 上传
2023-07-25 上传
2023-07-24 上传
2023-07-26 上传
2023-07-25 上传
gaohuixiang315
- 粉丝: 44
- 资源: 47
最新资源
- BottleJS快速入门:演示JavaScript依赖注入优势
- vConsole插件使用教程:输出与复制日志文件
- Node.js v12.7.0版本发布 - 适合高性能Web服务器与网络应用
- Android中实现图片的双指和双击缩放功能
- Anum Pinki英语至乌尔都语开源词典:23000词汇会话
- 三菱电机SLIMDIP智能功率模块在变频洗衣机的应用分析
- 用JavaScript实现的剪刀石头布游戏指南
- Node.js v12.22.1版发布 - 跨平台JavaScript环境新选择
- Infix修复发布:探索新的中缀处理方式
- 罕见疾病酶替代疗法药物非临床研究指导原则报告
- Node.js v10.20.0 版本发布,性能卓越的服务器端JavaScript
- hap-java-client:Java实现的HAP客户端库解析
- Shreyas Satish的GitHub博客自动化静态站点技术解析
- vtomole个人博客网站建设与维护经验分享
- MEAN.JS全栈解决方案:打造MongoDB、Express、AngularJS和Node.js应用
- 东南大学网络空间安全学院复试代码解析