科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道用Hibernate3.1实现XML和数据库的同步

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Hibernate是一套开源的用于对象/关系持久化和查询服务的Java库。现在Hibernate的最新版本是3.1.在这个版本中引入了一个新的特性:XML到数据库映射(也可以看做是XML和数据库的同步)。

作者:中国IT实验室 来源:中国IT实验室 2007年9月30日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共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();

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章