java - 使用hibernate将 map 插入数据库

标签 java database hibernate key-value

我有一个有四列的表格

P_Key(int), Ref_Key(int), Key(String), Value(Integer).

我想通过将 map 与 Ref_key 一起保存到此数据库中来避免多个创建语句。映射包含键和相应的值。它将使用映射中的条目为该 Ref_key 创建多行。我正在使用 hibernate 。

假设,我想坚持以下 map :

"Me" -> 0
"You" -> 10
"They" -> 12

Ref_Key 为 123

然后它应该在表中创建 3 行。

P_Key Ref_Key Key Value
1      123    "Me" 0
2      123    "You" 10
3      123    "They" 12

假设 key 从 1 开始并且自动递增。

我应该遵循什么方法?

最佳答案

如果您的意思是“插入语句”而不是“创建语句”;我不确定您是否可以:数据库必须接收 3 个 INSERT 才能在数据库中添加 3 行。但 Hibernate 应该合并它们并仅发送 1 个网络请求(批量请求)。

我建议的方法:

  • 使用表格格式创建一个@Entity
  • 为 map 的每个元素创建一个实体实例。
  • 只需保留所有实例即可。
  • 关闭您的交易(我的意思是刷新)。

参见http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/batch.html有关批处理的更多信息。注意:不幸的是,Hibernate 禁用了自动递增主键的批处理!

关于java - 使用hibernate将 map 插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9786613/

相关文章:

java - Java Swing中的JButton悬停动画

java - unix/linux 无法解压缩用于 Elasticsearch 的文件

java - 从java中的控制台读取UTF-8标准的字符

mysql - 尝试删除表 MySQL 中的字段内容后出错

java - API 描述未显示在 Swagger UI 中

mysql - Ef 到 MySql 创建一个额外的列

mysql - 在Windows 7中的mysql 5.7中创建多个实例

java - 单个表的两个版本的 JPA 实体

java - 使用 Criteria 的 Hibernate 一对多搜索

java - Hibernate + Spring with Oracle - 使用分层查询(START WITH + CONNECT BY)