【发布时间】:2016-01-25 23:13:47
【问题描述】:
我有一个无法更改的数据库设计。数据库具有一对一关系的表和视图。视图包含一些从表中计算出来的额外信息。相关信息是行的状态。为这种关系设置的权限是视图是只读的,因为表具有所有可用的 CRUD 操作。 JPA 是选择映射到此设置的 ORM。该应用程序是一个基本的 CRUD 应用程序,通过检查视图中的状态和其他属性然后插入/更新相应的表来进行一些验证。这是我尝试为这种情况建模的两种方法的示例。我想知道哪个更高效、更易于使用和/或执行此操作的“正确方法”。
选项 1 - 这个选项很好,因为我可以使用 JPA 提供的所有接口与数据库交互。这个选项很糟糕,因为我有时必须加载一个看起来非常多余的表和一个模型,并且每个表有 3 个文件。
Model.java
package models;
// relevant imports
public abstract class Model {
// columns that are shared with table and view
}
Table.java
package models;
// relevant imports
@entity("table")
public class Table extends Model {
// Relationships with other tables
}
View.java
package models;
// relevant imports
@entity("view")
public class View extends Model {
// View specific columns ...
// Relationships with other views
}
选项 2 - 这个选项很好,因为我只需要加载视图并且每个表都有一个文件。这个选项不好,因为对于 CUD 操作,我必须编写本机 SQL。
Model.java
package models;
// relevant imports
@entity("view")
public class Model {
// All VIEW + table columns
// All relationships with other models
// custom SQL to insert update or delete
}
【问题讨论】: