论坛首页 Java版 Hibernate

动态表名的问题

浏览 6052 次
该帖已经被评为精华帖
作者 正文
时间:2003-09-21
我们知道, 在有些大系统中, 都会有一个数据字典, 可用于记录各个表,字端的的名称, 比如有很多种产品, 放在不同产品表中, 产品和属性字断的名称存在名称reference表中, 程序可通过查reference表得到相应的表和字断, 从而进行下一步的操作, 这是典型的数dimension & fact数据库设计,
但hibernate目前不支持动态表名, Gavin King说通过写一个custom ClassPersister可能会实现这个功能,
谁了解custom ClassPersister. 给详细说说
   
时间:2003-09-21
yyanghhong 写道
我们知道, 在有些大系统中, 都会有一个数据字典, 可用于记录各个表,字端的的名称, 比如有很多种产品, 放在不同产品表中, 产品和属性字断的名称存在名称reference表中, 程序可通过查reference表得到相应的表和字断, 从而进行下一步的操作, 这是典型的数dimension & fact数据库设计,
但hibernate目前不支持动态表名, Gavin King说通过写一个custom ClassPersister可能会实现这个功能,
谁了解custom ClassPersister. 给详细说说


ClassPersister的实现类是EntityPersister(实现1表对1PO的映射)和NormalizedEntityPersister(1表对子PO的映射),是把对表的操作转换为PO的操作的类,你可以自己实现ClassPersister,然后在hbm里面指定,那么就可以改变默认的映射规则,比如说不再是字段和属性的映射,可以是输入参数和属性的映射,来支持存储过程的调用。Hibernate2.0.3源代码里面有一个简单的例子net.sf.hibernate.test.CustomPersister,这个例子也是改变了默认的映射规则,不是表映射PO,而是一个Hashtable对象映射PO,可以参考一下。

可以通过自己实现ClassPersiter接口,让Hibernate具有极大的可扩展性,例如支持存储过程,视图的调用,支持动态表名,动态表字段等等。
   
0 请登录后投票
论坛首页 Java版 Hibernate

跳转论坛:
JavaEye推荐