Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。通过映射机制,它可以自动处理对象与数据库表之间的转换,支持主流数据库,提高了代码的可移植性和可维护性。其核心接口包括 SessionFactory、Session 和 Transaction 等,通过它们可以执行数据库的 CRUD 操作。配置方面,需在项目中引入 Hibernate 及数据库驱动依赖,并创建 `hibernate.cfg.xml` 配置文件来设置数据库连接和 Hibernate 行为参数。

使用Hibernate进行数据库持久化操作
Hibernate 是一个开源的对象关系映射(Object-Relational Mapping,简称 ORM)框架,它对 JDBC 进行了封装,将数据库中的表和 Java 中的对象进行映射,使得开发者可以通过操作对象的方式来实现对数据库的操作。本文将介绍 Hibernate 的基本概念和使用方法,帮助读者掌握如何使用 Hibernate 进行数据库持久化操作。
一、Hibernate 简介
Hibernate 是一种 ORM 框架,它允许开发者将数据库中的表和 Java 中的对象进行映射,从而简化了数据库操作。通过 Hibernate,开发者无需编写繁琐的 SQL 语句,只需操作 Java 对象即可实现对数据库的增删改查等操作。Hibernate 支持多种数据库系统,如 MySQL、Oracle、SQL Server 等,具有很好的可移植性。
二、Hibernate 的核心接口
Hibernate 的核心接口包括以下几个:

  1. SessionFactory:用于创建 Session 对象,一个 SessionFactory 对应一个数据库,通常情况下,一个应用程序只需要一个 SessionFactory。
  2. Session:用于执行持久化操作,如增删改查等。Session 是 Hibernate 的核心接口,所有的持久化操作都是通过 Session 完成的。
  3. Transaction:用于管理事务,确保数据库操作的原子性。Hibernate 的事务管理是通过 Transaction 接口实现的。
  4. Query:用于执行 HQL 查询。HQL(Hibernate Query Language)是 Hibernate 的查询语言,它类似于 SQL,但是操作的是对象而不是表。
  5. Criteria:用于执行条件查询。Criteria 接口提供了一种类型安全的查询方式,可以避免 SQL 注入等安全问题。
    三、Hibernate 的配置和使用
  6. 添加 Hibernate 依赖
    要在项目中使用 Hibernate,首先需要添加 Hibernate 的依赖。如果是 Maven 项目,可以在 pom.xml 文件中添加如下依赖:
    <dependencies>
     <!-- Hibernate 核心依赖 -->
     <dependency>
         <groupId>org.hibernate</groupId>
         <artifactId>hibernate-core</artifactId>
         <version>5.4.30.Final</version>
     </dependency>
     <!-- 数据库驱动依赖,以 MySQL 为例 -->
     <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <version>8.0.23</version>
     </dependency>
    </dependencies>
    
  7. 创建 Hibernate 配置文件
    Hibernate 的配置文件名为 hibernate.cfg.xml,通常放在项目的 resources 目录下。配置文件中主要配置数据库信息和 Hibernate 相关属性。一个简单的 hibernate.cfg.xml 文件如下:
    <!DOCTYPE hibernate-configuration PUBLIC
         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
     <session-factory>
         <!-- 数据库驱动 -->
         <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
         <!-- 数据库 URL -->
         <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test?serverTimezone=UTC</property>
         <!-- 数据库用户名 -->
         <property name="hibernate.connection.username">root</property>
         <!-- 数据库密码 -->
         <property name="hibernate.connection.password">root</property>
         <!-- Hibernate 方言 -->
         <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
         <!-- 显示 SQL -->
         <property name="hibernate.show_sql">true</property>
         <!-- 格式化 SQL -->
         <property name="hibernate.format_sql">true</property>
         <!-- 自动创建表 -->
         <property name="hibernate.hbm2ddl.auto">update</property>
     </session-factory>
    </hibernate-configuration>
    
  8. 创建实体类和映射文件
    实体类是 Java 中表示数据库表的类,映射文件用于描述实体类和数据库表之间的映射关系。例如,有一个名为 User 的表,表中有 id、name 和 age 三个字段,对应的实体类和映射文件如下:
    ```java
    // User.java
    public class User {
    private int id;
    private String name;
    private int age;
    // getter 和 setter 方法
    }
    // User.hbm.xml
    <!DOCTYPE hibernate-mapping PUBLIC
     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    

     <id name="id" column="id">
         <generator class="native"/>
     </id>
     <property name="name" column="name"/>
     <property name="age" column="age"/>
    

    </hib
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
17天前
|
关系型数据库 MySQL 数据库
MyEMS开源系统安装之数据库
本文详细讲解MyEMS的安装步骤,重点介绍数据库架构与脚本部署。MyEMS支持MySQL 8.0、MariaDB 10.5及SingleStore 7.0等数据库服务器。通过命令行或客户端工具执行SQL脚本完成安装,包括多个数据库(如myems_billing_db、myems_energy_db等)。此外,提供解决常见问题的方法,如“用户拒绝访问”、“COLLATE设置”和“MAX_ALLOWED_PACKET错误”。注意,不建议在生产环境中将数据库安装于Docker容器内。
34 1
|
2月前
|
人工智能 运维 关系型数据库
|
4月前
|
存储 NoSQL 关系型数据库
PolarDB开源数据库进阶课17 集成数据湖功能
本文介绍了如何在PolarDB数据库中接入pg_duckdb、pg_mooncake插件以支持数据湖功能, 可以读写对象存储的远程数据, 支持csv, parquet等格式, 支持delta等框架, 并显著提升OLAP性能。
192 3
|
4月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课15 集成DeepSeek等大模型
本文介绍了如何在PolarDB数据库中接入私有化大模型服务,以实现多种应用场景。实验环境依赖于Docker容器中的loop设备模拟共享存储,具体搭建方法可参考相关系列文章。文中详细描述了部署ollama服务、编译并安装http和openai插件的过程,并通过示例展示了如何使用这些插件调用大模型API进行文本分析和情感分类等任务。此外,还探讨了如何设计表结构及触发器函数自动处理客户反馈数据,以及生成满足需求的SQL查询语句。最后对比了不同模型的回答效果,展示了deepseek-r1模型的优势。
219 2
|
2月前
|
SQL 人工智能 数据可视化
16.1k star! 只需要DDL就能一键生成数据库关系图!开源神器ChartDB让你的数据结构"看得见"
ChartDB是一款开源的数据库可视化神器,通过一句智能查询就能自动生成专业的数据库关系图。无需安装客户端、不用暴露数据库密码,打开网页就能完成从数据建模到迁移的全流程操作,堪称开发者的"数据库透视镜"。
320 67
|
4月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课14 纯享单机版
PolarDB不仅支持基于“共享存储+多计算节点”的集群版,还提供类似开源PostgreSQL的单机版。单机版部署简单,适合大多数应用场景,并可直接使用PostgreSQL生态插件。通过Docker容器、Git克隆代码、编译软件等步骤,即可完成PolarDB单机版的安装与配置。具体操作包括启动容器、进入容器、克隆代码、编译软件、初始化实例、配置参数及启动数据库。此外,还有多个相关教程和视频链接供参考,帮助用户更好地理解和使用PolarDB单机版。
173 1
|
4月前
|
存储 容灾 关系型数据库
PolarDB开源数据库进阶课11 激活容灾(Standby)节点
本文介绍了如何激活PolarDB容灾(Standby)节点,实验环境依赖于Docker容器中用loop设备模拟共享存储。通过`pg_ctl promote`命令可以将Standby节点提升为主节点,使其能够接收读写请求。激活后,原Standby节点不能再成为PolarDB集群的Standby节点。建议删除对应的复制槽位以避免WAL文件堆积。相关操作和配置请参考系列文章及视频教程。
89 1
|
4月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课13 单机版转换为集群版
本文介绍如何将“本地存储实例”转换为“共享存储实例”,依赖于先前搭建的实验环境。主要步骤包括:准备PFS二进制文件、格式化共享盘为pfs文件系统、启动pfsd服务、停库并拷贝数据到pfs内、修改配置文件,最后启动实例。通过这些操作,成功实现了从本地存储到共享存储的转换,并验证了新实例的功能。相关系列文章和视频链接提供了更多背景信息和技术细节。
76 0
|
4月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课7 实时流式归档
本文介绍了如何在PolarDB RAC一写多读集群中实现实时归档,确保WAL日志的及时备份。实验依赖于Docker容器和loop设备模拟的共享存储环境。通过配置主节点的`pg_hba.conf`、创建复制槽以及使用`pg_receivewal`工具,实现实时接收并归档WAL文件。此外,还提供了详细的命令行帮助和相关文档链接,方便读者参考和操作。注意:如果已搭建容灾节点,则无需重复进行实时归档。
82 0
|
22天前
|
存储 Cloud Native 关系型数据库
PolarDB开源:云原生数据库的架构革命
本文围绕开源核心价值、社区运营实践和技术演进路线展开。首先解读存算分离架构的三大突破,包括基于RDMA的分布式存储、计算节点扩展及存储池扩容机制,并强调与MySQL的高兼容性。其次分享阿里巴巴开源治理模式,涵盖技术决策、版本发布和贡献者成长体系,同时展示企业应用案例。最后展望技术路线图,如3.0版本的多写多读架构、智能调优引擎等特性,以及开发者生态建设举措,推荐使用PolarDB-Operator实现高效部署。
113 3