首页 > 代码库 > DAO模式
DAO模式
、
以下是完整的DAO模块 以及使用cache和JNDI访问数据源
package app10d.dao; import java.sql.Connection; //实际的一个DAO 实际的DAO都应该继承 public interface DAO { Connection getConnection() throws DAOException; }
package app10d.dao; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import javax.sql.DataSource; /** * 提供关闭和获取链接操作 * @author 黄二狗 * */ public class BaseDAO implements DAO { public Connection getConnection() throws DAOException { DataSource dataSource = DataSourceCache.getInstance().getDataSource(); try { return dataSource.getConnection(); } catch (Exception e) { e.printStackTrace(); throw new DAOException(); } } protected void closeDBObjects(ResultSet resultSet, Statement statement, Connection connection) { if (resultSet != null) { try { resultSet.close(); } catch (Exception e) { } } if (statement != null) { try { statement.close(); } catch (Exception e) { } } if (connection != null) { try { connection.close(); } catch (Exception e) { } } } }
package app10d.dao; public class DAOException extends Exception { private static final long serialVersionUID = 19192L; public DAOException() { } public DAOException(String message) { this.message = message; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } private String message; public String toString() { return message; } }
package app10d.dao; import java.util.List; import app10d.model.Product; public interface ProductDAO extends DAO { List<Product> getProducts() throws DAOException; void insert(Product product) throws DAOException; }
package app10d.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import app10d.model.Product; public class ProductDAOImpl extends BaseDAO implements ProductDAO { private static final String GET_PRODUCTS_SQL = "SELECT name, description, price FROM products"; public List<Product> getProducts() throws DAOException { List<Product> products = new ArrayList<Product>(); Connection connection = null; PreparedStatement pStatement = null; ResultSet resultSet = null; try { connection = getConnection(); pStatement = connection.prepareStatement( GET_PRODUCTS_SQL); resultSet = pStatement.executeQuery(); while (resultSet.next()) { Product product = new Product(); product.setName(resultSet.getString("name")); product.setDescription( resultSet.getString("description")); product.setPrice(resultSet.getFloat("price")); products.add(product); } } catch (SQLException e) { throw new DAOException("Error getting products. " + e.getMessage()); } finally { closeDBObjects(resultSet, pStatement, connection); } return products; } private static final String INSERT_PRODUCT_SQL = "INSERT INTO products " + "(name, description, price) " + "VALUES (?, ?, ?)"; public void insert(Product product) throws DAOException { Connection connection = null; PreparedStatement pStatement = null; try { connection = getConnection(); pStatement = connection.prepareStatement( INSERT_PRODUCT_SQL); pStatement.setString(1, product.getName()); pStatement.setString(2, product.getDescription()); pStatement.setFloat(3, product.getPrice()); pStatement.execute(); } catch (SQLException e) { throw new DAOException("Error adding product. " + e.getMessage()); } finally { closeDBObjects(null, pStatement, connection); } } }
package app10d.dao; // public class DAOFactory { public static ProductDAO getProductDAO() { return new ProductDAOImpl(); } }
package app10d.dao; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; public class DataSourceCache { private static DataSourceCache instance; private DataSource dataSource; static { instance = new DataSourceCache(); } private DataSourceCache() { Context context = null; try { context = new InitialContext(); dataSource = (DataSource) context.lookup( "java:comp/env/jdbc/bean"); } catch (NamingException e) { } } public static DataSourceCache getInstance() { return instance; } public DataSource getDataSource() { return dataSource; } }
DAO模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。