- 浏览: 519135 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
Zhouchenyu:
谢谢
1、junit学习之junit的基本介绍 -
wenjieyatou:
1、junit学习之junit的基本介绍 -
huabengao:
不错 很好
1、junit学习之junit的基本介绍 -
prayjourney:
写的不错,很有启发!
1、junit学习之junit的基本介绍 -
wangzhenyu1260:
assertEqualspublic static void ...
1、junit学习之junit的基本介绍
1、新建一个Email类型的字段
package cn.ehoo.hibernate; import java.io.Serializable; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import org.hibernate.Hibernate; import org.hibernate.HibernateException; import org.hibernate.usertype.UserType; /** * @author hy-he * */ public class EMailList implements UserType { private List emails; private static final String SPLITTER = ";"; private static final int[] TYPES = new int[] { Types.VARCHAR }; /* * (non-Javadoc) * * @see net.sf.hibernate.UserType#sqlTypes() */ public int[] sqlTypes() { // TODO Auto-generated method stub return TYPES; } /* * (non-Javadoc) * * @see net.sf.hibernate.UserType#returnedClass() */ public Class returnedClass() { // TODO Auto-generated method stub return List.class; } /* * (non-Javadoc) * * @see net.sf.hibernate.UserType#equals(java.lang.Object, java.lang.Object) */ public boolean equals(Object x, Object y) throws HibernateException { if (x == y) return true; if (x != null && y != null) { List xList = (List) x; List yList = (List) y; if (xList.size() != yList.size()) return false; for (int i = 0; i < xList.size(); i++) { String str1 = (String) xList.get(i); String str2 = (String) yList.get(i); if (!str1.equals(str2)) return false; } return true; } return false; } /** * 从email 中取出email字段,并将其解析为list类型后返回 */ public Object nullSafeGet(ResultSet rs, String[] names, Object owner) throws HibernateException, SQLException { String value = (String) Hibernate.STRING.nullSafeGet(rs, names[0]); if (value != null) { return parse(value); } else { return null; } } /** * 将List型的email信息组装成字符串之后保存在email字段 */ public void nullSafeSet(PreparedStatement st, Object value, int index) throws HibernateException, SQLException { System.out.println("Set method excecuted"); if (value != null) { String str = assemble((List) value); Hibernate.STRING.nullSafeSet(st, str, index); } else { Hibernate.STRING.nullSafeSet(st, value, index); } } /* * (non-Javadoc) * * @see net.sf.hibernate.UserType#deepCopy(java.lang.Object) */ public Object deepCopy(Object value) throws HibernateException { List sourcelist = (List) value; List targetlist = new ArrayList(); targetlist.addAll(sourcelist); return targetlist; } /* * (non-Javadoc) * * @see net.sf.hibernate.UserType#isMutable() */ public boolean isMutable() { // TODO Auto-generated method stub return false; } private String assemble(List emailList) { StringBuffer strBuf = new StringBuffer(); for (int i = 0; i < emailList.size() - 1; i++) { strBuf.append(emailList.get(i)).append(SPLITTER); } strBuf.append(emailList.get(emailList.size() - 1)); return strBuf.toString(); } private List parse(String value) { String[] strs = StringUtils.split(value, SPLITTER); List emailList = new ArrayList(); for (int i = 0; i < strs.length; i++) { emailList.add(strs[i]); } return emailList; } @Override public Object assemble(Serializable arg0, Object arg1) throws HibernateException { // TODO Auto-generated method stub return null; } @Override public Serializable disassemble(Object arg0) throws HibernateException { // TODO Auto-generated method stub return null; } @Override public int hashCode(Object arg0) throws HibernateException { // TODO Auto-generated method stub return 0; } @Override public Object replace(Object arg0, Object arg1, Object arg2) throws HibernateException { // TODO Auto-generated method stub return null; } }
2、POJO类
package cn.ehoo.hibernate; import java.io.Serializable; import java.util.ArrayList; import java.util.List; /** * @author hy-he * @hibernate.class table = "USER_TYPE_USER" */ public class UserTypeUser implements Serializable { private static final long serialVersionUID = 1L; private Long id; private String name; private Integer age; private List email = new ArrayList(); /** * @hibernate.id column = "USER_ID" generator-class = "increment" * @return */ public Long getId() { return id; } /** * @hibernate.property column = "AGE" * @return */ public Integer getAge() { return age; } /** * @hibernate.property column = "EMAIL" type = * "hibernate.usertype.EMailList" * @return */ public List getEmail() { return email; } /** * @hibernate.property column = "NAME" * @return */ public String getName() { return name; } public void setAge(Integer age) { this.age = age; } public void setEmail(List email) { this.email = email; } public void setId(Long id) { this.id = id; } public void setName(String name) { this.name = name; } }
3、POJO类的映射
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="eg"> <class name="cn.ehoo.hibernate.UserTypeUser" table="USER_TYPE_USER" dynamic-update="false" dynamic-insert="false"> <id name="id" column="USER_ID" type="java.lang.Long"> <generator class="increment"></generator> </id> <property name="age" type="java.lang.Integer" update="true" insert="true" access="property" column="AGE" /> <property name="email" type="cn.ehoo.hibernate.EMailList" update="true" insert="true" access="property" column="EMAIL" /> <property name="name" type="java.lang.String" update="true" insert="true" access="property" column="NAME" /> <!-- To add non XDoclet property mappings, create a file named hibernate-properties-UserTypeUser.xml containing the additional properties and place it in your merge dir. --> </class> </hibernate-mapping>
4、测试的两个方法
public static void insertUser() throws HibernateException { UserTypeUser user = new UserTypeUser(); user.setAge(new Integer(23)); user.setName("Test UserType"); user.getEmail().add("rever@hotmail.com"); user.getEmail().add("rever1@hotmail.com"); user.getEmail().add("rever2@hotmail.com"); user.getEmail().add("rever3@hotmail.com"); Session session = HibernateUtil.getSession(); Transaction tx = session.beginTransaction(); session.save(user); tx.commit(); HibernateUtil.closeSession(); } public static void display() throws HibernateException { Session session = HibernateUtil.getSession(); Query query = session.createQuery("from UserTypeUser"); List users = query.list(); HibernateUtil.closeSession(); for (ListIterator iterator = users.listIterator(); iterator.hasNext();) { UserTypeUser pu = (UserTypeUser) iterator.next(); System.out.println(pu.getName()); List emails = pu.getEmail(); for(int i = 0;i<emails.size();i++){ System.out.println(emails.get(i)); } } }
发表评论
-
hibernate component的使用
2011-11-30 14:35 3328第一次看到component这样使用。所以记下来。只记类与h ... -
hibernate一对一之唯一外键关联(双向关联)
2011-11-08 17:20 1004其内容与http://huihai.iteye.com/blo ... -
hibernate一对一之唯一外键关联(单向关联)
2011-11-08 17:03 4979新新一个java项目,并新建javabean。如下: ... -
Hibernate的事务处理机制
2011-10-21 17:34 967Hibernate是对JDBC的轻量级对象封装,Hiberna ... -
hibernate+tomca5.5t+JOTM 2.10 JTA配置
2011-10-20 16:29 22431,从官网上下载tomcat5.5,在tomcat下的conf ... -
hibernate连接池之tomcat6的配置
2011-10-17 13:59 1612新建一个web项目,然后在tomcat中的的server.xm ... -
hibernate配置文件中的properties属性
2011-08-15 15:56 3625假如现在有班级Class类与学生student类,但是在映射时 ... -
【转】hibernate二级缓存攻略
2011-08-02 11:40 1007转的原因是:原文排版不太好。我想整理的清楚点 很多人对 ... -
【转】Hibernate-Session
2011-08-02 09:35 1206当讨论Hibernate的Session时 ... -
hibernate一对多,多对一,一对多双向关联
2011-02-04 22:12 1488hibernate之多对一。在多对一中,在多的一方设置many ... -
hibernate flush与update区别
2011-01-07 10:34 1273a)update操作的是在自由态或脱管状态(detached ... -
hibernate lock方法的使用
2011-01-07 10:13 2199hibernate中lock方法到网上没有找到几个例子,所以自 ... -
Hibernate update与lock区别
2011-01-06 17:48 1280a)update是把一个已经更改过的脱管状态(detached ... -
Hibernate三种对象状态
2011-01-06 17:19 950hibernate的三种状态 a)瞬时状态(Transient ... -
hibernate中get与load区别
2011-01-06 16:52 1053在hibernate中有get与load两个都是查询指定的一条 ...
相关推荐
1.1.3 在Java中使用SQL 1.1.4 面向对象应用程序中的持久化 1.2 范式不匹配 1.2.1 粒度问题 1.2.2 子类型问题 1.2.3 同一性问题 1.2.4 与关联相关的问题 1.2.5 数据导航的问题 ...
11.1.5 使用Hibernate内置映射类型 11.2 客户化映射类型 11.2.1 用客户化映射类型取代Hibernate组件 11.2.2 用UserType映射枚举类型 11.2.3 实现CompositeUserType接口 11.2.4 运行本节范例程序 11.3 ...
3在Spring中使用org.springframework.jdbc.support.lob.OracleLobHandler处理Oracle数据库的Blob类型字段。 通过这样的设置和配置,我们就可以象持久化表的一般字段类型一样处理Blob字段了。 以上是Spring+...
11.1.5 使用Hibernate内置映射类型 11.2 客户化映射类型 11.2.1 用客户化映射类型取代Hibernate组件 11.2.2 用UserType映射枚举类型 11.2.3 实现CompositeUserType接口 11.2.4 运行本节范例程序 11.3 ...
11.1.5 使用Hibernate内置映射类型 11.2 客户化映射类型 11.2.1 用客户化映射类型取代Hibernate组件 11.2.2 用UserType映射枚举类型 11.2.3 实现CompositeUserType接口 11.2.4 运行本节范例程序 11.3 ...
11.1.5 使用Hibernate内置映射类型 11.2 客户化映射类型 11.2.1 用客户化映射类型取代Hibernate组件 11.2.2 用UserType映射枚举类型 11.2.3 实现CompositeUserType接口 11.2.4 运行本节范例程序 11.3 ...
1.1. Part 1 - The first Hibernate Application ................................................................ 1 1.1.1. Setup .............................................................................
需要使用这个:添加到 build.gradle compile 'org.jadira.usertype:usertype.jodatime:2.0.1' add to *.hbm.xml 数据库详细信息:CREATE DATABASE datamanagerdb WITH OWNER = datamanageruser ENCODING = 'UTF8' ...
从Synon:2E中定义的数据模型生成Hibernate映射和Hibernate UserType(aka COOL:2E aka Advantage:2E aka AllFusion:2E)。