l 是否可以不定义JavaBean?
l 解决方法:使用动态实体模型
l 步骤:
n 在class标签中设置一个属性:entity-name=”实体名称” 并指明对应的表名
n 在每个property标签中,给定一个type属性,指定该列对应的类型名称
n 代码如下:
<?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 class="assigned"/> </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> |
l 怎样访问?对象存在方式:HashMap
n Object get(String entityName,Serializable id)
n Object load(String entityName,Serializable id)
n Serializable save(String entityName,Object obj)
n void saveOrUpdate(String entityName,Object obj)
n void rUpdate(String entityName,Object obj)
n 代码如下:
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(); |