Hibernate框架配置详解:XML与映射设置
92 浏览量
更新于2024-08-29
收藏 689KB PDF 举报
"Hibernate框架介绍以及入门【二】Hibernate的常见配置"
在深入理解Hibernate框架时,我们首先要了解其配置过程,这包括XML配置文件的设置和对象-关系映射(ORM)的配置。以下是关于Hibernate配置和映射的详细解释。
一、XML提示配置
1. 配置`hibernate-mapping-3.0.dtd`
这是用于定义Hibernate实体映射文件的DTD(文档类型定义),它规定了映射文件的结构。在XML文件中,需要声明此DTD的位置,通常是通过以下方式:
```xml
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
```
这里,`location`指向DTD的本地路径,`URL`指向DTD的在线地址。
2. 配置`hibernate-configuration-3.0.dtd`
这个DTD用于定义Hibernate配置文件的结构,例如`hibernate.cfg.xml`。配置方法与上述相同,但对应的DTD和URL会有所不同。
二、Hibernate映射配置
映射是将Java对象与数据库表关联的过程,主要通过`class`、`id`和`property`等标签进行配置。
1. `class`标签配置
`<class>`标签是用于定义一个Java类与数据库表的映射。其主要属性有:
- `name`: 指定Java类的完全限定名。
- `table`: 指定与类相对应的数据库表名,若类名与表名相同,可以省略。
2. `id`标签配置
`<id>`标签用于映射类中的主键字段,其主要属性包括:
- `name`: 指定类中的属性名,对应表中的主键字段。
- `column`: 指定表中的主键字段名,若与属性名相同,可省略。
- `length`: 字段长度,适用于字符串类型的主键。
- `type`: 主键字段的数据类型,如`int`、`String`等。
3. `property`标签配置
`<property>`标签用于映射类中的普通属性到表的字段,主要属性有:
- `name`: 类中的属性名。
- `column`: 表中的字段名,若与属性名相同,可省略。
- `length`: 字段长度,对于需要指定长度的字段如字符串。
- `type`: 属性的数据类型,如`string`、`int`等。通常,Hibernate能自动识别并转换类型。
- `not-null`: 是否允许该字段为null。
- `unique`: 是否设置字段为唯一。
三、核心配置`hibernate.cfg.xml`
核心配置文件`hibernate.cfg.xml`包含了连接数据库的关键参数和其他可选设置:
1. 必须配置:
- 驱动类:如`hibernate.connection.driver_class`,对应数据库的JDBC驱动类,如`com.mysql.jdbc.Driver`。
- URL路径:数据库的连接URL,例如`jdbc:mysql://localhost:3306/testdb`。
- 用户名:数据库连接的用户名。
- 密码:对应的密码。
- 方言:如`hibernate.dialect`,对应数据库的方言,如`org.hibernate.dialect.MySQLDialect`。
2. 可选配置:
- 显示SQL语句:`hibernate.show_sql`,设置为`true`可以在控制台打印执行的SQL语句。
- 格式化SQL语句:`hibernate.format_sql`,设置为`true`可以美化打印的SQL语句。
- 自动建表:`hibernate.hbm2ddl.auto`,可以设置为`create`、`update`等,让Hibernate自动创建或更新数据库表结构。
此外,还可以通过属性文件`hibernate.properties`或XML配置文件来设定这些参数,但属性文件方式不支持直接引入映射文件。
理解并熟练掌握这些配置,是使用Hibernate进行数据持久化的基础,能够帮助开发者高效地管理和操作数据库。
2017-11-22 上传
2017-11-22 上传
2017-05-08 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
weixin_38656400
- 粉丝: 2
- 资源: 917
最新资源
- 基于Python和Opencv的车牌识别系统实现
- 我的代码小部件库:统计、MySQL操作与树结构功能
- React初学者入门指南:快速构建并部署你的第一个应用
- Oddish:夜潜CSGO皮肤,智能爬虫技术解析
- 利用REST HaProxy实现haproxy.cfg配置的HTTP接口化
- LeetCode用例构造实践:CMake和GoogleTest的应用
- 快速搭建vulhub靶场:简化docker-compose与vulhub-master下载
- 天秤座术语表:glossariolibras项目安装与使用指南
- 从Vercel到Firebase的全栈Amazon克隆项目指南
- ANU PK大楼Studio 1的3D声效和Ambisonic技术体验
- C#实现的鼠标事件功能演示
- 掌握DP-10:LeetCode超级掉蛋与爆破气球
- C与SDL开发的游戏如何编译至WebAssembly平台
- CastorDOC开源应用程序:文档管理功能与Alfresco集成
- LeetCode用例构造与计算机科学基础:数据结构与设计模式
- 通过travis-nightly-builder实现自动化API与Rake任务构建