va对象:
/** Product对象表现了定价目录项*/
public class Product {
int id;
String sku;
String description;
Double listPrice;
Double basePrice;
Double orderPrice;
Hibernate 3新增XML关系持久性介绍(2)
时间:2009-11-02
这些对象按照下面的方式映射(为了清楚,我们列出了列名,尽管在属性和列名相匹配的时候Hibernate可以自动地把属性映射为列名):
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="demo">
<class name="Product"
table="product"
node="product">
<id name="id"
type="int"
node="@prod_id"
column="id">
</id>
<property name="sku" node="@sku" column="sku" not-null="true"/>
<property name="description" node="description" column="description" not-null="true"/>
<property name="listPrice" node="list_price" column="list_price" />
<property name="basePrice" node="drop_price" column="base_price"/>
<property name="orderPrice" column="order_price"/>
</class>
</hibernate-mapping>
在这种情况下,Hibernate的XML关系持久性就非常方便了。由于该电子商务应用程序接收了包含产品价格更新的XML,它就利用Hibernate的XML持久性机制把这些XML写入到产品数据库中。Hibernate提供了几种XML持久性选择,包括Hibernate的saveOrUpdate方法:
document = saxReader.read(inputXML);
List users = document.selectNodes("//product");
try {
Session session = ibernateUtil.sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
Session dom4jSession = session.openSession(EntityMode.DOM4J);
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文档中的一个元素或文档中的属性相关联。
一个"节点"可能表现为下面的某种映射:
· "element-name(元素名)":在例子中,<product></product>元素会被表示为node="product"。
· "@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 |