Java ORM,可以将java bean映射到视图

时间:2012-03-21 11:55:10

标签: java orm

我们有一个非常大的表,我们用它来存储有关不同业务类型的合同信息。

取决于实际的业务类型,将使用该表中的不同列。

如果我们使用不同的业务类型在该表上创建了视图,那么可以在

中使用这些视图

任何java ORM框架?

4 个答案:

答案 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会有效。只有UPDATEINSERT可能会出现问题。如果你可以通过视图更新它应该没问题;是否可行取决于VIEW和RDBMS。

答案 3 :(得分:0)

ActiveJDBC使用视图,就像它们是普通表一样。查看http://javalite.io