锁定老帖子 主题:关于DAO设计的一个问题 (讨论)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-06
那么在设计DAO的时候: UserDAO里面放只涉及到User信息的数据库操作,AccountDAO里面放只涉及到Account的信息, 涉及到User和Account共同的信息全部放到UserAccountDAO里面. 不知道大家是怎么样设计的 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-03-06
方法:
1)在上面添加一个service层 2)直接在某个DAO中操作。 |
|
返回顶楼 | |
发表时间:2007-03-06
方法:
1)在上面添加一个service层 2)直接在某个DAO中操作。 |
|
返回顶楼 | |
发表时间:2007-03-06
涉及到共同的信息?难道User和Account是多对多的?不合常理阿?如果你指的是数据库方面的多个操作,应该写成Service
|
|
返回顶楼 | |
发表时间:2007-03-06
一对多写了几行代码;改改吧
|
|
返回顶楼 | |
发表时间:2007-03-06
包结构为
com.java.client Client.java com.java.dao AccountDao.java AccountDaoImpl.java UserDao.java UserDaoImpl.java DaoFactory.java com.java.db Account.java User.java com.java.service UserService.java ************************************ |
|
返回顶楼 | |
发表时间:2007-03-06
User 类
/* * Created on Mar 6, 2007 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package com.java.db; import java.io.Serializable; /** * @author asdf * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class User implements Serializable { private int userId; private String userName; private String firstName; private String lastName; private String nickName; private String email; } Account类 /* * Created on Mar 6, 2007 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package com.java.db; import java.io.Serializable; import java.util.Date; /** * @author asdf * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class Account implements Serializable { private int accountId; private int userId; private String accountType; private Date createDate; private Date updateDate; } 省略get/set方法 |
|
返回顶楼 | |
发表时间:2007-03-06
AccountDao
/* * Created on Mar 6, 2007 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package com.java.dao; import java.util.List; import com.java.db.Account; import com.java.db.User; /** * @author asdf * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public interface AccountDAO { public int saveAccount(Account account)throws Exception; public boolean delAccount(int accountId)throws Exception; public void updateAccount(Account account)throws Exception; public Account findAccountByID(int id)throws Exception; public User findUserByAccountId(int accountId)throws Exception; public List findAllAccount()throws Exception; public boolean batchDelAccount(int[] accountId)throws Exception; } AccountDaoImpl /* * Created on Mar 6, 2007 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package com.java.dao; import java.sql.Connection; import java.util.List; import com.java.db.Account; import com.java.db.User; /** * @author asdf * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class AccountDAOImpl implements AccountDAO { private Connection connection =null; public AccountDAOImpl(Connection connection) { this.connection =connection; // TODO Auto-generated constructor stub } /* (non-Javadoc) * @see com.java.dao.AccountDAO#saveAccount(com.java.db.Account) */ public int saveAccount(Account account) { // TODO Auto-generated method stub return 0; } /* (non-Javadoc) * @see com.java.dao.AccountDAO#delAccount(int) */ public boolean delAccount(int accountId) { // TODO Auto-generated method stub return false; } /* (non-Javadoc) * @see com.java.dao.AccountDAO#updateAccount(com.java.db.Account) */ public void updateAccount(Account account) { // TODO Auto-generated method stub } /* (non-Javadoc) * @see com.java.dao.AccountDAO#findAccountByID(int) */ public Account findAccountByID(int id) { // TODO Auto-generated method stub return null; } /* (non-Javadoc) * @see com.java.dao.AccountDAO#findUserByAccountId(int) */ public User findUserByAccountId(int accountId) { // TODO Auto-generated method stub return null; } /* (non-Javadoc) * @see com.java.dao.AccountDAO#findAllAccount() */ public List findAllAccount() { // TODO Auto-generated method stub return null; } /* (non-Javadoc) * @see com.java.dao.AccountDAO#batchDelAccount(int[]) */ public boolean batchDelAccount(int[] accountId) throws Exception { // TODO Auto-generated method stub return false; } } UserDAO 类 /* * Created on Mar 6, 2007 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package com.java.dao; import java.util.List; import com.java.db.User; /** * @author asdf * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public interface UserDAO { public int saveUser(User user)throws Exception; public boolean delUser(int userId) throws Exception; public void updateUser(User user) throws Exception; public User findUserById(int userId) throws Exception; public List findUserByName(String userName) throws Exception; public List findAllUser()throws Exception; public List findAccountByUserId(int userId)throws Exception; } UserDAOImpl类 /* * Created on Mar 6, 2007 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package com.java.dao; import java.sql.Connection; import java.util.List; import com.java.db.Account; import com.java.db.User; /** * @author asdf * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class AccountDAOImpl implements AccountDAO { private Connection connection =null; public AccountDAOImpl(Connection connection) { this.connection =connection; // TODO Auto-generated constructor stub } /* (non-Javadoc) * @see com.java.dao.AccountDAO#saveAccount(com.java.db.Account) */ public int saveAccount(Account account) { // TODO Auto-generated method stub return 0; } /* (non-Javadoc) * @see com.java.dao.AccountDAO#delAccount(int) */ public boolean delAccount(int accountId) { // TODO Auto-generated method stub return false; } /* (non-Javadoc) * @see com.java.dao.AccountDAO#updateAccount(com.java.db.Account) */ public void updateAccount(Account account) { // TODO Auto-generated method stub } /* (non-Javadoc) * @see com.java.dao.AccountDAO#findAccountByID(int) */ public Account findAccountByID(int id) { // TODO Auto-generated method stub return null; } /* (non-Javadoc) * @see com.java.dao.AccountDAO#findUserByAccountId(int) */ public User findUserByAccountId(int accountId) { // TODO Auto-generated method stub return null; } /* (non-Javadoc) * @see com.java.dao.AccountDAO#findAllAccount() */ public List findAllAccount() { // TODO Auto-generated method stub return null; } /* (non-Javadoc) * @see com.java.dao.AccountDAO#batchDelAccount(int[]) */ public boolean batchDelAccount(int[] accountId) throws Exception { // TODO Auto-generated method stub return false; } } |
|
返回顶楼 | |
发表时间:2007-03-06
DaoFactory
/* * Created on Mar 6, 2007 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package com.java.dao; import java.sql.Connection; /** * @author asdf * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class DaoFactory { public static UserDAO getUserDAO(Connection connection) { return new UserDAOImpl(connection); } public static AccountDAO getAccountDAO(Connection connection) { return new AccountDAOImpl(connection); } } UserService 类 /* * Created on Mar 6, 2007 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package com.java.service; import java.sql.Connection; import java.sql.SQLException; import java.util.List; import com.java.db.Account; import com.java.db.User; import com.java.dao.AccountDAO; import com.java.dao.DaoFactory; import com.java.dao.UserDAO; /** * @author asdf * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class UserService { private Connection connection; private Connection getConnection() { //to-do open a connection form the dbPool this.connection =null; return connection; } public User findUser(int userId) { User user = null ; try { getConnection(); UserDAO userDAO = DaoFactory.getUserDAO(this.connection); user = userDAO.findUserById(userId); } catch(Exception e) { e.printStackTrace(); } finally { try { connection.close(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } return user; } public void delUser(int userId) { try { getConnection(); connection.setAutoCommit(false); AccountDAO accountDao = DaoFactory.getAccountDAO(this.connection); UserDAO userDao =DaoFactory.getUserDAO(this.connection); List list = userDao.findAccountByUserId(userId); int[] accounts = new int[list.size()]; for(int i = 0;i<list.size();i++) { Account account =(Account)list.get(i); accounts[i]= account.getAccountId(); } accountDao.batchDelAccount(accounts); userDao.delUser(userId); connection.commit(); } catch(Exception e) { e.printStackTrace(); try { connection.rollback(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } finally { try { connection.close(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } } |
|
返回顶楼 | |
发表时间:2007-03-06
Client客户端调用程序
/* * Created on Mar 6, 2007 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package com.java.client; import com.java.service.UserService; /** * @author asdf * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class Client { public static void main(String[] args) { //定义用户Id int userId = 100; UserService userService = new UserService(); userService.delUser(userId); } } |
|
返回顶楼 | |