1.mvc dao层,service层 到底怎么写
我们都知道,标准主流现在的编程方式都是采用MVC综合设计模式,MVC本身不属于设计模式的一种,它描述的是一种结构,最终目的达到解耦,解耦说的意思是你更改某一层代码,不会影响我其他层代码,如果你会像spring这样的框架,你会了解面向接口编程,表示层调用控制层,控制层调用业务层,业务层调用数据访问层。
初期也许都是new对象去调用下一层,比如你在业务层new一个DAO类的对象,调用DAO类方法访问数据库,这样写是不对的,因为在业务层中是不应该含有具体对象,最多只能有引用,如果有具体对象存在,就耦合了。当那个对象不存在,我还要修改业务的代码,这不符合逻辑。
好比主板上内存坏了,我换内存,没必要连主板一起换。我不用知道内存是哪家生产,不用知道多大容量,只要是内存都可以插上这个接口使用。
这就是MVC的意义。接下来说你感觉service的意义,其实因为你现在做东西分层次不是那么严格,在一个你们做东西业务本身也少,举个最简单的例子,你做一个分页的功能,数据1000条,你20条在一个页,你可以把这个功能写成工具类封装起来,然后在业务层里调用这个封装的方法,这才是业务里真正干得事,只要没访问数据库的,都要在业务里写。
再有不明白的追问,这是经验问题,呵呵,其实以后你就会懂。只是刚开始写的代码都是有个请求,我就去数据库取,业务几乎没有。
------------------------------------------------------------------------------虽然每分,但还是把自己的理解给LZ说说。怎么说呢,我不是理论帝。
所以我讲讲自己的理解比说你现在用的是SSH框架,做一个用户模块:1、假设现在你做这个功能会用到user表和权限表,那么你前台的页面访问action,action再去调用用户模块service,用户模块service判断你是操作user表还是权限表,如果你操作的是user表则service的实现类就去调用userDAO。如果是操作的是权限表则调用权限的DAO2、也就是说DAO一定是和数据库的每张表一一对应,而service则不是。
明白的没?其实你一个项目一个service和一个DAO其实也一样可以操作数据库,只不过那要是表非常多,出问题了,那找起来多麻烦,而且太乱了3、好处就是你的整个项目非常系统化,和数据库的表能一致,而且功能模块化,这样以后维护或者改错比较容易,性能也高一些--------------------------------------------------------------------------简单的说DAO层是跟数据库打交道的,service层是处理一些业务流程的,至于你说的为什么要用service层封装,我认为:一般来说,某一个程序的有些业务流程需要连接数据库,有些不需要与数据库打交道而直接是一些业务处理,这样就需要我们整合起来到service中去,这样可以起到一个更好的开发与维护的作用,同时也是MVC设计模式中model层功能的体现-------------------------------------------------------------------------------初级DAO模式:例如::写一个类 操作1张表 针对这张表的所有操作都以方法的形式写在这个类中 1个操作对应1个方法要求是外部通过调用这个类的方法达到操作某张表的目的时不需要写任何和数据库以及JDBC相关的代码,这个类的命名就是XXDAO比如表叫做 t_goods 商品表那么操作它的DAO就叫GoodsDAO高级DAO模式:例如:即DAO工厂模式,多个XXDAO实现同一个接口或者继承同一个基类,编写一个工厂类通过工厂模式(简单工厂模式或利用反射动态加载均可)获得接口或基类对象,内部实际上封装返回的是具体的XXDAO类的对象。简单的说即是在1的基础上将创建具体的XXDAO对象的方式由new变为工厂模式实现例如:UserDAO dao = DAOFactory.create(。
);dao.save()dao.delete。.-------------------------------------------------------------------------1.有一个dao接口,里面有平时的增删查该的方法2.有一个具体的实体类3.有一个dao的实现类,有对实体操作的方法,继承1的接口4.如果有需要,还可以有一个工厂类,负责生产dao实现类---------------------------------------------------------------------------DAO层一般有接口和该接口的实现类! 接口用于规范实现类! 实现类一般用于用于操作数据库! 一般操作修改,添加,删除数据库操作的步骤很相似,就写了一个公共类DAO类 ,修改,添加,删除数据库操作时 直接调用公共类DAO类!-----------------------------------------------------------------------------com.公司名.系统名.模块名 代码目录结构Action : 负责页面逻辑,将调用service的结果返回到页面中Service : 接口定义---impl 接口的实现,负责业务逻辑Domain 对应数据库表的pojoDao : 只负责连接数据库,从数据库中查询结果,包装成对象后返回util :工具类。
2.Dao层方法怎么写
dao完成连接数据库修改删除添加等的实现细节,例如sql语句是怎么写的,怎么把对象放入数据库的
service层是面向功能的,一个个功能模块比如说银行登记并完成一次存款,UI要把请求给service层,然后service曾将这一个case分解成许多步骤调用底层的实现完成这次存款,dao就是下面那层
dao就是把数据存起来,之所以service的方法会有雷同只不过是因为service得需求不是很复杂不用再service里面完成太多包装或者处理过程可以直接调用dao的方法就完成的请求处理例如就要save一个对象,而这个对象是封装好的,dao里面有个方法专门save封装好的对象于是service的方法就仅仅调用一下就o了,函数签名自然很像了
service不能直接接触持久层,而dao是持久层或者直接访问持久层
有的时候只是为了分层清楚,为了将来scale up的时候方便我们才把service和dao分开,其实没必要分开的
3.MVC从数据库中查询修改删除数据的DAO 怎么写
DAO这一层比较好写了,仅仅是访问数据库的JDBC操作,没有任何业务的代码,就是相应的 增删查改 操作
比如:
public class UserDAO(){
public boolean save(User user){
.
}
public boolean update(User user){
.
}
public User findById(User user){
.
}
}
4.MVC从数据库中查询修改删除数据的DAO 怎么写
DAO这一层比较好写了,仅仅是访问数据库的JDBC操作,没有任何业务的代码,就是相应的 增删查改 操作
比如:
public class UserDAO(){
public boolean save(User user){
.
}
public boolean update(User user){
.
}
public User findById(User user){
.
}
}
5.你好 能解释下有的业务只用DAO一层 而有的要用MVC三层呢 我不是很
看业务的复杂程度,但这里不凡有那种开发人把所有业务代码写在了控制层里。MVC..
我总感觉我们要做的是软件,不是简单的写代码,写程序谁都会,但是开发软件就不同了。
如果业务小确实可以直接DAO,比如在C里通过request,response就可以获取所需参数,直接传进DAO就可以了,没必要加中间的业务层。这样写是没问题,但是如果未来有一个类突然碰到业务很复杂,中间计算也很复杂,那么以前的结构已经定了,不方便改,只能硬着头皮在C里写所有的业务代码,稍微好一点的就给业务和计算封装到工具类里去了,这样写运行是都不影响工作,但是这就好比你把所有的代码写到了main方法里一样,如果换其他人接手很不好维护,MVC就是一种规则,让大家都这样做,可以方便维护。 还有就是如今面向对象各种设计模式,我们应该面向接口开发,上下层之间互相调用是通过接口,达到解耦,出了名的spring等就是这个作用。 一般经常开发的人,会考虑到后期也许会有什么样的业务对应什么样的接口,那么会预留出业务层,怕出现尴尬的不好扩展局面.. 只要记得能完成功能就行,这种理论是不好的,当然不追求代码质量就无所谓了。 自己做个给自己玩的小软件随便怎么写,不用考虑内存,不用考虑性能,当然最好还是养成良好的习惯,但是也不要习惯学死了,呵呵
6.java中Dao模式怎么分的层 啊
你好,你的问法本身有些不妥,dao就属于应用中的一层。可能你想说的是以下的情况:
初级DAO模式:
例如::写一个类 操作1张表 针对这张表的所有操作都以方法的形式写在这个类中 1个操作对应1个方法要求是外部通过调用这个类的方法达到操作某张表的目的时不需要写任何和数据库以及JDBC相关的代码,这个类的命名就是XXDAO
比如表叫做 t_goods 商品表那么操作它的DAO就叫GoodsDAO
高级DAO模式:
例如:即DAO工厂模式,多个XXDAO实现同一个接口或者继承同一个基类,编写一个工厂类通过工厂模式(简单工厂模式或利用反射动态加载均可)获得接口或基类对象,内部实际上封装返回的是具体的XXDAO类的对象。简单的说即是在1的基础上将创建具体的XXDAO对象的方式由new变为工厂模式实现
例如:UserDAO dao = DAOFactory.create(。);
dao.save()
dao.delete。.
转载请注明出处育才学习网 » mvcdao层怎么写