我正在从头开始设计一个系统。我正在考虑:
- 是否完全使用 DAL 与直接 DB 访问(例如 ORM)
- 如果我使用 DAL,我是直接通过我的应用程序还是在 DAL 中存储/管理我的用户会话?
基本架构是客户端 -> 应用程序后端 -> DAL -> DB
我正在从头开始设计一个系统。我正在考虑:
基本架构是客户端 -> 应用程序后端 -> DAL -> DB
您Data Access Layer
可以使用ORM
工具(如 Hibernate (Java)、NHibernate (.Net))来进行数据库访问。这没问题。您可以将功能抽象为模型层并在您的 DAL 项目中实现它,例如:
public interface ICustomerPersistence
{
Customer Get(int id);
bool Save(Customer customer);
}
并使用 ORM 或其他访问数据库的方式(ADO.NET 或 JDBC)实现它。
使用 ORM 工具,您将在应用程序和数据库之间建立一个内部层。另一方面,ORM 工具可以为您和您的团队提供一些生产力持久对象,而不是编写 SQL 查询。在这两种情况下,SQL 都必须干净才能提供性能。使用 ORM 工具,您可能需要一个跟踪工具来查看 ORM 生成的 SQL 命令。对于 NHibernate,有一个 NHProf。
对于第二个问题,取决于您必须如何实施。大多数 ORM 实现(如 Hibernate/NHibernate)从 DAL 的上层控制 ISession 对象。例如,作为 Web 应用程序中的一个很好的实践,ISession 在开始请求中打开,在结束请求中关闭。有时它也是由事务完成的。