数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

使用动态数据库访问对象


发布日期:2023年07月22日
 
使用动态数据库访问对象

前两天看到Warp framework的介绍它基于Google Guice是一个轻量级的web开发框架它的Dynamic finder特性实在让人兴奋代码非常简单支持注入大大简化了DAO层的开发下面看看它的几个例子吧:

@Finder(query=from Person)

public List<Person> listAll() { return null; }

@Finder(query=from Person where firstName = :firstName)

Person find(@Named(firstName) String name);

还有更简单的吗

在以往的开发过程中为了层次清晰易于测试通常会将业务逻辑层和数据库访问层分开看下面的例子

public class UserService

{

public UserService(IUserDAO userDAO){}

}

为什么要这样做呢好处是 userDAO能够依赖注入使用IOC框架管理 对UserService进行单元测试userDAO使用mock工具创建这样避免了要单元测试还得生成真实数据的问题

但是这样就产生了一个问题大部分数据表都会有这么一个DAO对象存在使得DAO层过于庞大当然如果使用泛型的DAO或者抽象出基类就能使代码量减少这样也不能解决根本问题Warp提出的Dynamic finder让人着实兴奋自己根本就不需要逐个DAO去实现只需要方法声明+annotation

这么好的想法怎么能不采用呢 于是我花了几个小时试着用C#来实现并且结合了Linq To Sql如果直接使用SqlCommand来操作数据库填充实体实现起来会更加简单现在用Linq To Sql的人越来越多就结合着来写的结果还不错代码看着的确简洁了很多就是接口+Attribute我使用的数据库是NorthwindCustomer是Linq To Sql生成出来的EntityType是用来标识对那个实体类进行操作Find用来标识根据主键查找对象的方法Delete表示是删除一个实体Create表示创建一个实体Query表示自定义的查询字符串现在只是最简单实现以后可以提供更复杂的查询条件和写法

[DomainType(typeof(Customer))]

public interface ICustomDAO

               

上一篇:解决CSV字段数据带有双引号的问题

下一篇:asp.net连接Access数据库