在java中没有依赖注入的dao和服务层

时间:2014-01-04 09:24:38

标签: java dao service-layer

如何使用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);       

0 个答案:

没有答案