Java 如何为HBase和PostgreSQL使用相同的域类
我有存储在HBase和PostgreSQL中的域对象 在定义类时,PostgreSQL使用的注释不适用于HBase,因此我最终定义了两个具有相同属性但注释不同的类。我使用Hibernate/Spring框架 对于PostgreSQL,我使用的域类如下:(snippets) 对于HBase,类为:Java 如何为HBase和PostgreSQL使用相同的域类,java,spring,hibernate,class,cross-platform,Java,Spring,Hibernate,Class,Cross Platform,我有存储在HBase和PostgreSQL中的域对象 在定义类时,PostgreSQL使用的注释不适用于HBase,因此我最终定义了两个具有相同属性但注释不同的类。我使用Hibernate/Spring框架 对于PostgreSQL,我使用的域类如下:(snippets) 对于HBase,类为: public class FooBarHbase { String id; String name; } 因此,如果我必须为PostgreSQL和HBase使用一个类,我应该如何定义该
public class FooBarHbase {
String id;
String name;
}
因此,如果我必须为PostgreSQL和HBase使用一个类,我应该如何定义该类?我认为您的组合类将比具有公共接口的两个类(可以根据需要调度)更复杂。数据库是如此不同,HBase与ORM方法并不真正兼容 我认为仔细使用构图之类的东西会比完全合并类更划算。由于Java可以动态地改变类属性,因此以这种方式集中代码更可能允许您创建一组干净的类来委托实际的数据库处理
如果你真的想这样做的话,你也许可以这样做,但我不确定这是否值得,因为它在代码质量方面肯定会付出代价。让细节取决于接口,而不是相反。展示一个差异示例会有所帮助-就像PostgreSQL和HBase的同一个域类的一部分-因此我们知道您正在处理哪些差异。您是否使用Hibernate或任何其他ORM工具?那么应该是一样的。我们在生产中使用MySQL,在测试中使用H2。它很好用。正如克雷格所建议的,请用我编辑的问题的不同之处更新问题。希望现在一切都清楚了。我读了一些关于HBase的书,意识到它是一个非关系数据库。Postgres是一个关系数据库。然后您将无法使用Hibernate,因为它是一个用于映射到关系数据库的ORM工具@实体不适用于HBasey,我只对postgresql使用spring/hibernate,对HBase使用spring数据hadoop。这就是为什么FooBarPgsql中使用的注释不适用于FooBarHbase。我已经有了工作代码,现在我想清理这个额外的类,如果可能的话,使用一个类来处理这两个问题。
public class FooBarHbase {
String id;
String name;
}