mysql 5.6 update hql_java – Hibernate可以使用MySQL的“ON DUPLICATE KEY UPDATE”语法吗?

MySQL支持“INSERT … ON DUPLICATE KEY UPDATE …”语法,允许您“盲目”插入到数据库中,如果存在,则返回更新现有记录。

当您需要快速事务隔离,并且要更新的值取决于数据库中已存在的值时,这将非常有用。

作为一个例子,假设您想要计算博客上查看故事的次数。使用此语法执行此操作的一种方法可能是:

INSERT INTO story_count (id, view_count) VALUES (12345, 1)

ON DUPLICATE KEY UPDATE set view_count = view_count + 1

这将比启动事务更有效率和更有效,并处理新故事发生在首页时发生的不可避免的例外。

我们如何用Hibernate做同样的事情,或者完成相同的目标?

首先,Hibernate的HQL解析器会抛出异常,因为它不了解数据库特定的关键字。实际上,HQL不喜欢任何明确的插入,除非它是一个“INSERT … SELECT ….”。

第二,Hibernate限制SQL仅供选择。如果您尝试调用session.createSQLQuery(“sql”),则Hibernate会抛出异常executeUpdate()。

第三,Hibernate的saveOrUpdate在这种情况下不符合账单。您的测试将通过,但如果您每秒有多个访问者,则会导致生产失败。

我真的要颠覆Hibernate吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值