我正在学习使用Hibernate。我想知道如何正确地在hibernate中进行并发插入。Hibernate +并发插入(MySQL INSERT IGNORE)
我有一个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实现我做这些步骤:
- SELECT id其中MD5 = MD5(URL);
- if exists,return id,else:
- INSERT IGNORE INTO urls(md5,url)VALUES(MD5(url),url);
- 重试步骤1
即使插入步骤2和3。如何做到这一点与Hibernate之间的请求的URL它的工作原理很好吗?