Dao层到底是做什么的?service和Dao层有什么关系?说得具体一些。

Dao层到底是做什么的?service和Dao层有什么关系?说得具体一些。,第1张

Dao层:主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,DAO层的数据源配置。

dao层代码示例:

service层:主要负责业务模块的逻辑应用设计,Service层的业务实现,具体要调用到已定义的DAO层的接口,封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。

service层代码示例:

dao层和service层关系:service层经常要调用dao层的方法对数据进行增删改查的 *** 作,现实开发中,对业务的 *** 作会涉及到数据的 *** 作,而对数据 *** 作常常要用到数据库,所以service层会经常调用dao层的方法。

扩展资料

Service层是建立在DAO层之上的,建立了DAO层后才可以建立Service层,而Service层又是在Controller层之下的,因而Service层应该既调用DAO层的接口,它刚好处于一个中间层的位置。每个模型都有一个Service接口,每个接口分别封装各自的业务处理方法。

在实际开发中DAO层大多是对某张表进行增删改查,都是一些固定的语句,除非涉及到更复杂的service层业务逻辑,才可能要添加更复杂的DAO层方法。

参考资料:百度百科-DAO

怎么可能根据entity类来编写dao层的类呢!这是一个不好的做法,换句话说,这个是很不正规。大都是玩具代码中才会出现的情况!或是培训机构出身的才习惯这么干!

首先,程序中的每个类的存在是要斟酌再斟酌。不是有多少个entity就对应几个dao层类或方法!还有dao层中的方法的参数也不一定要是对象类型,可以是多个参数。造成把参数都看作对象类型的大都是hibernate惹的祸!

就如,一个用户要登录系统,只需要用户名和密码就够了。

但是在hibernate为dao层建构的程序中,很可能就会出现这样的代码(我指的是业务逻辑层):

public boolean loginSys(User user)

初看这段代码好像挺对的,登录需要用户名和密码,user中包括这两个属性。

但是user对象中不仅仅包括这两个属性啊。可能还要用该用户的级别、性别、年龄等与登录无关的信息。那么方法loginSys就变得很难让人理解,如果方法的名称起的再晦涩一些。如:go(User user),你在看看,这个方法在做什么,谁能看明白,我想即使是你编写的这段代码,过一个月你可能都不清楚这段代码在干什么!

正确的代码应该这样写,根据业务要求定义类和方法。

public boolean loginSys(String userName,String pwd);

再看看这段代码,不用看你的实现代码就能知道你再做什么。很清晰,而且参数中去掉了那些与登录无关的user中的无用信息。这样才算是一个必要的、清晰的、有用的方法。同理:类也是如此。每个类和方法的存在都有其必然性,否则不要让他存在!!!!!

还有,在软件开发过程中的初步设计阶段的时候类才能被定义出来,之前还有:问题的定义及规划、需求分析、软件设计等阶段,这些过程都是对业务的考察和加工过程,业务决定要有什么类、类之间的联系、以及类中的方法和方法的参数等。所以,类要根据业务来定义而不是根据类来定义其他类!!!!!!

你用的什么语言啊?

这个是VC++的

*****你说的是MFC的数据库访问类——class CDaoDatabase,这个类确实有Create()和Open()两个成员函数,不过前者的功能是新建一个数据库文件,而且只能是ACCESS文件(*.mdb),只有Open()能够连接一个现有的SQL数据库文件。

*****

*****连接代码样例:

CDaoDatabase dbSQL()//括号必须有,因为它有一个引用参数,引用目标是class CDaoWorkspace的一个对象,这个参数默认是NULL

CString strDBPath("")//连接SQL时为空,连接ACCESS时为文件路径

CString strDBConn("driver={SQL Server}server=MySqlServeruid=MyUserNamepwd=MyPassworddatabase=你的SQL数据库文件" )

//连接SQL时这样设置,连接ACCESS时此参数为空

dbSQL.Open( strDBPath,

FALSE, FALSE,

strDBConn

)

*****

*****另外,如楼上所言,DAO最初就是为ACCESS设计的。数据源只是一个适配器,让DAO能够扩展其功能连接其它数据库。建议改用ADO,ADO功能非常完善,而且简单易用。ADO采用COM组件技术,它提供了一套完全与开发平台无关的类库。也就是说可以不用MFC,可以在不同开发环境,多做开发语言中使用。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8013310.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存