是否创建报表表格比创建报表更快?

时间:2014-03-23 03:08:48

标签: sql hibernate

当我想通过SQL Query创建View for Report时,这是否可行。此视图的某些列是从某些不同表中的另一列计算的。我看到我大学里的朋友没有使用View,他们只是创建了一个新表来存储该报告。他们表示,当数据变大时,它会使应用程序运行得比创建View更快。这是正确的,对我有什么建议吗?是否有可能使用Hibernate从View获得结果?

2 个答案:

答案 0 :(得分:0)

关于您的问题:是否可以使用Hibernate从View中获取结果?

是的,您可以使用hibernate来从视图中获取结果。

为什么我们应该使用视图: - 如果在您的应用程序中,您希望向其他人提供报告或数据库视图,而这些人不应该修改您的数据视图创作。

VIEW的性能: - 这取决于您在创建视图时从不同的表中获取的数据量,以及您正在执行的计算。如果您应用更多联接,则会对您的性能进行更多数据计算。

建议: - 如果您拥有大量数据,需要更多表格,并且希望在数据上执行繁琐的逻辑操作,而不是实现非常快速且响应迅速的物化视图。所以这一切都取决于你的申请是什么

答案 1 :(得分:0)

现在关闭我没有完整的分步教程,但是以下的hibernate视图代码将帮助您解决问题

我正在使用HIBERNATE + JPA注释

视图名称: - VIEW_SAMPLE

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;




@Entity(name = "VIEW_SAMPLE")
public class ComplianceNonComplianceFrontEndView implements Serializable {

    private static final long serialVersionUID = -689896943115399462L;

    @Id
    @Column(name = "COMPANYCODE")
    private String companyCode; 

    @Column(name = "COMPANYNAME")
    private String companyName;


    @Column(name = "MANAGER_NAME")
    private String manager;



    public String getCompanyCode() {
        return companyCode;
    }

    public void setCompanyCode(String companyCode) {
        this.companyCode = companyCode;
    }

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

    public String getManager() {
        return manager;
    }

    public void setManager(String manager) {
        this.manager = manager;
    }



}

Hibernate Code从视图中获取结果

public ComplianceNonComplianceView getCNCViewByCompanyCode(String companyCode) {
        String query = null;
        ComplianceNonComplianceView cncView = null;
        try{

            query = " select cncvw from com.crose.rats.bd.transactions.model.ComplianceNonComplianceView cncvw "+   
                    " where "+
                    " cncvw.companyCode = :clientCode " ;

            cncView = (ComplianceNonComplianceView)this.em.createQuery(query).setParameter("clientCode", companyCode).getSingleResult();
        }catch(Exception ex){
            System.out.println("===============  Exception Occured in  : -getCNCViewByCompanyCode() ");
            ex.printStackTrace();
        }
        return cncView;
    }

如果您有更多查询,请告诉我们。或者发布您的代码,以便更充分地使用