Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaORM,JavaBean可以映射到视图吗_Java_Orm - Fatal编程技术网

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将视图视为普通表。退房在