Iterator iter = users.iterator();
while (iter.hasNext()) {
Object next = iter.next();
dom4jSession.saveOrUpdate("demo.Product", next );
}// end while
transaction.commit();
session.close();
XML映射语法
上面的例子中使用的映射文件不用于Hibernate 2的映射文件。Hibernate 3引入了几种专门用于XML持久性的新映射类型。
主要的新映射属性是节点(node),它与被映射的XML文档中的一个元素或文档中的属性相关联。
一个"节点"可能表现为下面的某种映射:
"@attribute-name(属性名)":在例子中,node="@sku"会被映射为XML属性<product sku="1001001">。
".(句点)":映射为元素的父元素(例如<products>就<product>是的父元素)。
"element-name/@attribute-name(元素名/属性名)":映射为命名元素的属性(product/@sku)。
XML持久性并非Hibernate的主要任务
Hibernate 3框架组件高效率地实现了目前最通用的一些方法(除了LDAP之外)。Java社团现在拥有了一套框架组件,它为易于实现的OR和XML持久性提供了高效率的和一致性的方法。
在我们知道上面一些内容之后,了解Hibernate项目的任务是很重要的。尽管Hibernate 3的XML特性非常有用、有吸引力,但是它们并不是用来代替最流行的XML编组(marshalling)和转换(transformation)框架组件的。不管它的OR映射解决方案多么完善,我们都不应该期待Hibernate成为主流的XML维护框架组件(根据Hibernate的作者Gavin King在TheServerSide Java Symposium 2005上的发言)。
由于这个原因,你应该把XML持久性特性看作是已有的强大的Hibernate框架组件的有用的扩展,它允许你轻易地把现在流行的其它的数据表现机制合并到自己的应用程序中。但是,如果你必须处理复杂的集成和转换情况,最好去寻找其它的XML专用的框架组件。