将hibernate域对象插入到不同的数据库中?

时间:2010-01-19 13:15:57

标签: java hibernate groovy

我想将特定表的所有数据从database1复制到database2。在我的系统中,我通过hibernate访问来自database1的域对象,我不必转换数据结构。我只有与database2的本机jdbc连接。

什么是最好的解决方案,使这个groovy脚本非常普遍,以支持我拥有的各种域对象?所以这个脚本只获取我的域对象和连接字符串到数据库并插入所有数据?

2 个答案:

答案 0 :(得分:1)

也许最简单的方法就是坚持两个数据库共有的技术水平。

如果它们存在,您可以使用特定于数据库的命令,这将非常快。

如果没有,你可以在两者上使用简单的jdbc。你可以通用的方式: - )

答案 1 :(得分:1)

我遇到了类似的问题,我需要能够将每个hibernate实体导出到SQL脚本,换句话说,如果你有一个具有两个属性(用户名,密码)的Person对象,你应该能够生成SQL insert语句那个对象。

Person.username = x Person.password = y

然后该进程将从该对象中提取等效的SQL插入并创建类似于:

的内容

插入人(用户名,密码)值('x','y');

然而,我的解决方案基于以下事实:映射是使用hibernate注释而不是XML配置完成的,如果是这种情况,您可以在1或2个工作日内完成相同的操作,只需阅读注释即可。注意到您将不得不执行额外的步骤,即在另一个DB上执行生成的SQL插入。

仅供参考:这个方法 toSQL()被添加到每个hibernate实体扩展的超类( AbstractHibernateEntity )中,所以调用它是最简单的事情。

这是一个复杂的解决方案,也是最常见的解决方案,但如果您只需要将一个表从DB复制到另一个表,我建议您简单地使用简单的JDBC调用并避免使您的生活复杂化; - )

问候。