0

我正在一家中型公司开始工作,主要致力于编写与他们的 ERP 系统交互的自定义​​应用程序。这是我第一次做这种工作,所以 ERP 概念对我来说是新的,我正在学习它。

到目前为止,我只编写了两个应用程序,并且学习了数据库模型,并且只学习了完成工作所需的量,但即使数量有限,我也可以开始看到一个大图景。然后我的想法是编写一个库,其中存储了所有映射/模型对象,以便新应用程序可以引用这个库。之后,每个应用程序将创建自己的存储库,将访问权限限制为只访问他们需要的内容和有意义的视角。

我遇到的问题/问题是如何处理(N)Hibernate 映射中的关系。如果我有一个在此基础库中映射的具有完整关系的订单对象,则没有什么能阻止某人永远旅行这些关系(假设我是唯一的程序员......)。因此,从这个意义上说,使用存储库作为一种范围限制根本行不通。

相反,如果我限制此订单对象的 (N)Hibernate 映射中的关系,则存储库会返回一个订单对象,该对象仅与它的范围所需的关系绑定。缺点是我现在必须为每个项目创建映射,而不是拥有一个“映射存储”。

其他人如何处理这个问题?

有点不相关,但我也一直在将可能由多个关系组成的 (N)Hibernate 持久对象转换为一种更适合特定应用程序的单一非持久对象(通常受 UI 影响更大)。这是一件常见的事情,还是我通过获取返回的对象并将它们转换为其他东西来丢弃 (N)Hibernate 的一些好处?

附言。关于 DDD 标签...我不知道这是否是 DDD 详细介绍的内容,但我确实有订购这本书。不过,在本书到达之前,我不确定是否有好的资源可供查看。

4

1 回答 1

1

很老的问题。我想你已经找到了答案,但万一......

我看到两种解决问题的方法。

  1. 通过数据库中的用户帐户限制表访问。例如在 mysql 中,您可以这样做。缺点是如果你的所有域类都映射和编译到你的 nh dll 中,程序员仍然可以看到这些实体。如果他/她试图访问它,它将触发一个异常(nh 试图访问一个数据库表,数据库拒绝)。

  2. 为每个案例创建一个 dll。但我想您可能还需要创建多个帐户。

于 2009-08-24T12:55:39.710 回答