OID是hibernate当中一个很重要的概念,没有OID的话hibernate就无法帮你管理持久化对象,但是有的时候数据库中的表是没有主键的,这个时候就不得不使用联合主键来作为OID,有时候是将所有字段联合有时候是部分字段的联合。
在使用hibernate的联合主键时有一下几个注意的问题:
1、首先就是映射文件中联合主键的写法,
例子:
<composite-id name="sid" class="cn.test.po.IpAndSubphoneId">
<key-property name="ip" type="java.lang.String">
<column name="IP" length="50" />
</key-property>
<key-property name="subphone" type="java.lang.String">
<column name="SUBPHONE" length="50" />
</key-property>
</composite-id>
联合主键当中的<key-property>标签跟<property>标签的写法基本相同,只是需要写在<composite-id>标签里面。
2、联合主键当中的字段不应该存在空值
在实际的开发当中我发现,如果联合主键中的某一字段为空值,那么将会导致通过该联合主键查询出来的结果为空值,这个问题不知道是hibernate的bug还是spring集成hibernate时产生的问题,总之在实际使用的时候最好保证作为联合主键的字段都是有值的。
3、主键容易冲突
hibernate联合主键的另一个弊端就是存在主键重复的隐患,如果将某几个字段做为联合主键,在这些字段更新之后很可能造成重复,但数据库中并不会报错(存在其他不相同的字段),然而hibernate却会报主键重复的错误。
4、使用起来麻烦
有时候只是需要查询一个字段,但是却要通过包含N个字段的联合主键来进行查询,这样做未免劳民伤财十分的不爽。
所以在这里奉劝大家还是少用联合主键为好,避免不必要的麻烦,除非在万万不得已的情况下找不到不用联合主键的方法。
分享到:
相关推荐
2. 慎用JOIN:过多的JOIN可能导致性能下降,可考虑使用子查询或分步查询。 3. 避免大量对象加载:使用游标或分页查询减少内存消耗。 4. 注重事务管理:合理划分事务边界,确保数据的一致性和完整性。 总结,...
加密的惨剧!慎用文件夹加密软件! 加密的惨剧!慎用文件夹加密软件!
把要删除的文件拖到这个文件上面即可。注意,这是强力删除。一定慎用,因为连垃圾箱都会没有的。
易语言处理事件命令慎用时钟版源码,处理事件命令慎用时钟版
3. 慎用级联操作,避免引发不必要的数据更新。 4. 利用缓存优化,但要注意缓存同步和数据一致性问题。 总结,《Hibernate文档》全面介绍了Hibernate的各个方面,包括基础概念、配置、操作以及高级特性,并提供了...
SQL和MSDE清理小程序(慎用),SQL和MSDE清理小程序(慎用),SQL和MSDE清理小程序(慎用),
慎用六大软件伤硬盘最终版.pdf
标题“慎用动态编译”指的是在编程过程中对动态编译这一技术的谨慎态度。动态编译是程序运行时根据需要将源代码编译为可执行代码的过程,与静态编译(编译时一次性完成)形成对比。在Java中,JIT(Just-In-Time)...
- 慎用`@OneToOne`和`@ManyToMany`,它们可能导致性能瓶颈和数据冗余。 - 适当使用懒加载和立即加载,平衡内存消耗和查询效率。 通过学习并熟练掌握这些知识点,Java开发者可以充分利用Hibernate的优势,高效地...
标题“慎用ext.zip”可能指的是在编程或系统管理中,对使用特定扩展名如“ext.zip”可能带来的潜在问题的警示。虽然描述部分没有提供具体信息,但我们可以基于这个标题来探讨一下在处理zip文件,特别是那些带有“ext...
玩客云 灯光控制 容易烧主板 慎用
3. 慎用@OneToMany和@ManyToMany,考虑使用中间表来优化性能。 4. 适当使用二级缓存,但要注意缓存一致性和并发问题。 总结,Hibernate通过提供强大的ORM功能,极大地简化了Java应用与数据库的交互,但同时也需要...
慎用抗生素 刻不容缓 (小品).docx
《易语言处理事件命令慎用时钟版源码解析》 易语言,作为一款由中国程序员设计的编程语言,以其简洁的语法和贴近自然语言的特点,为初学者提供了友好的编程环境。然而,对于任何编程语言而言,理解并合理使用各种...
2. 考虑到数据一致性,对于实时性要求高的数据,慎用缓存或选择合适的缓存更新策略。 3. 合理设定缓存大小,避免缓存溢出导致系统性能下降。 4. 使用缓存时,应确保有足够的内存资源,防止因缓存过大导致系统内存...
初中语文文摘生活慎用何首乌治白发
易语言处理事件命令慎用线程版源码。@易语言源码分享站。
3. 慎用JOIN查询,尽量使用对象导航获取关联数据,减少SQL的复杂度。 4. 避免在循环中进行数据库操作,可能导致大量无效的数据库请求。 5. 使用批处理操作,批量插入或更新数据,提高效率。 六、进阶应用 1. JPA...