`
biaoming
  • 浏览: 266577 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate usertype 如何得知自身实体状态

    博客分类:
  • java
阅读更多
hibernate usertype优劣网上有不少说法,下面是我的感受。
好处是能自定义符合自己的类型,特别是在重构或者开发基于以前数据库设计的。
坏处是,用了usertype之后就依赖于hibernate,不方便移植到jpa。

现在我有这么一个需求,在UserBean有个photo,用于保存用户图片,以前都是在action处理,然后把图片的相对地址保存到user表。但现在发现都依赖于action,每处理有图片或者附件的bean时都要在action进行相应操作,所以想用hibernate usertype来处理图片或者附件上传问题。
我的FileUserType实现了UserType, ParameterizedType两个操作。在nullSafeSet方法先保存到文件系统,然后再文件相对地址插入库,在nullSafeGet根据库的相对地址实例File,然后set到UserBean。就是完成了插入和读。但现在发布更新和删除没办法在这里处理,我的更新思路是先删除文件系统的文件,然后再上传,表字段的值直接更新就行了。删除也是先删除文件系统的文件。但我发现在实现了UserType接口没有提供得知状态(插入、更新、删除)的方法,或者我现在用的还不对,现在我就想知道有没有办法在得知这些状态。暂不考虑用eventListeners。
分享到:
评论
2 楼 biaoming 2008-05-07  
我也了解,确实像楼上说的。
现在我想换用jpa,因为他有个@PreRemove @PrePersist @PreUpdate @PostLoad
这几个能给我所需要的状态。但jpa又发现没有usertype,所以结合了hibernate能完成我的需求,其实我感觉这和用hibernate 监听器是一样的。只是hibernate在实体实现插入和读取,而在监听器实现更新和删除,这样破坏了实体的一致性,而用jpa+hibernate能完成了,但又依赖于hibernate,不方便移植。

我现在只是想做个类似rails file_column,大家有什么好的思路吗?
1 楼 QuakeWang 2008-05-07  
UserType无法得知状态

相关推荐

Global site tag (gtag.js) - Google Analytics