`
biaoming
  • 浏览: 267272 次
  • 性别: 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无法得知状态

相关推荐

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     8.3 Java对象在Hibernate持久化层的状态  8.3.1 临时对象的特征  8.3.2 持久化对象的特征  8.3.3 被删除对象的特征  8.3.4 游离对象的特征  8.4 Session接口的详细用法  8.4.1 Session的save()和persist()...

    Hibernate实战(第2版 中文高清版)

    第一部分 从Hibernate和EJB 3.0开始  第1章 理解对象/关系持久化   1.1 什么是持久化   1.1.1 关系数据库   1.1.2 理解SQL   1.1.3 在Java中使用SQL   1.1.4 面向对象应用程序中的持久化   1.2 范式不...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     8.3 Java对象在Hibernate持久化层的状态  8.3.1 临时对象的特征  8.3.2 持久化对象的特征  8.3.3 被删除对象的特征  8.3.4 游离对象的特征  8.4 Session接口的详细用法  8.4.1 Session的save()和persist()...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     8.3 Java对象在Hibernate持久化层的状态  8.3.1 临时对象的特征  8.3.2 持久化对象的特征  8.3.3 被删除对象的特征  8.3.4 游离对象的特征  8.4 Session接口的详细用法  8.4.1 Session的save()和persist()...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     8.3 Java对象在Hibernate持久化层的状态  8.3.1 临时对象的特征  8.3.2 持久化对象的特征  8.3.3 被删除对象的特征  8.3.4 游离对象的特征  8.4 Session接口的详细用法  8.4.1 Session的save()和persist()...

    VC开发工具使用技巧源代码_usertype.zip

    VC开发工具使用技巧源代码_usertype.zipVC开发工具使用技巧源代码_usertype.zipVC开发工具使用技巧源代码_usertype.zipVC开发工具使用技巧源代码_usertype.zipVC开发工具使用技巧源代码_usertype.zip

    CUDA SDK 语法高亮必备 usertype.dat

    在VS中配置CUDA时,本身是不识别CUDA关键字的,关键字不能高亮。早期的CUDA版本在SDK中提供了usertype.dat,其中包含CUDA的关键字,但后来的CUDA没有这个文件,网上找了好久,现在贴出来亲测可用~

    usertype.dat

    HLSL的关键字,放在vs的IDE文件下,以在vs中高亮HLSL的关键字

    ssh(structs,spring,hibernate)框架中的上传下载

     fileContent字段映射为Spring所提供的BlobByteArrayType类型,BlobByteArrayType是用户自定义的数据类型,它实现了Hibernate 的org.hibernate.usertype.UserType接口。BlobByteArrayType使用从sessionFactory获取...

    VS2005编辑器支持着色器语法高亮,一个完整的usertype.dat

    比如我的就在D:\Program Files\Microsoft Visual Studio 8\Common7\IDE\usertype.dat),添加如下的关键字列表,每个单词占一行,如果你想添加你自己的关键字,也可以按照这种方式添加在usertype.dat文件中 ...

    hibernate3.6 文档(pdf 格式)

    1.1. Part 1 - The first Hibernate Application ................................................................ 1 1.1.1. Setup .............................................................................

    hibernate_test

    需要使用这个:添加到 build.gradle compile 'org.jadira.usertype:usertype.jodatime:2.0.1' add to *.hbm.xml 数据库详细信息:CREATE DATABASE datamanagerdb WITH OWNER = datamanageruser ENCODING = 'UTF8' ...

    商业编程-源码-VC开发工具使用技巧源代码 usertype.zip

    商业编程-源码-VC开发工具使用技巧源代码 usertype.zip

    synon2hbm-开源

    从Synon:2E中定义的数据模型生成Hibernate映射和Hibernate UserType(aka COOL:2E aka Advantage:2E aka AllFusion:2E)。

    网页短视频管理系统,框架 vs2019 + asp.net webform + sql server

    网页短视频管理系统 框架 vs2019 + asp.net webform + sql server 注意sql server类和access数据库可以使用vs自带的数据库启动,不需要安装庞大的sql安装包。...Id UserName PW Sex Explian UserType

    网页短视频播客视频管理系统,框架 vs2019 + asp.net webform + sql server

    网页短视频播客视频管理系统框架 vs2019 + asp.net webform + sql server 注意sql server类和access数据库可以使用vs自带的数据库启动,不需要安装庞大的sql安装包。...Id UserName PW Sex Explian UserType

    有安全需求的选题系统

    2:访问控制:不同类型的user,其权限由usertype规定 3:建立视图用了安全读取数据库中的数据: create view tb_userview as select usernc,usertype,userpwd from tb_user create view tb_userncview as select id,...

    qt自定义类型 Q_DECLARE_METATYPE与qRegisterMetaType

    如果要使自定义类型或其他非QMetaType内置类型在QVaiant中使用,必须使用该宏Q_DECLARE_METATYPE。 该类型必须有公有的 构造、析构、复制构造 函数 qRegisterMetaType 必须使用该函数的两种情况:1、如果非QMetaType...

    BaiduNetdisk_mac_3.4.1.dmg

    百度网盘mac

Global site tag (gtag.js) - Google Analytics