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(); |