我有一个Java程序,它使用Hibernate和MySQL来存储大量关于使用Eclipse IDE的跟踪数据。这些数据包含很多字符串,例如方法名称,目录,透视图名称等。我可以让Hibernate透明地避免数据库中的字符串重复吗?
例如,事件对象(然后反映在记录中)可以指定源文件和当前方法,用户名称等。显然,字符串数据可以重复。
只要它在内存中,它的大部分都是内在化的,所以所有重复的字符串实例都指向同一个对象(我确信这一点)。然而,使用@Basic(我使用注释),Hibernate将它映射到VARCHAR(255),这意味着浪费了很多空间。
如果我自己编写SQL,我可以用索引替换VARCHAR到手动管理的字符串查找表并保存空间(以额外查找为代价)。
有没有办法让Hibernate为我做这件事?我愿意支付这个空间的表现。
我想过,但有点希望有一个更优雅的方式,而不必改变我在程序端访问Java模型的方式,然后再坚持下去...... 另外,Hibernate会变得聪明足以使用这是作为一个查找?我不能让字符串字段的ID字段... – Uri 2008-09-27 23:06:44