我们有一个非常大的表,我们用它来存储有关不同业务类型的合同信息。
取决于实际的业务类型,将使用该表中的不同列。
如果我们使用不同的业务类型在该表上创建了视图,那么可以在
中使用这些视图任何java ORM框架?
答案 0 :(得分:0)
我相信是的。 View是数据库级抽象,允许用户完全针对常规表运行查询。 ORM框架只是DB角度的另一个用户,因此这种方法应该可行。
但我个人认为这不是最好的解决方案。我相信DB应该做它知道的事情:在表中存储规范化数据。业务层(在我们的例子中用java编写)应该负责所有逻辑,包括从数据库过滤数据。这意味着您提到的视图应该可以在buseness层中“实现”。例如,您可以使用为WHERE子句添加一些附加条件的方面来包装DAO,这样您就可以在java中实现“view”。这为您提供了许多优势,如灵活性等。
答案 1 :(得分:0)
使用JPA并将您的视图映射为公共父级的子类。这将允许您仅映射对每个特定子类有效的属性,同时在父级中维护公共属性集。
这是一个简单的例子:
@Entity
@Table("myTable")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type", discriminatorType=DiscriminatorType.STRING)
public class Common {
// Common fields, including ID
}
@Entity
@DiscriminatorValue("special1")
public class Specialized1 extends Common {
// Specialized fields here
}
在上面的示例中,您有一个带有'类型'的公用表。用于区分哪些字段对映射的ORM类有效的列。
互联网上有很多很好的教程。 Here就是其中之一。
答案 2 :(得分:0)
ORM层本质上只生成SQL,所以如果所有SQL都可以应用于VIEW
而不是VIEW
,我想使用TABLE
会有效。只有UPDATE
和INSERT
可能会出现问题。如果你可以通过视图更新它应该没问题;是否可行取决于VIEW
和RDBMS。
答案 3 :(得分:0)
ActiveJDBC使用视图,就像它们是普通表一样。查看http://javalite.io。