频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

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

来源:IT168 作者: 出处:巧巧读书 2007-06-18 进入讨论组
上一页 1 2 3 

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


     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();

来自:http://www.qqread.com/java/2007/06/d317392.html 更多文章 更多内容请看Hibernate原理与配置数据库专栏数据库处理专题专题,或进入讨论组讨论。
上一页 1 2 3 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章