hibernate关联映射之动态模式映射实例



hibernate关联映射之动态模式映射实例。可不可以不定义JavaBean? 解决方法:使用动态实体模型。

实现步骤:

在class标签中设置一个属性:entity-name=”实体名称” 并指明对应的表名

在每个property标签中,给定一个type属性,指定该列对应的类型名称

代码实例如下:

<?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>

<!– 动态模型,不用编写PO –>

<class entity-name=”Customer” table=”T_CUSTOMER”>

<id name=”account” column=”ACCOUNT” type=”java.lang.String”>                       <!– 主键 –>

<generator/>

</id>

<property name=”password” column=”PASSWORD”

type=”java.lang.String”/>

<property name=”cname” column=”CNAME”

type=”java.lang.String”/>

<property name=”cbalance”   column=”CBALANCE”

type=”java.lang.Double”/>


</class>

</hibernate-mapping>

怎样访问?对象存在方式:HashMap

Object get(String entityName,Serializable id)

Object load(String entityName,Serializable id)

Serializable save(String entityName,Object obj)

void saveOrUpdate(String entityName,Object obj)

void rUpdate(String entityName,Object obj)

代码如下:

Session session = util.HibernateSessionFactory.getSession();

//动态模型用HashMap容纳一个记录

HashMap hm = new HashMap();

hm.put(“account”,”98764″);

hm.put(“password”,”43534″);

hm.put(“cname”,”王晓强”);

hm.put(“cbalance”,3456.0);

Transaction tran = session.beginTransaction();

session.save(“Customer”,hm);

tran.commit();

util.HibernateSessionFactory.closeSession();