博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ORM--UserType--Hibernate4.0注解版
阅读量:5878 次
发布时间:2019-06-19

本文共 1829 字,大约阅读时间需要 6 分钟。

hot3.png

使用Hibernate很长时间了,现在把一些内容自己小结一下。

这里介绍Hibernate使用UserType,UserType就是用户自定义类型,这里的类型指的是除了Hibernate定义的那些类型之外的用户自己定义的。

一般情况下,Hibernate定义的类型是完全足够我们使用的。(就我自己而言,尽量不要自己去定义UserType)

User类中通过@TypeDef可以指定UserType,通过@TypeDefs可以定义多个@TypeDef。

通过@Type指定对User.emaillist是自定义类型emalilist

在具体实现上将原本已List方式存放的email地址,按照以";"为分隔存储到了数据库中。

import java.io.Serializable;import java.util.List;import javax.persistence.Entity;import javax.persistence.Table;import org.hibernate.annotations.Type;@TypeDefs({ @TypeDef(   name = "emailList",   defaultForType = List.class,   typeClass = Email.class )})@Entity@Table(name = "user_info")public class User implements Serializable {	private String id;	private String userName;	@Type(type = "emailList")	private List emaillist;	public List getEmaillist() {		return emaillist;	}	public void setEmaillist(List emaillist) {		this.emaillist = emaillist;	}}

中的typeClass=Email.class,Email类需要实现UserType接口。

以下是Email.class的实现。

public class Email implements UserType {			@Override	public Object assemble(Serializable arg0, Object arg1)			throws HibernateException {		// TODO Auto-generated method stub		return null;	}	@Override	public Object deepCopy(Object arg0) throws HibernateException {				if(arg0!=null){			List source =(List)arg0;			List target =new ArrayList();			target.addAll(source);			return target;		}		else{			return arg0;		}			}	@Override	public Serializable disassemble(Object arg0) throws HibernateException {		// TODO Auto-generated method stub		return null;	}	@Override	public boolean equals(Object arg0, Object arg1) throws HibernateException {				if(arg0==null && arg1==null){			return true;		}		else if(arg0!=null && arg1!=null){			List a =(List)arg0;			List b=(List)arg1;						if(a.size()!=b.size()) return false;			for(int i=0;i

以上代码参考与摘录了 夏昕《深入浅出Hibernate》

转载于:https://my.oschina.net/have2cow/blog/156109

你可能感兴趣的文章
Apache的PHP-FPM-启用实例
查看>>
Script error.深度测试
查看>>
基于webpack构建的vue项目实现实时更新视图
查看>>
强大而优雅,API 研发管理 EOLINKER 新版正式发布!
查看>>
校园考勤不再形同虚设
查看>>
bullmind-在线思维导图软件,在线流程图软件,在线uml软件
查看>>
Shell curl 和 wget 使用代理IP
查看>>
在linux下查找c编译器 cc1路径
查看>>
linux基本操作
查看>>
圣杯布局和双飞翼布局的理解与思考
查看>>
【IPC通信】Posix消息队列的属性设置
查看>>
PHP警告时区错误
查看>>
Hyperledger超级账本在Centos7下搭建运行环境
查看>>
linux 安装telnet
查看>>
享元模式
查看>>
如何为VMware虚拟机内安装的Ubuntu 16.04设置静态IP地址(NAT方式)
查看>>
subprocess
查看>>
MPLS L3×××技术介绍
查看>>
苹果开发者申请DUNS-number邓白氏编码步骤
查看>>
MySql5.6停电后无法启动的问题
查看>>