我正在创建一个数据库环境,在该环境中,我想以几种不同的模式拆分数据以用于不同的用户组。但是,由于其中一个数据库包含公共实体,因此应该共享给所有人。
假设数据库:
我有三个不同的项目:
我正在尝试从项目/方案(2,“ A”)和(3,“ B”)访问轮子(Project 1)
第一个问题:可能吗?第二:我该怎么做?
hibernate.cfg.xml 在项目2中配置为
hibernate.cfg.xml
<property name="hibernate.connection.url">jdbc:mysql://99.999.999.99:3306/DB2</property>
这必然必须限制所有与DB2的连接,或者还有另一种添加新连接或与3306端口中的所有数据库或至少与DB1一起使用的方法?
从 项目2中的 project1映射实体似乎也没有成功,例如:
<mapping class="com.company.project1.Wheels" package="com.company.project1.Wheels" resource="com/company/project1/Wheels.hbm.xml"/>
感谢您的帮助!
您可以@Table(catalog="")用来指定它们所属的数据库,然后还可以跨数据库建立关系。
@Table(catalog="")
您的情况下Wheel,使用商品目录属性映射到DB1,CarDB2和MotorCycleDB3。
Wheel
Car
MotorCycle
我已经将此解决方案与MySQL和MSSQL一起使用,并且工作正常。唯一的限制是,这三个数据库必须位于同一数据库服务器中,并且用于访问数据库的用户应具有对所有数据库的适当权限。
由于此解决方案仅在所有查询中针对表添加架构名称。