当前位置: 代码迷 >> Java Web开发 >> HIBERNATE视图映射,该怎么解决
  详细解决方案

HIBERNATE视图映射,该怎么解决

热度:4219   发布时间:2013-02-25 21:18:18.0
HIBERNATE视图映射
我想用注解方式做一个HIBERNATE虚拟视图映射,也就是说,数据库里面是没有这个视图的,在HIBERNATE虚拟一个,然后映射,XML方式知道怎么写,但注解找不到实现方法,希望大家帮帮忙。
XML方式如下:
XML code
   <class name="Customer" table="customer">                <id name="id" unsaved-value="0" column="id">            <generator class="hilo"/>        </id>                <property name="name"  not-null="true"/>            </class>        <class name="Supplier" table="supplier">                <id name="id" unsaved-value="0" column="id">            <generator class="hilo"/>        </id>        <property name="name" not-null="true"/>                </class>        <class name="All" mutable="false">            <subselect>            select id, name from customer            union             select id, name from supplier        </subselect>                <synchronize table="customer"/>        <synchronize table="supplier"/>                <id name="id" unsaved-value="0" column="id">            <generator class="hilo"/>        </id>                <property name="name"/>            </class>


------解决方案--------------------------------------------------------
我们先考虑2个问题
1 新建了新的实体化视图
这个东西可不是随便可以建的,应该是一个团队研究的结果,有需要的时候才建立
一般情况下,数据仓库和挖掘才有这个问题,数据从多个远程数据库读取数据,然后放到本地的数据库并定时更新

2 数据的更新问题
我不赞成数据打包发送,应该是远程的机器主动获取,方式可以是
1) 直接的数据库连接,这个在数据仓库最常见了
2) 其他的封装,比如ws等


我的意见:
你应该在你的目标机器部署一个应用,让其远程连接你的原始数据库(至于怎么连接,你自己考虑,直连或者通过服务都可以)进行数据的更新。如果需要新的视图,也应该是目标机器自己做,至于原始数据库怎么配合,倒无所谓了,可以提供一个本地视图来供目标数据库使用,也可以根本不管,让目标数据库自己进行组合查询就行了。

总之,谁要数据,谁自己干活。 你可以看看数据仓库的概念。 当然更新的速度不可能是实时的。

有些数据库提供远程视图,比如Oracle 的 dblink 等,可以参考。这些都是方便数据获取的。
  相关解决方案