我想用注解方式做一个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 等,可以参考。这些都是方便数据获取的。