kapok

垃圾桶,嘿嘿,我藏的这么深你们还能找到啊,真牛!

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  455 随笔 :: 0 文章 :: 76 评论 :: 0 Trackbacks

http://www.hibernate.org/218.html

HyperJAXB - relational persistence for XML objects with JAXB and Hibernate

What is HyperJAXB?

HyperJAXB is an add-on for Sun's reference implementation of JAXB (Java Architecture for XML Binding). It provides JAXB objects with relational persistence layer using Hibernate.

What can I do with HyperJAXB?

HyperJAXB eases usage of XML with relational databases. With HyperJAXB you can combine JAXB and Hibernate to implement one of the following target usage scenarios:

  • load (unmarshal) object structure from XML document and save (persist) these objects in a relational database;
  • load objects from a relational database and present (marshal) loaded objects in XML form;
  • query relational database using HQL and present query results in XML.

How it works?

JAXB is basically a code generation engine. It accepts a schematic definition of you XML documents (usually in the form of an XML Schema) as input and generates source code of XML-enabled classes. HyperJAXB augments generated code by adding Hibernate XDoclet annotations. Added annotations effectively define Hibernate O/R mapping for the generated classes.

Combination of JAXB RI, HyperJAXB and Hibernate toolset allows you automatically generate the following artifacts out of you XML Schema:

  • source code of XML-enabled objects with Hibernate XDoclet annotations;
  • object/relational mapping for Hibernate;
  • database schema for the target database.

Please see the reference for more information.

A code example?

Unmarshalling and saving:

// Unmarshall the document
final MyObject myObject = (MyObject) unmarshaller.unmarshal(document);

// Open the session, save object into the database
final Session saveSession = sessionFactory.openSession();
// Save id for the later use
final String id = saveSession.save(myObject);
saveSession.flush();
// Close the session
saveSession.close()

Loading and marshalling:

// Open the session, load the object
final Session loadSession = sessionFactory.openSession();
final MyObject myLoadedObject = (MyObject) loadSession.load(MyObject.class, id);
loadSession.close();

// Marshall loaded object into the document
final Document loadedDocument = documentBuilder.newDocument();
marshaller.marshal(myLoadedObject, loadedDocument);

Mapping generated by HyperJAXB ensures that document and loadedDocument are identical.

Where can I find it?

Check out this project on https://hyperjaxb.dev.java.net.

posted on 2005-05-24 20:30 笨笨 阅读(602) 评论(0)  编辑  收藏 所属分类: J2EEHibernateAndSpringALL

只有注册用户登录后才能发表评论。


网站导航: