编写JAVA程序的层次关系
- entity(实体层):就是对应的数据库表的实体类
- service层(业务层):用于编写业务逻辑
- DAO层(数据传输层):service层数据与数据库进行交互的一些类
- util(工具层):存放一些工具类
- servlet:Servlet层用于接收请求并且调用对应service层处理请求,是Java各层中最接近浏览器的一层。
首先,servlet层接收到由用户在浏览器输入的userName and password。然后再servlet层调用service层把接收过来的数据作为参数传给service层。在service层内部,调用了DAO层。并把数据传输给DAO层,DAO层通过连接数据库,对数据的逐一比对。如果该数据在数据库存在,那么返回该数据给service层,service层再把数据返回给servlet层。最后servlet再对此数据进行操作。
JAVA中Servlet层、Service层 、modle层 、 Dao层的功能区分?
答:Servlet层用于接收请求并且调用对应service层处理请求,是Java各层中最接近浏览器的一层。Service层主要编写具体业务逻辑,每个Service一般包含一组相关的业务逻辑(比如用户管理是一个Service,文章管理是一个Service)。modle/entity层(统称模型层)就是对应的数据库表的实体类,一般每个模型层类对应一个数据库“表”,一般是用于ORM对象关系映射,一方面方便从数据库取数据时保存为类,一方面也方便写入数据库,简而言之就是为了方便操作数据库。Dao层一般用于对数据库的具体操作,包括各种具体的增删改查语句和数据库数据和Java模型的映射。Util层主要用于存在项目各层都有可能出现、不好划分到某层中、出现频率较高的功能(类),比如连接数据库、获取系统参数、导出Excel表……
为什么将Service(Dao)层设为接口层,要在实现类里写逻辑呢?
答:主要还是为了方便项目管理,增加代码的复用性。当项目很大、代码很多时,可能存在多种业务逻辑类似但具体业务有所区别的需求,此时让它们都集成同一个接口层就好了(只是情景之一)。
为什么要用service层封装?
答:这个问题就像Java为什么要分层一样。一般来说,某一个程序的有些业务流程需要连接数据库,有些不需要与数据库打交道而直接是一些业务处理,这样就需要我们整合起来到service中去,这样可以起到一个更好的开发与维护的作用,同时也是MVC设计模式中model层功能的体现。