2017-05-08 94 views
0

我正在尋找一些能夠讓我複製像Jackson的@JsonView功能但在數據庫級別上的東西。通常我覺得我已經碰到了困難,試圖在查詢性能和從API返回所有必要數據之間取得平衡。有沒有一種方法來表示hibernate的數據視圖?

比如我有一個類結構,如:

class Employee { 
    String name; 

    @ManyToOne(fetchType = EAGER) 
    Company company; 

    // A lot of other data 
} 

class Company { 
    String name; 

    // A lot of other data 
} 

現在我想以顯示員工列表,另外在表格中顯示每個員工的公司名稱。理想的情況是在原始SQL世界裏,我會做類似

select e.name, c.name from Employees as e left join Companies as c on e.companyId = c.id 

但什麼,而不是發生的是Hibernate查詢全公司的數據,以及包括其他的關係和他們的關係,這往往使得它很慢。延遲加載速度也較慢,在您需要從控制器返回查詢數據時不起作用。

也許有一些東西,可以讓我在這樣的方式宣告數據視圖:

class EmployeeListView { 
    String name = Path.to("Employee.name"); 
    String companyName = Path.to("Employee.company.name") 
} 

+0

想你可以使用[Ehcahe(http://www.ehcache.org/documentation/2.8/hibernate/) –

+0

你一定能創建一個數據庫提高休眠性能查看指定的查詢並將其映射到像帖子中顯示的「EmployeeListView」這樣的實體類。 Hibernate不區分底層數據庫對象是表還是視圖。您需要確保您不允許在視圖上進行任何修改查詢('INSERT','UPDATE'和'DELETE')(因爲它們在視圖中是無意義的)。 – manish

+0

@manish關心顯示我會怎麼做? – doctorgester

回答

0

@NamedEntityGraph是答案,任何人都關心

相關問題