你的位置:首页 > Java教程

[Java教程]model、dao、 service 和Comtroll层的关系


首先这是现在最基本的分层方式,结合了SSH架构。modle层就是对应的数据库表的实体类。
Dao层是使用了Hibernate连接数据库、操作数据库(增删改查)。
Service层:引用对应的Dao数据库操作,在这里可以编写自己需要的代码(比如简单的判断)。
Action层:引用对应的Service层,在这里结合Struts的配置文件,跳转到指定的页面,当然也能接受页面传递的请求数据,也可以做些计算处理。
以上的Hibernate,Struts,都需要注入到Spring的配置文件中,Spring把这些联系起来,成为一个整体。

model层

实体类,也就是把数据库表的字段映射为你的对象的各个属性
如你A表有,id,name,password三个属性
你Model里面新建A class
给他 ID,Name,Password三个属性
然后做和数据表字段映射
LINQ TO SQL的时候就会自动读取映射的字段并转换为实体类的属性值

附:代码

package com.thundersoft.data.model;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;import org.hibernate.annotations.GenericGenerator;@Entity@Table(name = "tab_adminuser")public class AdminUser{	private Integer id;	private String adminName;	private String passwd;	@Id	@GeneratedValue(generator = "generator")	@GenericGenerator(name = "generator", strategy = "native")	public Integer getId()	{		return id;	}	public void setId(Integer id)	{		this.id = id;	}	@Column(length = 200)	public String getAdminName()	{		return adminName;	}	public void setAdminName(String adminName)	{		this.adminName = adminName;	}	@Column(length = 200)	public String getPasswd()	{		return passwd;	}	public void setPasswd(String passwd)	{		this.passwd = passwd;	}}

Dao层

new一个interface文件

package com.thundersoft.data.dao;import com.thundersoft.data.model.AdminUser;public interface AdminUserDao{  public void add(AdminUser user);}

Dao#Impl

new一个class,interface处add  Dao文件

package com.thundersoft.data.dao.impl;import org.hibernate.SessionFactory;import com.thundersoft.data.dao.AdminUserDao;import com.thundersoft.data.model.AdminUser;public class AdminUserDaoImpl implements AdminUserDao{  SessionFactory sessionFactory;  public void setSessionFactory(SessionFactory sessionFactory)  {    this.sessionFactory = sessionFactory;  }  public void add(AdminUser user)  {    sessionFactory.getCurrentSession().save(user);  }}

Service 的创建和Dao一样,ServiceImpl的创建和DaoImpl一样

ServiceImpl如下:

package com.thundersoft.data.service.impl;import com.thundersoft.data.dao.AdminUserDao;import com.thundersoft.data.model.AdminUser;import com.thundersoft.data.service.AdminUserService;public class AdminUserServiceImpl implements AdminUserService{  AdminUserDao adminUserDao;  public void setAdminUserDao(AdminUserDao adminUserDao)  {    this.adminUserDao = adminUserDao;  }  public void add(AdminUser user)  {    adminUserDao.add(user);  }}


Conyroll声明一个Service滞后就可以调用Service中的方法,Service调Dao层,Dao操作数据。