Hibernate 实战教程:从零开始搭建项目
下载需积分: 0 | PDF格式 | 180KB |
更新于2025-01-07
| 190 浏览量 | 举报
"hibenater笔记"
本篇笔记主要介绍了如何开始使用Hibernate,一个流行的Java ORM框架,以及在实际开发中的关键概念和操作。对于初学者来说,这些内容提供了宝贵的指导。
1. **创建Hibernate项目**
- 首先,需要创建一个新的Java项目。
- 接着,引入必要的依赖库,包括Hibernate的核心库hibernate3.jar以及所有lib目录下的jar文件,还有MySQL的JDBC驱动。
2. **配置文件和实体类**
- 创建`hibernate.cfg.xml`配置文件,这是Hibernate项目的基石,用于配置数据库连接信息、日志配置(如log4j)等。
- 定义实体类,这些类对应数据库中的表,它们是业务逻辑处理的基础。
- 编写实体类的映射文件,例如`User.hbm.xml`,它定义了实体类与数据库表之间的映射关系。
3. **配置与工具类**
- 将映射文件(如`User.hbm.xml`)添加到`hibernate.cfg.xml`中,使得Hibernate知道如何管理和持久化这些实体。
- 编写`hbm2ddl`工具类,可以自动生成数据库表结构,简化了数据库建模的工作。
4. **客户端开发与调试**
- 在`hibernate.cfg.xml`中设置`<property name="hibernate.show_sql">true</property>`,使得SQL语句能够在控制台打印出来,便于开发者跟踪和调试。
5. **JUnit与单元测试**
- 使用JUnit进行单元测试,测试类需继承`TestCase`,测试方法以`test`开头,无参数且无返回值。
- 单元测试代码最好独立于主业务代码,保持代码组织清晰。
6. **理解Hibernate中的对象状态**
- **Transient状态**:对象未被Session管理,数据库中没有对应的记录。若尝试保存,需要先调用`Session.save()`或`Session.persist()`。
- **Persistent状态**:对象已纳入Session管理,数据库中有匹配的数据。在Session关闭后,对象会变为Detached状态。
- **Detached状态**:对象曾是Persistent状态,但当前Session不再管理它。如果需要更新数据库,需要先重新attach到Session。
7. **Hibernate的CRUD操作**
- Hibernate提供了创建(Create)、读取(Read)、更新(Update)和删除(Delete)对象的便捷方法,简化了数据库操作。
8. **get和load方法的区别**
- `get()`直接从数据库中获取对象,如果不存在则返回`null`。
- `load()`返回的是代理对象,只有在需要时才去数据库加载,如果对象不存在,则抛出异常。
9. **实体类设计原则**
- 实现无参构造函数,便于Hibernate实例化对象。
- 提供标识属性(通常是ID),用于区分不同的实体实例。
- 对于与SQL关键字冲突的属性,需使用`table`或`column`注解重命名。
10. **Hibernate基本映射**
- `<class>`标签映射为数据库表,`<property>`标签将普通属性映射为表字段。
- 普通属性指的是不包含自定义类、集合或数组的属性。
通过这个笔记,读者能够掌握Hibernate的基本使用,包括项目搭建、对象状态管理、数据操作以及映射配置等核心概念,为后续深入学习和使用Hibernate打下坚实基础。
相关推荐
234 浏览量
pp263020776
- 粉丝: 0
- 资源: 5
最新资源
- 行业分类-设备装置-一种接收机板卡和导航接收机.zip
- todolist2
- 《梯度增强决策树影响估计方法的适应与评价》论文及实验代码
- TypingTag:一个令人讨厌的Discord机器人
- 小型项目:最新演示可在此处找到;)
- 利用Python实现的BP神经网络进行人脸识别.zip
- 行业分类-设备装置-一种抗水防破抗氧化防蛀书画纸.zip
- 学生管理系统gui的简单实现---基于java.awt
- ansible-collectd:安装 CollectD 的 Ansible 角色
- arrows_car
- is-retry-allowed:根据error.code检查是否可以重试请求
- 行业分类-设备装置-一种报警方法、管理平台和报警系统.zip
- github-actions-sandbox:对您没有用。 对我来说,这只是一个沙箱GitHub回购,可以尝试一些东西并开发GitHub Actions
- flagser:计算有向标志复合体的同源性(基于https
- openwrt串口程序.rar
- MATLAB下的数字调制样式识别-其它文档类资源