JavaORM,JavaBean可以映射到视图吗
我们有一个很大的表,我们用它来存储不同业务类型的合同信息 根据实际业务类型,将使用该表中的不同列 如果我们在该表上创建了具有不同业务类型的视图,那么这些视图可以在中使用吗JavaORM,JavaBean可以映射到视图吗,java,orm,Java,Orm,我们有一个很大的表,我们用它来存储不同业务类型的合同信息 根据实际业务类型,将使用该表中的不同列 如果我们在该表上创建了具有不同业务类型的视图,那么这些视图可以在中使用吗 有java ORM框架吗?我相信有。视图是数据库级抽象,允许用户对其运行查询,就像对常规表运行查询一样。ORM框架只是从DB的角度来看的另一个用户,所以这种方法应该有效 但我个人认为这不是最好的解决办法。我认为DB应该做它知道要做的事情:将规范化数据存储在表中。业务层(在我们的例子中是用java编写的)应该负责所有逻辑,包括从
有java ORM框架吗?我相信有。视图是数据库级抽象,允许用户对其运行查询,就像对常规表运行查询一样。ORM框架只是从DB的角度来看的另一个用户,所以这种方法应该有效
但我个人认为这不是最好的解决办法。我认为DB应该做它知道要做的事情:将规范化数据存储在表中。业务层(在我们的例子中是用java编写的)应该负责所有逻辑,包括从数据库中过滤数据。这意味着您提到的视图可能应该在业务层中“实现”。例如,您可以用方面包装DAO,向WHERE子句添加一些附加条件,这样您就得到了用java实现的“视图”的效果。这为您提供了许多优势,如灵活性等。使用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
}
在上面的示例中,您有一个带有“type”列的公共表,该列用于区分哪些字段对映射的ORM类有效
网上有很多很好的教程。是其中之一。ORM层基本上只生成SQL,因此我想如果所有SQL都可以应用于
视图而不是表
,那么使用视图
就可以了。只有UPDATE
s和INSERT
s可能有问题。如果可以通过视图进行更新,则应该可以;这是否可能取决于视图和RDBMS。ActiveJDBC将视图视为普通表。退房在