我有一个基于 Java/JPA/Hibernate/MySQL 的应用程序。我想使用 UUID 进行对象标识,但我想确保数据库性能不会受到影响。
我发现了这篇很棒的博客文章JPA 和 UUID 主键 http://www.thebinaryidiot.com/archives/2011/06/25/jpa-and-uuid-primary-keys/这让我取得了一些进展。请注意如何通过以二进制形式存储 UUID(与字符串表示形式相比)来优化 UUID 的存储。
它解决了部分问题,因为现在我们可以有效地将对象插入数据库。
但是,现在当我想使用 EntityManager.createQuery 从数据库查询时遇到问题。是否可以/需要查询二进制数据?或者,我应该将字符串 UUID 与二进制版本一起存储以方便查询吗?
使用 Hibernate 4.1.2 和 MySQL-Connector-J 5.1.18 进行测试,您可以定义 UUID 字段:
@Entity
class EntityType {
@Column( columnDefinition = "BINARY(16)", length = 16 )
private UUID id;
}
...并使用 UUID 实例进行查询:
UUID id = ....;
EntityType result = em.createQuery(
“SELECT x FROM EntityType x WHERE x.id = ?1″, EntityType.class )
.setParameter( 1, id ).getSingleResult();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)