- 浏览: 606028 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (263)
- 默认类别 (0)
- STRUTS HIBERNATE (2)
- STRUTS SPRING HIBERNATE (18)
- SOA/WEB service (8)
- PORTAL (3)
- 想法和设计思想 (17)
- SMARTEAM 二次开发 (0)
- ACTIVEBPEL (0)
- ERP (0)
- EAI (0)
- 甲醇汽油 (0)
- webwork freemarker spring hibernate (1)
- 工作流技术研究 (1)
- ROR (5)
- 搜索引擎 (7)
- 3.非技术区 (0)
- 1.网站首页原创Java技术区(对首页文章的要求: 原创、高质量、经过认真思考并精心写作。BlogJava管理团队会对首页的文章进行管理。) (2)
- 2.Java新手区 (2)
- 4.其他技术区 (0)
- ESB (1)
- Petals ESB (6)
- 手机开发 (1)
- docker dedecms (1)
最新评论
-
w630636065:
楼主,期待后续!!!!!!!!
生成文本聚类java实现 (2) -
zilong513:
十分感谢楼主,期待后续。
生成文本聚类java实现 (2) -
qqgoodluck:
可否介绍一下您的选型依据,包括Petal ESB与MULE等E ...
Petals ESB 简介 -
jackiee_cn:
写的比较清楚,学习了
Petals ESB 集群实战 -
忙两夜:
你好,能发一下源代码吗
抓取口碑网店铺资料
仔细看看hibernate的DOC发现不少惊奇的东东,后悔自己的旁门助道是多么的无用.
本次主要实现目的.
数据库表:EchoMessageEmail,其中有三个字段id(自动编号)\name\Email(varchar)
实现目的:数据库字段中Email的值是类似于heweiya@gmail.com;heweiya@21cn.com;www.1718zx.cn的.所以要求以List表达.
也就是生成的DataModel当中是有一个List对象的.
.hbm.xml
对应的POJO:
其中的UserType的一个类:EmailList
测试类:
本次主要实现目的.
数据库表:EchoMessageEmail,其中有三个字段id(自动编号)\name\Email(varchar)
实现目的:数据库字段中Email的值是类似于heweiya@gmail.com;heweiya@21cn.com;www.1718zx.cn的.所以要求以List表达.
也就是生成的DataModel当中是有一个List对象的.
.hbm.xml
xml 代码
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <!--
- Mapping file autogenerated by MyEclipse - Hibernate Tools
- -->
- <hibernate-mapping>
- <class name="com.travelsky.hibernate.po.EchoMessageEmail" table="echo_message_email">
- <id name="id" type="java.lang.Integer">
- <column name="ID" />
- <generator class="native"></generator>
- </id>
- <property name="name" type="java.lang.String">
- <column name="NAME" length="50" not-null="true" />
- </property>
- <property name="email" type="com.travelsky.hibernate.po.EmailList" lazy="true">
- <column name="EMAIL"/>
- </property>
- </class>
- </hibernate-mapping>
java 代码
- package com.travelsky.hibernate.po;
- import java.util.List;
- /**
- * EchoMessageEmail generated by MyEclipse Persistence Tools
- */
- public class EchoMessageEmail implements java.io.Serializable {
- private Integer id;
- private String name;
- private List email;
- /** default constructor */
- public EchoMessageEmail() {
- }
- /** minimal constructor */
- public EchoMessageEmail(String name) {
- this.name = name;
- }
- /** full constructor */
- public EchoMessageEmail(String name, List email) {
- this.name = name;
- this.email = email;
- }
- // Property accessors
- public Integer getId() {
- return this.id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public List getEmail() {
- return email;
- }
- public void setEmail(List email) {
- this.email = email;
- }
- }
java 代码
- package com.travelsky.hibernate.po;
- 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.HibernateException;
- import org.hibernate.Hibernate;
- /**
- * 必须得引用java.io.Serializable,UserType是反序列化
- * 另外,我使用的hibernate版本是3.2,UserType从2.0到3.2有很大的差异,应该多多看看官方的doc
- *
- * @author @家军.严重注意org.hibernate.usertype.UserType,不要自己造车呀.
- *
- */
- public class EmailList implements java.io.Serializable,org.hibernate.usertype.UserType{
- private List emails;
- private static final String SPLITTER = ";";
- private static final int[] TYPES = new int[] { Types.VARCHAR };
- public int[] sqlTypes() {
- return TYPES;
- }
- public Class returnedClass() {
- // TODO Auto-generated method stub
- return List.class;
- }
- 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;
- }
- 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;
- }
- }
- 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);
- }
- }
- public Object deepCopy(Object value) throws HibernateException {
- List sourcelist = (List) value;
- List targetlist = new ArrayList();
- targetlist.addAll(sourcelist);
- return targetlist;
- }
- public boolean isMutable() {
- 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;
- }
- public Object assemble(Serializable arg0, Object arg1) throws HibernateException {
- // TODO Auto-generated method stub
- return null;
- }
- public Serializable disassemble(Object arg0) throws HibernateException {
- // TODO Auto-generated method stub
- return null;
- }
- public int hashCode(Object arg0) throws HibernateException {
- // TODO Auto-generated method stub
- return 0;
- }
- public Object replace(Object arg0, Object arg1, Object arg2) throws HibernateException {
- // TODO Auto-generated method stub
- return null;
- }
- }
java 代码
- package com.travelsky.test;
- import java.util.List;
- import java.util.ListIterator;
- import com.travelsky.hibernate.po.EchoMessageEmail;
- import org.hibernate.Query;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.cfg.Configuration;
- public class HibernateTest {
- public static void main(String[] args) throws Exception{
- Configuration config = new Configuration().configure();
- SessionFactory factory = config.buildSessionFactory();
- Session session = factory.openSession();
- Query query = session.createQuery("from EchoMessageEmail as a");
- /**
- * 理论上来说,这里不存在lazy加载,为了安全起见使用了Iterator
- *
- */
- ListIterator iterator = query.list().listIterator();
- EchoMessageEmail tt = (EchoMessageEmail) iterator.next();//只找第一个
- List emails = tt.getEmail();
- for (int i = 0; i < emails.size(); i++) {
- String emailStr = (String)emails.get(i);
- System.out.println(emailStr);
- }
- session.close();
- }
- }
评论
2 楼
maqujun
2007-08-02
加上commons-lang.jar就行了,没有的话到apache去下。
1 楼
梦里天涯路
2007-08-02
在我的电脑上怎么提示错误呢?
好像没有org.apache.commons.lang.StringUtils这个包
能解释一下是啥原因吗?
好像没有org.apache.commons.lang.StringUtils这个包
能解释一下是啥原因吗?
发表评论
-
Eclipse当中两种远程调试方法
2011-01-05 11:17 2277基于Maven管理的项目,在eclipse当中有两种调 ... -
[翻译]使用Maven创建google Appengine
2010-05-06 15:35 2180原文请参考:http://www.salientpoin ... -
Not must be hibernate.properties or hibernate.cfg.xml
2010-03-05 13:47 1306Sometimes, Custom have ext ... -
使用yourkit java profiler进行性能分析
2010-01-28 17:00 4459说明: YourKit Java Profile ... -
试用Hibernate二级缓存Ehcache
2010-01-28 15:50 1861Hibernate supports several t ... -
给你的应用加入简易Licence限制
2009-06-01 15:01 3163有的时候,客户会提出这样的需求,他们的应用能不能当 ... -
优化hibernate的一招。
2007-11-09 10:20 1666原来的程序: java 代码 List Lre ... -
JSF+A4J+Spring调用ORACLE存贮过程的拙作
2007-08-17 09:35 2819近一周写了一个简单的工具,本工具是通过Spring ... -
三个JAVA文件完成jsf+spring+hibernate的集成.
2007-07-16 17:43 3670呵呵,本文章只贡献给哪些走捷径的coder, 开发工具:mye ... -
Myeclise5.5自动生成spring2.0+hibernate3.2+jsf1.1时的错误
2007-07-16 15:25 11148我使用myeclipse5.5分别加入hibernate3.2 ... -
ORACLE SQL语句in超过1000个的处理方法
2007-06-25 16:21 11262表现的情况: sql 代码 Hibernate ... -
EXCEL导入数据库及数据库数据导出到EXCEL
2007-05-18 17:01 16038很久没有发BLOG,呵呵,是因为最近在帮助朋友在做一个项 ... -
近期完成的一个较大的JS验证
2007-03-02 11:18 3610呵呵,近期偶完成的一个较大的JS验证,行家一看就 ... -
使用SSH+Freemarker做新闻发布系统
2007-02-07 17:18 9079最近, ... -
三个JAVA文件完成你的MVC应用
2006-09-25 16:23 5721只需要你三个JAVA类和两个配置文件,就可以完成你的MVC应用 ... -
struts标签,请你走开(系列一)
2006-09-25 16:07 4933在项目开发的很多 ... -
用二维数组管理好你零乱的状态、分类和其它常用选项
2006-09-25 15:01 4016在大家的编码过程当中,有没有遇到过这么一种情况,很多零乱的状态 ...
相关推荐
**hibernate3.2 API** 是一个针对Java开发者的重要框架,主要用于简化对象关系映射(ORM)的工作,使得在Java应用中操作数据库变得更加便捷。这个API提供了丰富的接口和类,帮助开发者将业务对象和数据库表之间的...
然后在实体类的属性上使用这个类型: ```xml ``` 3. **使用注解进行映射**: 对于使用注解的映射,可以直接在枚举类型的属性上指定`@Enumerated`: ```java @Entity public class MyEntity { @Enumerated...
总之,《Hibernate API Documentation (3.2)》是开发者深入理解和高效使用Hibernate 3.2的必备参考资料,涵盖了从基本概念到高级特性的全面内容,帮助开发者充分利用ORM的优势,提升Java应用的数据管理效率。
第8章 通过Hibernate操纵对象(上) 8.1 Java对象在JVM中的生命周期 8.2 理解Session的缓存 8.2.1 Session的缓存的作用 8.2.2 脏检查及清理缓存的机制 8.3 Java对象在Hibernate持久化层的状态 8.3.1 ...
- **使用org.hibernate.usertype.UserType**: 实现自定义用户类型。 - **使用org.hibernate.usertype.CompositeUserType**: 映射复合类型。 - **类型注册**: 注册自定义类型。 #### 7. 集合映射 - **持久化集合*...
3. **配置映射文件**:在领域对象的.hbm.xml映射文件中,使用`<typedef>`元素声明自定义类型,并将其应用到相应的属性上。 ```xml <hibernate-mapping> ... ... </hibernate-mapping> ``` 4. **配置...
- 如果使用的是HBM(Hibernate Mapping)文件,需要在对应字段上配置`type`属性,指向自定义的`UserType`全限定类名。 通过以上步骤,你可以确保Hibernate在处理MySQL的`TEXT`字段时能够正确地进行序列化、反序列...
2.2.2 使用Hibernate EntityManager 2.2.3 引入EJB组件 2.2.4 切换到Hibernate接口 2.3 反向工程遗留数据库 2.3.1 创建数据库配置 2.3.2 定制反向工程 2.3.3 生成Java源代码 2.4 与...
我们在 Hibernate 应用中使用最广泛的接口,也被称为持久化管理器,提供了相关的数据库操作,比如添、更、删、加、查等基本操作。特点:非线程安全,轻量级,其创建及销毁消耗资源少。每个客户请求对应一个 Session...
在使用Hibernate时,确保正确配置并包含必要的JAR(Java Archive)文件至关重要,因为这些库提供了框架运行所需的功能。下面我们将详细探讨Hibernate所需的JAR包及其作用。 1. **hibernate-core.jar**:这是...
在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库,而无需关心底层SQL语句。本文将深入探讨如何在Hibernate配置中设置与数据库字段的对应关系,以及...
在 Hibernate 框架中,使用自定义类型映射 Oracle 中的 LONG 类型字段是一种常见的解决方案。通过实现 UserType 接口,我们可以定制 LONG 类型字段的读写操作。在本例中,我们定义了一个名为 CustomLong 的类,该类...
在Hibernate中,使用`UserType`可以提升代码质量。`UserType`允许我们自定义数据类型的映射,以便更好地适应特定业务需求。 3. **自定义UserType实例**:例如,如果我们需要在`TUSER`表中存储用户的电子邮件,但不...
Hibernate 是一个强大的 Java 持久化框架,它简化了数据库与对象之间的交互。通过提供一组丰富的API,Hibernate使得开发者能够在应用中轻松地管理和操作数据库数据。...理解并熟练使用这些接口是掌握Hibernate的关键。
这通常通过实现`org.hibernate.usertype.UserType`接口来完成,该接口定义了将Java类型转换为数据库类型的逻辑。 以下是一些关键步骤: 1. **创建动态扩展的基类**:定义一个基类,它继承自Hibernate的`...
第8章 通过Hibernate操纵对象(上) 8.1 Java对象在JVM中的生命周期 8.2 理解Session的缓存 8.2.1 Session的缓存的作用 8.2.2 脏检查及清理缓存的机制 8.3 Java对象在Hibernate持久化层的状态 8.3.1 ...
第8章 通过Hibernate操纵对象(上) 8.1 Java对象在JVM中的生命周期 8.2 理解Session的缓存 8.2.1 Session的缓存的作用 8.2.2 脏检查及清理缓存的机制 8.3 Java对象在Hibernate持久化层的状态 8.3.1 ...
第8章 通过Hibernate操纵对象(上) 8.1 Java对象在JVM中的生命周期 8.2 理解Session的缓存 8.2.1 Session的缓存的作用 8.2.2 脏检查及清理缓存的机制 8.3 Java对象在Hibernate持久化层的状态 8.3.1 ...
VC开发工具使用技巧源代码_usertype.zipVC开发工具使用技巧源代码_usertype.zipVC开发工具使用技巧源代码_usertype.zipVC开发工具使用技巧源代码_usertype.zipVC开发工具使用技巧源代码_usertype.zip
使用自定义类型时,你需要在实体类的属性上使用`@Type`注解,指定自定义类型的实现类,使得Hibernate在操作这些属性时能够调用我们定义的转换逻辑。 例如,如果你有一个自定义日期时间类型,可以这样使用: ```java...