2012-02-16 37 views
1

原來我所有的實體都在一個數據庫中。例如我有2個表/類:A和B,hibernate Dao對外部數據庫的引用?

A與B有一對一的映射,所以我們可以做A.getB()。這會在B表上生成一個查詢。

現在讓我們說我們的數據庫變得過於擁擠/繁忙,並且我們發現B表非常大,但很少訪問,所以我們將B移動到另一個表(或者甚至是另一個數據存儲,例如noSQL) 。現在我的問題是,如何維護由hibernate提供的簡單對象圖遍歷?

最初,我可以拉一個A對象:A a = DaoForA.get(id_for_a);那麼我可以在不考慮底層數據庫操作的情況下執行a.getB(),就好像一切已經在內存中一樣。現在將B表移動到另一個數據庫,是否仍有可能實現這種透明遍歷?我認爲應該在映射標記中更改A.hbm.xml,因爲B表不再存在,所以A.hbm.xml不知道存在B,所以這種自動檢索不能完成?

非常感謝 楊

回答

0

Hibernate的實體不能協會從另一個數據庫實體。請參閱

  1. 如果您確實需要這樣做。如果B很少使用,讓它在同一個數據庫中不會造成任何傷害。如果數據庫太大,那麼購買新的硬盤:硬件便宜。
  2. 如果數據庫可以被羣集。

使用Hibernate進行編程「好像所有東西都已經在內存中」是災難的祕訣。你需要了解Hibernate在場景後面做了些什麼。