【发布时间】:2024-05-15 20:35:01
【问题描述】:
我正在学习使用 Hibernate。我想知道如何正确地在休眠中进行并发插入。
我有一个 url 表定义为:
CREATE TABLE `urls` (
id INT PRIMARY KEY AUTO_INCREMENT,
md5 CHAR(32) UNIQUE,
url TEXT
);
该表的目的是维护一个映射id url。 md5 字段是来自 url 的 md5 和,一般一个 url 可以长于 1024 字节,这是 mysql 中 UNIQUE 约束的限制。
我的问题是关于 url -> id 函数处理并发的查询。在 JDBC 实现中,我执行以下步骤:
- 选择 id WHERE md5=md5(url);
- 如果存在,返回id,否则:
- INSERT IGNORE INTO url (md5,url) VALUES (MD5(url), url);
- 重试步骤 1。
即使在第 2 步和第 3 步之间插入了请求的 url,它也能正常工作。如何使用 Hibernate 执行此操作?
【问题讨论】: