【发布时间】:2012-01-07 06:47:42
【问题描述】:
通过业务模型或业务对象,我指的是普通的旧对象,例如“用户”,具有所有属性名称、地址、...;除了所有用户属性之外,假设每个用户都有一个“AppointmentBook”对象,每本书都有一组“TimeSlot”对象,等等。 业务模型的对象之间有引用,至少我是这样用 Java 编写业务模型的。 问题来了:
要初始化我的业务对象,在 Java 中,我会
- 在应用期间只从数据库中获取所有数据一次 初始化,
- 将数据从我的数据库映射到我的业务对象
- 存储在内存(映射)中,它们将在所有请求之间共享。
PHP 的 Share-Nothing-Architecture 让我对正确的 OO 编程感到困惑: 如果我使用相同的逻辑,对于每个请求,我将不得不从数据库中获取所有对象(我知道我仍然可以缓存,但您不会缓存所有数据库,这不是关于缓存的问题,而是关于 PHP 及其架构的编程方式)。
假设对于一个 HTTP 请求,我只需要 User 属性,而不需要访问他的约会簿。从数据库中获取用户引用的所有对象的所有数据将是一个遗憾,因为我只需要他的属性。这意味着我将使用大量 NULL 值从我的模型中初始化 PHP 对象(NULL,因为我不会加载 User 中包含的对象),这可能会在以后导致错误。
我想知道专业的 PHP 开发人员通常如何使用他们的业务对象? (我来自 Java)
更新: 说我会在 Java 中的应用程序初始化期间将整个数据库加载到内存中有点愚蠢。我的意思是,如果我需要获取特定用户,我可以加载其所有数据,并且可以通过所有请求访问。
【问题讨论】:
-
在我看来,OP 更熟悉 桌面应用程序 开发.. 桌面开发者 _can_ 在内存中加载大量信息,然后保留它们。
标签: php oop architecture business-objects