首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Linux频道
中国IT教育
Google
首页 资讯动态 认证考试 新手入门 核心技术 高级技术 J2EE J2ME Java&XML 开源技术 其他技术 RSS订阅 论坛 专题
您现在的位置: 中国IT实验室 >> Java >> 开源技术 >> Hibernate >> 正文

用Hibernate3.1实现XML和数据库的同步

   开始一个新事务,代码如下:


     tx = session.beginTransaction();

    下一步将使用Catalog中的数据来创建一个XML文档。首先,使用静态方法createDocument方法(在DocumentHelper类中)来创建一个Document对象。并将catalogs元素加到Document对象中,代码如下:

Document document = DocumentHelper.createDocument();
Element rootElement = document.addElement("catalogs");

    创建一个Hibernate查询(HQL)用来查询表中的数据。HQL的语法类似SQL的语法。在HQL中并不要求Select子句。在From子句后面需要加实体名,而不是数据库表名,HQL的代码如下:

     String hqlQuery ="FROM Catalog";

    在写完HQL后,需要使用Session对象的createQuery(hqlQuery)方法创建一个查询对象,并通过list()方法得到相应的查询结果。代码如下:

     List results = dom4jSession.createQuery(hqlQuery)。list();

    下面的代码将枚举返回结果中所有的数据。每一行对应XML文档中的一个catalog节点。并将catalog加入到每一个文档对象的根元素中:

     for (int i = 0; i < results.size(); i++)
    { 
        Element catalog = (Element) results.get(i);
        rootElement.add(catalog);
    }

    下面的代码使用XMLWriter对象将数据输出到XML文档对象中:

     XMLWriter output = new XMLWriter(new FileWriter(new File("c:/catalog/catalog.xml")));
output.write(document);

    在这一节我们将使用Hibernate API删除一行记录。我们需要在catalog-delete.xml中指定要删除的行。首先创建一个Configuration对象,并将catalog.hbm.xml加入到Configuration对象中:

configuration config = new Configuration();
config.addFile("catalog.hbm.xml");

    下面的代码将创建一个SessionFactory对象,并使用openSession方法打开一个会话:

sessionFactory sessionFactory = config.buildSessionFactory();
session = sessionFactory.openSession();

    下面的代码将使用DOM4J模式创建一个Session对象。这个Session对象和DOM4J将拥有同样的连接、事务和上下文属性,代码如下:

     Session dom4jSession = session.getSession(EntityMode.DOM4J);

    创建一个事务,代码如下:

     tx = session.beginTransaction();

    创建一个SAXReader对象用来分析XML文档:catalog-delete.xml,代码如下:

SAXReader saxReader = new SAXReader();
Document document = saxReader.read(xmlDocument);

    下面的代码将得到catalog节点对象,并创建一个Iterator对象(为了枚举这个节点的字节点),代码如下:

List list = document.selectNodes("//catalog");
Iterator iter = list.iterator();

    下面的代码将枚举catalog中的所有数据,并将Catalog删除,代码如下:

     while (iter.hasNext())
    { 
        Object catalog = iter.next();
        dom4jSession.delete("Catalog", catalog);
    }

    最后需要将Session保存,并关闭Session,代码如下:

session.flush();
tx.commit();
session.close();

上一页  [1] [2] [3] 

【责编:Peng】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
 社区讨论
 博客论点
 频道精选
 Java 频道导航