利用Hibernate自定义UserType简化编程
2015-02-24 00:00
537 查看
摘要: 自定义UserType是Hibernate一项强大的扩展特性,灵活的使用自定义UserType可以极大的简化编码,使得代码更加优雅的面向对象,也可以简化数据库设计。
#1. 创建自定义UserType
Hibernate的自定义UserType用于扩展自定义类型的数据存取机制,通过该机制可以把Entity中的任意类型的属性转换成自定义的格式存入数据库,在读取数据时又可以按照自定义的格式还原成自定义的类型。例如:
对象转换成Json格式存取。参考 JsonUserType.java。
对象列表转换成Json格式存取。参考 JsonListUserType.java
字符串数组转换成逗号分割的字符串存取。参考 ArrayUserType.java
自定义位编码类型转换成字符串存取。参考 BitCodeUserType.java
#2. 注册自定义UserType
有了这些自定义的UserType后,存取的转换变成了透明的,只需要在Entity对应的属性上用注解来声明引用这些自定义类型即可。但是如果每次使用自定义类型时需要指定完整的类名,又有点繁琐了。可以在放置自定义UserType类的包下建一个 pakcage-info.java来声明这些UserType,从而简化注解。
#3. 使用自定义UserType
声明了这些自定义UserType以后,使用时就变得简单了:
只需要一行简单的注解就可以将一个自定义类型的对象转换成Json格式存入数据库,从数据库取出时又自动转换成自定义类型的对象。
#1. 创建自定义UserType
Hibernate的自定义UserType用于扩展自定义类型的数据存取机制,通过该机制可以把Entity中的任意类型的属性转换成自定义的格式存入数据库,在读取数据时又可以按照自定义的格式还原成自定义的类型。例如:
对象转换成Json格式存取。参考 JsonUserType.java。
对象列表转换成Json格式存取。参考 JsonListUserType.java
字符串数组转换成逗号分割的字符串存取。参考 ArrayUserType.java
自定义位编码类型转换成字符串存取。参考 BitCodeUserType.java
#2. 注册自定义UserType
有了这些自定义的UserType后,存取的转换变成了透明的,只需要在Entity对应的属性上用注解来声明引用这些自定义类型即可。但是如果每次使用自定义类型时需要指定完整的类名,又有点繁琐了。可以在放置自定义UserType类的包下建一个 pakcage-info.java来声明这些UserType,从而简化注解。
#3. 使用自定义UserType
声明了这些自定义UserType以后,使用时就变得简单了:
@Entity @Table(name = "Tmp_Company") public class Company extends UuidEntity { ... @Type(type = "Json") private CompanyExtendInfo extendInfo; ... }
只需要一行简单的注解就可以将一个自定义类型的对象转换成Json格式存入数据库,从数据库取出时又自动转换成自定义类型的对象。
相关文章推荐
- Hibernate使用自定义类型UserType映射Oracle的Date类型
- Hibernate里自定义UserType时取不到值的问题
- Hibernate UserType 自定义类型
- Hibernate对自定义类型CompositeUserType的用法
- Hibernate中的自定义类型——UserType、CompositeUserType
- Hibernate对自定义类型UserType的用法
- hibernate中自定义数据类型的使用---UserType,CompositeUserType接口的使用
- Hibernate对自定义类型CompositeUserType的用法
- Hibernate对自定义类型UserType的用法
- Hibernate自定义数据类型UserType
- Hibernate对自定义类型UserType的用法
- Hibernate实战_笔记33(创建CompositeUserType、参数化定制类型)
- Hibernate实战_笔记32(考虑定制的映射类型、创建UserType)
- org.hibernate.MappingException: Could not determine type for: java.util.List, at table: user, for...
- hibernate3.2上使用UserType范例
- .hibernate.usertype
- NHibernate实现自定义类型IUserType
- 关于java.lang.NoSuchFieldError: STRING at org.jbpm.identity.hibernate.PermissionUserType.
- Hibernate实战_笔记34(映射枚举、实现EnhanceUserType接口)
- 自定义Hibernate Dialect(No Dialect mapping for JDBC type: 3)