Skip to content

Commit e7359c2

Browse files
author
github-actions
committed
update MD by dispatch event pingcap/docs i18n-zh-release-8.5
1 parent f67559b commit e7359c2

18 files changed

+1351
-543
lines changed

markdown-pages/zh/tidbcloud/master/develop/dev-guide-sample-application-java-hibernate.md

Lines changed: 73 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@ summary: 学习如何使用 Hibernate 连接 TiDB。本教程提供了可与 TiD
55

66
# 使用 Hibernate 连接 TiDB
77

8-
TiDB 是一个兼容 MySQL 的数据库[Hibernate](https://hibernate.org/orm/) 是一个流行的开源 Java ORM。`6.0.0.Beta2` 版本开始,Hibernate 支持 TiDB 方言,能够很好地适配 TiDB 的特性
8+
TiDB 是一个 MySQL 兼容的数据库[Hibernate](https://hibernate.org/orm/) 是流行的开源 Java ORM。由于 TiDB 与 MySQL 高度兼容,建议你将 `org.hibernate.dialect.MySQLDialect` 作为 Hibernate 的 dialect,以获得长期兼容性。或者,你也可以使用 TiDB 专用的 dialect(`org.hibernate.community.dialect.TiDBDialect`),该 dialect 可在 [Hibernate community dialects](https://github.com/hibernate/hibernate-orm/tree/main/hibernate-community-dialects) 中找到,但并非由 PingCAP 维护。如果你在使用 `MySQLDialect` 时遇到任何兼容性问题,可以在 GitHub 上提交 [issue](https://github.com/pingcap/tidb/issues)
99

1010
在本教程中,你可以学习如何使用 TiDB 和 Hibernate 完成以下任务:
1111

1212
- 搭建你的环境。
1313
- 使用 Hibernate 连接到你的 TiDB 集群。
14-
- 构建并运行你的应用程序。你还可以在 [示例代码片段](#sample-code-snippets) 中找到基本 CRUD 操作的示例代码
14+
- 构建并运行你的应用程序。你还可以在 [示例代码片段](#sample-code-snippets) 中找到基本 CRUD 操作的代码示例
1515

16-
> **Note:**
16+
> **注意:**
1717
>
18-
> 本教程适用于 TiDB Cloud Starter, TiDB Cloud Essential, TiDB Cloud Dedicated TiDB 自建版
18+
> 本教程适用于 TiDB Cloud StarterTiDB Cloud EssentialTiDB Cloud Dedicated 以及自建 TiDB。
1919
20-
## 前置条件
20+
## 前提条件
2121

2222
完成本教程,你需要:
2323

@@ -30,24 +30,24 @@ TiDB 是一个兼容 MySQL 的数据库,[Hibernate](https://hibernate.org/orm/
3030

3131
**如果你还没有 TiDB 集群,可以按如下方式创建:**
3232

33-
- (推荐)参考[创建 TiDB Cloud Starter 集群](/develop/dev-guide-build-cluster-in-cloud.md) 创建你自己的 TiDB Cloud 集群。
34-
- 参考[部署本地测试 TiDB 集群](/quick-start-with-tidb.md#deploy-a-local-test-cluster)[部署生产环境 TiDB 集群](/production-deployment-using-tiup.md) 创建本地集群。
33+
- (推荐)参照 [创建 TiDB Cloud Starter 集群](/develop/dev-guide-build-cluster-in-cloud.md) 创建属于你自己的 TiDB Cloud 集群。
34+
- 参照 [部署本地测试 TiDB 集群](/quick-start-with-tidb.md#deploy-a-local-test-cluster) [部署生产环境 TiDB 集群](/production-deployment-using-tiup.md) 创建本地集群。
3535

3636
</CustomContent>
3737
<CustomContent platform="tidb-cloud">
3838

3939
**如果你还没有 TiDB 集群,可以按如下方式创建:**
4040

41-
- (推荐)参考[创建 TiDB Cloud Starter 集群](/develop/dev-guide-build-cluster-in-cloud.md) 创建你自己的 TiDB Cloud 集群。
42-
- 参考[部署本地测试 TiDB 集群](https://docs.pingcap.com/tidb/stable/quick-start-with-tidb#deploy-a-local-test-cluster)[部署生产环境 TiDB 集群](https://docs.pingcap.com/tidb/stable/production-deployment-using-tiup) 创建本地集群。
41+
- (推荐)参照 [创建 TiDB Cloud Starter 集群](/develop/dev-guide-build-cluster-in-cloud.md) 创建属于你自己的 TiDB Cloud 集群。
42+
- 参照 [部署本地测试 TiDB 集群](https://docs.pingcap.com/tidb/stable/quick-start-with-tidb#deploy-a-local-test-cluster) [部署生产环境 TiDB 集群](https://docs.pingcap.com/tidb/stable/production-deployment-using-tiup) 创建本地集群。
4343

4444
</CustomContent>
4545

4646
## 运行示例应用连接 TiDB
4747

48-
本节演示如何运行示例应用代码并连接到 TiDB。
48+
本节演示如何运行示例应用代码并连接 TiDB。
4949

50-
### 第 1 步:克隆示例应用仓库
50+
### 步骤 1:克隆示例应用仓库
5151

5252
在终端窗口中运行以下命令,克隆示例代码仓库:
5353

@@ -56,33 +56,33 @@ git clone https://github.com/tidb-samples/tidb-java-hibernate-quickstart.git
5656
cd tidb-java-hibernate-quickstart
5757
```
5858

59-
### 第 2 步:配置连接信息
59+
### 步骤 2:配置连接信息
6060

6161
根据你选择的 TiDB 部署方式,连接到你的 TiDB 集群。
6262

6363
<SimpleTab>
6464
<div label="TiDB Cloud Starter or Essential">
6565

66-
1. 进入 [**Clusters**](https://tidbcloud.com/console/clusters) 页面,然后点击目标集群名称进入其概览页面
66+
1. 进入 [**Clusters**](https://tidbcloud.com/console/clusters) 页面,然后点击目标集群名称,进入其概览页面
6767

6868
2. 点击右上角的 **Connect**,弹出连接对话框。
6969

70-
3. 确保连接对话框中的配置与你的操作环境一致
70+
3. 确保连接对话框中的配置与你的运行环境一致
7171

7272
- **Connection Type** 设置为 `Public`
7373
- **Branch** 设置为 `main`
7474
- **Connect With** 设置为 `General`
75-
- **Operating System** 与你的环境一致
75+
- **Operating System** 与你的环境匹配
7676

77-
> **Tip:**
77+
> **提示:**
7878
>
7979
> 如果你的程序运行在 Windows Subsystem for Linux (WSL) 中,请切换到对应的 Linux 发行版。
8080
81-
4. 点击 **Generate Password** 生成一个随机密码
81+
4. 点击 **Generate Password** 生成随机密码
8282

83-
> **Tip:**
83+
> **提示:**
8484
>
85-
> 如果你之前已经创建过密码,可以继续使用原密码,或者点击 **Reset Password** 生成新密码。
85+
> 如果你之前已创建过密码,可以继续使用原密码,或点击 **Reset Password** 生成新密码。
8686
8787
5. 运行以下命令,复制 `env.sh.example` 并重命名为 `env.sh`
8888

@@ -101,7 +101,7 @@ cd tidb-java-hibernate-quickstart
101101
export USE_SSL='true'
102102
```
103103

104-
请务必将 `{}` 占位符替换为连接对话框中获取的连接参数
104+
请务必将 `{}` 占位符替换为连接对话框中获得的连接参数
105105

106106
TiDB Cloud Starter 需要安全连接,因此你需要将 `USE_SSL` 的值设置为 `true`
107107

@@ -110,15 +110,15 @@ cd tidb-java-hibernate-quickstart
110110
</div>
111111
<div label="TiDB Cloud Dedicated">
112112

113-
1. 进入 [**Clusters**](https://tidbcloud.com/console/clusters) 页面,然后点击目标集群名称进入其概览页面
113+
1. 进入 [**Clusters**](https://tidbcloud.com/console/clusters) 页面,然后点击目标集群名称,进入其概览页面
114114

115115
2. 点击右上角的 **Connect**,弹出连接对话框。
116116

117117
3. 在连接对话框中,从 **Connection Type** 下拉列表选择 **Public**,然后点击 **CA cert** 下载 CA 证书。
118118

119-
如果你还没有配置 IP 访问列表,请点击 **Configure IP Access List**或参考 [Configure an IP Access List](https://docs.pingcap.com/tidbcloud/configure-ip-access-list) 进行配置后再首次连接
119+
如果你尚未配置 IP 访问列表,请点击 **Configure IP Access List**或参照 [配置 IP 访问列表](https://docs.pingcap.com/tidbcloud/configure-ip-access-list) 进行首次连接前的配置
120120

121-
除了 **Public** 连接类型,TiDB Cloud Dedicated 还支持 **Private Endpoint****VPC Peering** 连接类型。更多信息请参见 [Connect to Your TiDB Cloud Dedicated Cluster](https://docs.pingcap.com/tidbcloud/connect-to-tidb-cluster)。
121+
除了 **Public** 连接类型外,TiDB Cloud Dedicated 还支持 **Private Endpoint****VPC Peering** 连接类型。更多信息参见 [连接到你的 TiDB Cloud Dedicated 集群](https://docs.pingcap.com/tidbcloud/connect-to-tidb-cluster)。
122122

123123
4. 运行以下命令,复制 `env.sh.example` 并重命名为 `env.sh`
124124

@@ -137,7 +137,7 @@ cd tidb-java-hibernate-quickstart
137137
export USE_SSL='false'
138138
```
139139

140-
请务必将 `{}` 占位符替换为连接对话框中获取的连接参数
140+
请务必将 `{}` 占位符替换为连接对话框中获得的连接参数
141141

142142
6. 保存 `env.sh` 文件。
143143

@@ -168,21 +168,21 @@ cd tidb-java-hibernate-quickstart
168168
</div>
169169
</SimpleTab>
170170

171-
### 第 3 步:运行代码并检查结果
171+
### 步骤 3:运行代码并检查结果
172172

173173
1. 执行以下命令运行示例代码:
174174

175175
```shell
176176
make
177177
```
178178

179-
2. 检查 [Expected-Output.txt](https://github.com/tidb-samples/tidb-java-hibernate-quickstart/blob/main/Expected-Output.txt) 以确认输出是否一致
179+
2. 检查 [Expected-Output.txt](https://github.com/tidb-samples/tidb-java-hibernate-quickstart/blob/main/Expected-Output.txt) 文件,确认输出是否一致
180180

181181
## 示例代码片段
182182

183183
你可以参考以下示例代码片段,完成你自己的应用开发。
184184

185-
完整示例代码及运行方法请参考 [tidb-samples/tidb-java-hibernate-quickstart](https://github.com/tidb-samples/tidb-java-hibernate-quickstart) 仓库。
185+
完整示例代码及运行方法请参见 [tidb-samples/tidb-java-hibernate-quickstart](https://github.com/tidb-samples/tidb-java-hibernate-quickstart) 仓库。
186186

187187
### 连接 TiDB
188188

@@ -198,7 +198,7 @@ cd tidb-java-hibernate-quickstart
198198
199199
<!-- Database connection settings -->
200200
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
201-
<property name="hibernate.dialect">org.hibernate.dialect.TiDBDialect</property>
201+
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
202202
<property name="hibernate.connection.url">${tidb_jdbc_url}</property>
203203
<property name="hibernate.connection.username">${tidb_user}</property>
204204
<property name="hibernate.connection.password">${tidb_password}</property>
@@ -225,7 +225,7 @@ public SessionFactory getSessionFactory() {
225225
}
226226
```
227227

228-
使用该函数时,需要将 `${your_entity_class}` 替换为你自己的数据实体类。如果有多个实体类,需要为每个实体类添加一条 `.addAnnotatedClass(${your_entity_class})` 语句。上述函数只是配置 Hibernate 的一种方式。如果你在配置过程中遇到问题,或想了解更多 Hibernate 相关内容,请参考 [Hibernate 官方文档](https://hibernate.org/orm/documentation)。
228+
使用该函数时,你需要将 `${your_entity_class}` 替换为你自己的数据实体类。若有多个实体类,需要为每个类添加一条 `.addAnnotatedClass(${your_entity_class})` 语句。上述函数只是配置 Hibernate 的一种方式。如果你在配置过程中遇到问题,或想了解更多 Hibernate 相关内容,请参考 [Hibernate 官方文档](https://hibernate.org/orm/documentation)。
229229

230230
### 插入或更新数据
231231

@@ -235,7 +235,7 @@ try (Session session = sessionFactory.openSession()) {
235235
}
236236
```
237237
238-
更多信息请参考 [插入数据](/develop/dev-guide-insert-data.md) 和 [更新数据](/develop/dev-guide-update-data.md)。
238+
更多信息参见 [插入数据](/develop/dev-guide-insert-data.md) 和 [修改数据](/develop/dev-guide-update-data.md)。
239239
240240
### 查询数据
241241
@@ -246,7 +246,7 @@ try (Session session = sessionFactory.openSession()) {
246246
}
247247
```
248248
249-
更多信息请参考 [查询数据](/develop/dev-guide-get-data-from-single-table.md)。
249+
更多信息参见 [查询数据](/develop/dev-guide-get-data-from-single-table.md)。
250250
251251
### 删除数据
252252
@@ -256,25 +256,61 @@ try (Session session = sessionFactory.openSession()) {
256256
}
257257
```
258258
259-
更多信息请参考 [删除数据](/develop/dev-guide-delete-data.md)。
259+
更多信息参见 [删除数据](/develop/dev-guide-delete-data.md)。
260+
261+
## 与 `MySQLDialect` 的兼容性
262+
263+
当你在 TiDB 中使用 `MySQLDialect` 时,请注意以下行为:
264+
265+
### `SERIALIZABLE` 隔离级别
266+
267+
应用程序如果尝试设置 `SERIALIZABLE` 事务隔离级别,在 TiDB 中会遇到如下错误:
268+
269+
```
270+
The isolation level 'SERIALIZABLE' is not supported. Set tidb_skip_isolation_level_check=1 to skip this error
271+
```
272+
273+
为避免该错误,请在服务器端设置如下 TiDB 系统变量:
274+
275+
```sql
276+
SET GLOBAL tidb_skip_isolation_level_check=1;
277+
```
278+
279+
启用该变量后,TiDB 会接受指定 `SERIALIZABLE` 的请求而不返回错误。内部实际仍采用 `REPEATABLE-READ`,这是 TiDB 的最强隔离级别。更多信息参见 [`tidb_skip_isolation_level_check`](/system-variables.md#tidb_skip_isolation_level_check)。
280+
281+
> **注意:**
282+
>
283+
> 社区维护的 `TiDBDialect` 会自动处理该行为,跳过需要 `SERIALIZABLE` 隔离级别的特性。
284+
285+
### `CHECK` 约束
286+
287+
Hibernate 的 [`@Check`](https://docs.hibernate.org/orm/6.5/javadocs/org/hibernate/annotations/Check.html) 注解会生成 DDL `CHECK` 约束。[MySQL 8.0.16 及以上版本](https://dev.mysql.com/doc/refman/8.0/en/create-table-check-constraints.html) 默认会强制执行这些约束,但 TiDB 默认不会强制执行,除非你显式开启。
288+
289+
如需在 TiDB 中启用 `CHECK` 约束强制执行,请设置如下系统变量:
290+
291+
```sql
292+
SET GLOBAL tidb_enable_check_constraint=ON;
293+
```
294+
295+
如果未设置该变量,TiDB 会接受 `CHECK` 约束语法但不会强制执行,可能导致数据完整性问题。更多信息参见 [`CHECK` 约束](/constraints.md#check)。
260296
261297
## 后续步骤
262298
263-
- 通过 [Hibernate 文档](https://hibernate.org/orm/documentation) 学习更多 Hibernate 的用法
264-
- 通过 [开发者指南](/develop/dev-guide-overview.md) 各章节学习 TiDB 应用开发最佳实践,例如 [插入数据](/develop/dev-guide-insert-data.md)、[更新数据](/develop/dev-guide-update-data.md)、[删除数据](/develop/dev-guide-delete-data.md)、[单表读取](/develop/dev-guide-get-data-from-single-table.md)、[事务](/develop/dev-guide-transaction-overview.md) [SQL 性能优化](/develop/dev-guide-optimize-sql-overview.md)。
299+
- 通过 [Hibernate 文档](https://hibernate.org/orm/documentation) 学习更多 Hibernate 用法
300+
- 通过 [开发者指南](/develop/dev-guide-overview.md) 各章节,学习 TiDB 应用开发最佳实践,例如 [插入数据](/develop/dev-guide-insert-data.md)、[修改数据](/develop/dev-guide-update-data.md)、[删除数据](/develop/dev-guide-delete-data.md)、[单表读取](/develop/dev-guide-get-data-from-single-table.md)、[事务](/develop/dev-guide-transaction-overview.md) 以及 [SQL 性能优化](/develop/dev-guide-optimize-sql-overview.md)。
265301
- 通过专业的 [TiDB 开发者课程](https://www.pingcap.com/education/) 学习,并在通过考试后获得 [TiDB 认证](https://www.pingcap.com/education/certification/)。
266302
- 通过 Java 开发者课程学习:[Working with TiDB from Java](https://eng.edu.pingcap.com/catalog/info/id:212)。
267303
268304
## 需要帮助?
269305
270306
<CustomContent platform="tidb">
271307
272-
在 [Discord](https://discord.gg/DQZ2dy3cuc?utm_source=doc) 或 [Slack](https://slack.tidb.io/invite?team=tidb-community&channel=everyone&ref=pingcap-docs) 社区提问,或[提交支持工单](/support.md)。
308+
在 [Discord](https://discord.gg/DQZ2dy3cuc?utm_source=doc) 或 [Slack](https://slack.tidb.io/invite?team=tidb-community&channel=everyone&ref=pingcap-docs) 社区提问,或 [提交支持工单](/support.md)。
273309
274310
</CustomContent>
275311
276312
<CustomContent platform="tidb-cloud">
277313
278-
在 [Discord](https://discord.gg/DQZ2dy3cuc?utm_source=doc) 或 [Slack](https://slack.tidb.io/invite?team=tidb-community&channel=everyone&ref=pingcap-docs) 社区提问,或[提交支持工单](https://tidb.support.pingcap.com/)。
314+
在 [Discord](https://discord.gg/DQZ2dy3cuc?utm_source=doc) 或 [Slack](https://slack.tidb.io/invite?team=tidb-community&channel=everyone&ref=pingcap-docs) 社区提问,或 [提交支持工单](https://tidb.support.pingcap.com/)。
279315
280-
</CustomContent>
316+
</CustomContent>

0 commit comments

Comments
 (0)