2009-04-13 83 views
3

從數據庫表中獲取數據到代碼中的對象看起來總是很平凡的代碼。有兩種方法我發現做到這一點:數據映射代碼或反射代碼?

  1. 有一個代碼生成器,讀取數據庫表並創建 類和控制器的數據域的類字段或
  2. 使用反射貼圖取數據庫字段,並在課堂上找到它。

上述2種方法注意的問題如下

  • 方法注意1我看來,像我想的東西,因爲我要創建每個表的控制器。
  • 方法2似乎是太勞動密集型,一旦你進入重的數據 訪問代碼。

是否有第三條路線,我應該嘗試從數據庫中獲取數據到我的對象上?

+0

指定您正在考慮的平臺/編程語言會很好;答案可能與平臺有關。 – StaxMan 2009-04-13 23:23:12

回答

1

我認爲對此的回答取決於您將要使用的語言的可用技術。

我一個人非常成功地使用了ORM(NHibernate),所以自然我可以推薦選項一。

還有,你不妨採取雖然其他選項:

  • 如果您使用的是.NET,您可以選擇使用您的類屬性的屬性服務無論是作爲一個類中的一個映射,或作爲可以反映的數據
  • 如果您使用.NET,Fluent NHibernate將使您可以輕鬆地在代碼中進行類型安全映射。
  • 您可以使用泛型,以便您不需要爲每個表格創建控制器,但我承認無論如何您都可能會執行後者。然而,泛型可以包含所有表通用的大多數通用CRUD方法,並且您只需要編寫特定的怪癖。
0

我使用反射來回映射數據,即使在大量數據訪問的情況下也能正常工作。 「第三條路線」是手工操作,這可能會更快,但寫起來很慢。

3

在這種情況下,您通常使用OR(對象關係)映射器。提供OR功能的好框架是Hibernate。這回答了你的問題了嗎?

0

我同意lewap,一個ORM(對象關係映射器)在這些情況下確實有幫助。您可能還想考慮活動記錄模式(在Fowler的企業架構模式書中討論過)。它可以真正加快在簡單應用程序中創建DAL。