interface: DAOFace(); implement class: DAOFaceImpl();DAOFace face = new DAOFaceImpl(); face.addUser(); .... ....
to: xwXiang()看的不是很明白请说明一下
先定义一个DAO接口如:IHelloDAO,里面定义你要进行的数据库操作的抽象方法如添加记录、查询等 再写一个DAO实现类实现上边的接口如:HelloDAO,具体实现接口中定义的抽象方法。给你个例子:public interface IUserDAO { public User getByName(String name,String password); }public class UserDAO extends HibernateDaoSupport implements IUserDAO{
public User getByName(String name,String password){ Object[] args=new Object[]{name,password}; int i=getHibernateTemplate().find("from User i where i.username=? and i.userpassword=?",args).size(); System.out.println("与该username相同的元素个数是:"+i); if (i!=0) return (User) getHibernateTemplate().find("from User i where i.username=? and i.userpassword=?",args).get(0); else{ User user=new User(); user=null; return user; } }}
implement class: DAOFaceImpl();DAOFace face = new DAOFaceImpl();
face.addUser();
....
....
再写一个DAO实现类实现上边的接口如:HelloDAO,具体实现接口中定义的抽象方法。给你个例子:public interface IUserDAO {
public User getByName(String name,String password);
}public class UserDAO extends HibernateDaoSupport implements IUserDAO{
public User getByName(String name,String password){
Object[] args=new Object[]{name,password};
int i=getHibernateTemplate().find("from User i where i.username=? and i.userpassword=?",args).size();
System.out.println("与该username相同的元素个数是:"+i);
if (i!=0)
return (User) getHibernateTemplate().find("from User i where i.username=? and i.userpassword=?",args).get(0);
else{
User user=new User();
user=null;
return user;
}
}}
不仅不合理,action中就不应该存在DAO。
比较清晰的做法是
action--service--dao--数据库
中间要加一个service层,然后在service层中对dao引用,你现在的做法耦合太严重。
当然,上述的结构还可以分出很多个层来,但简单应用用上述结构就完全绰绰有余。
public interface ITestService()
{
public abstract void addTest(Test test);
}public class TestServiceImpl implements ITestService
{
private TestDAO testDAO=new TestDAOImpl();
public void addTest(Test test)
{
testDAO.addTest(Test test);
}
}public interface TestDAO()
{
public abstract void addTest(Test test);
}public class TestDAOImpl implements TestDAO
{
public void addTest(Test test)
{
//对实体进行数据库操作
}
}你可以用Spring把上面接口注入实例就ok了。
如果你不用hibernate的话,而用jdbc,就传递参数,然后在dao中写数据库操作。