### Hibernate入门级别教程知识点 #### 一、Hibernate简介与实现步骤概述 - **Hibernate**: 是一个开放源码的对象关系映射框架(Object Relational Mapping, ORM),它对JDBC进行了非常轻量级的对象封装,使得Java开发人员可以使用面向对象的方式进行数据库的操作。 #### 二、实现步骤详解 1. **创建表**: - 表的设计应该考虑到与Java对象的映射关系,即Java对象的属性需要与表中的字段相对应。 - 示例SQL语句: ```sql CREATE TABLE 表名 (主键 INT PRIMARY KEY, 其他键 VARCHAR(100)); ``` 2. **设置类库**: - 需要添加以下jar包至项目的类库中: - `hibernate3.jar` - `/lib/*.jar`(通常指的是项目依赖库中的其他jar文件) - `ojdbc14.jar`(用于Oracle数据库连接) - 设置步骤: 1. 在Eclipse中,选择`Windows > Preferences > Java > Build Path > User Libraries`,然后新建一个新的库,并添加上述jar包。 2. 右键点击项目,选择`Build Path > Add Library`, 添加新创建的用户库。 3. **配置hibernate.cfg.xml文件**: - 该文件用于配置数据库的连接参数以及指定映射文件的位置。 - **基本结构**: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 数据库连接参数 --> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <property name="connection.url">jdbc:oracle:thin:@192.168.0.20:1521:tarena</property> <property name="connection.username">openlab</property> <property name="connection.password">open123</property> <!-- 数据库方言 --> <property name="dialect">org.hibernate.dialect.OracleDialect</property> <!-- 映射文件注册 --> <mapping resource="entity/Book.hbm.xml"/> </session-factory> </hibernate-configuration> ``` 4. **编写实体类**: - 实体类用于表示数据库中的记录,需要定义好类的属性及其对应的getter和setter方法。 - 示例实体类: ```java public class Book { private int id; private String name; private String email; // getter and setter methods public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } ``` 5. **编写映射文件**: - 映射文件用于描述实体类和数据库表之间的映射关系。 - 示例映射文件: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="entity.Book" table="BOOKZCQ"> <id name="id" column="ID"> <generator class="increment"/> </id> <property name="name" column="NAME"/> <property name="email" column="EMAIL"/> </class> </hibernate-mapping> ``` 6. **编写测试类**: - 测试类主要用于演示如何使用Hibernate进行基本的CRUD操作。 - 示例代码: ```java public class HibernateTest { public static void main(String[] args) { // 创建实体类对象 Book book = new Book(); book.setName("Java编程思想"); book.setEmail("book@example.com"); // 创建配置对象并加载配置文件 Configuration config = new Configuration().configure(); // 获取SessionFactory SessionFactory sf = config.buildSessionFactory(); // 打开会话 Session session = sf.openSession(); // 开始事务 Transaction ts = session.beginTransaction(); // 执行操作 session.save(book); // 提交事务 ts.commit(); // 关闭会话 session.close(); } } ``` #### 三、Hibernate的核心概念 1. **对象持久化原理**: - 对象持久化是指将内存中的对象状态保存到磁盘等持久性存储介质的过程。 - 对象持久化的主要目的是解决内存数据的易失性和安全性问题,同时提供一种高效的数据管理和查询方式。 2. **为什么需要对象持久化**: - 内存数据的易失性:断电后数据丢失。 - 安全管理与备份需求。 - 内存无法存储大量数据。 - 共享数据的需求。 - 支持复杂查询。 3. **对象持久化的方法**: - **对象序列化**: - 适用于临时或少量数据的持久化。 - **使用数据库(通过JDBC实现)**: - 功能最完备。 - 理论上效率较高。 - 开发难度较大。 - 代码量大。 - **使用EJB**: - 封装了JDBC。 - 更复杂的开发过程。 - 侵入性框架。 - 需要重量级服务器支持。 - 功能可能不够全面。 - **使用ORM框架(如Hibernate)**: - 提供了更加灵活和高效的数据库访问方式。 - 减少了代码量和开发难度。 - 支持多种数据库平台。 - 能够更好地处理对象关系映射问题。 通过以上内容的学习,我们可以了解到Hibernate的基本使用方法和核心概念,这对于后续深入学习和实际应用Hibernate是非常有帮助的。
剩余13页未读,继续阅读
- 粉丝: 1
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Git操作图解(带VS2022集成Git工具)
- Android Studio Ladybug(android-studio-2024.2.1.12-mac-arm.zip.001)
- IKBC机械键盘固件.tar
- python源码教程,超级详细,附开发教程手册,python前端开发,入门级教程,第二章
- TCR+FC型svc无功补偿simulink仿真模型,一共两个仿真,如下图所示,两个其实大致内容差不多,只是封装不同,有详细资料,资料中有相关lunwen,有背景原理和分析,有使用说明,有建模仿真总结
- 蜘蛛分拣机器人工作站工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- 字符串批处理工具(源程序+代码)
- PSAT( Power System Analysis Toolbox)最新说明书.zip
- HTML+JS获取地理位置(经纬度)
- 基于simulink的车辆坡度与质量识别模型,扩展卡尔曼滤波,估计曲线与实际误差合理
- HTML+JS教程-实现图片页面内拖拽、拖放
- python源码教程,超级详细,附开发教程手册,python前端开发,入门学习第三章
- 神经网络基本概念及其在人工智能领域的应用概述
- EEMD算法应用于信号去噪.zip
- 使用comsol仿真软件 利用双温方程模拟飞秒激光二维移动烧蚀材料 可看观察温度与应力分布 周期为10us,变形几何部分本人还在完善学习中 三维的也有 还有翻阅的lunwen文献一起打包
- Android Studio Ladybug(android-studio-2024.2.1.12-windows-exe.zip.002)
评论0