如何使用DAO和服务层设计CRUD应用程序,而不在java中使用依赖项注入。我正在尝试使用servlet和jsp进行骨架Web应用程序。
我尝试过这种方式,请提出任何改进建议,包括更多内容,服务和网络应用视角。
public interface UserDAO {
public void create(User user);
public void update(User user);
...
}
public class UserDAOJDBC implements UserDAO {
private DAOFactory daoFactory;
public UserDAOJDBC(DAOFactory daoFactory) {
this.daoFactory = daoFactory;
}
public void create(User user) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet generatedKeys = null;
try {
connection = daoFactory.getConnection();
preparedStatement = connection.prepareStatement(..);
preparedStatement.executeUpdate();
} catch (SQLException e) {
...
} finally {
...
}
}
....
}
public abstract class DAOFactory {
public static DAOFactory getInstance(String dbnAPI){
DAOFactory instance;
instance = new DriverManagerDAOFactory(url, username, password);
return instance;
}
abstract public Connection getConnection() throws SQLException;
abstract public UserDAO getUserDAO();
}
public class DriverManagerDAOFactory extends DAOFactory {
private String url;
private String username;
private String password;
public DriverManagerDAOFactory(String url, String username, String password) throws SQLException {
this.url = url;
this.username = username;
this.password = password;
}
@Override
public Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, username, password);
}
@Override
public UserDAO getUserDAO() {
return new UserDAOJDBC(this);
}
}
public interface UserService {
public void createUser(User user);
public void updateUser(User user);
...
}
public class UserServiceImpl implements UserService {
private DAOFactory daoFactory = null;
public UserServiceImpl(DAOFactory daoFactory) {
this.daoFactory = daoFactory;
}
public void createUser(User user) {
UserDAO userDAO = daoFactory.getUserDAO();
userDAO.create(user);
}
...
}
DAOFactory daoFactory = DAOFactory.getInstance("userdb");
UserService userService = new UserServiceImpl(daoFactory);
User user = new User();
user.setEmail("test@test.com");
user.setPassword("test");
userService.createUser(user);