Day 33:)製品管理計画設計


機能別クラス/インタフェースの作成



DTO(Data Transfer Object)

  • オブジェクト
  • は、各レイヤ間でデータを転送するために使用される
  • 論理を持たないデータオブジェクト
  • ジェネレータ、データアクセスのgetter/setterからなる

    Product

    public class Product{
    	
        private int no;
        private String name;
        private int price;
        
        // 생성자
        public Product() {}
        
        // getter, setter메서드
        public int getNo(){
        	return no;
        }
        public void setNo(int no){
        	this.no = no;
        }
        
        public String getName(){
        	return name;
        }
        public void setName(String name){
        	this.name = name;
        }
        
        public int getPrice(){
        	return price;
        }
        public void setPrice(int price){
        	this.price = price;
        }
        
    }

    Controller

  • は、ユーザ要求
  • に直接応答する.
  • ユーザは、必要な機能を入力し、サービス部門
  • に渡す.

    Store APP

    /* 주요부분 외 나머지 생략 */
    
    public class StoreApp{
    	public satatic void main(String[]args){
    	// 상품관리 기능 로직이 구현된 ProductService의 객체 구현
    	private ProductService service = new ProductService();
        Scanner scan = new Scanner(system.in)
        
        while(true){
        	System.out.println("============================");
            System.out.println("1. 상품조회")
        	System.out.println("============================");
            System.out.print("번호 입력: ")
            int menuNo = scan.readInt();
            
            if(menuNo == 1){
            	System.out.println("1. 상품조회")
            	service.getAllProducts();
         	}
        }
    }    

    Service

  • コントローラは、DAOを要求する機能と一致させ、
  • を処理する.
  • DAOを介してデータベースにアクセスし、DTOを介してデータを転送する
  • public class ProductService{
    	private ProductDao productDao = new ProductDao();
        
       	public getAllproducts(){
        	Product product = productDao.SelectAllProducts();
            return product;
        }
    }

    DAO(Data Access Object)


    接続
  • データベースCRUD操作
  • を実行する
  • のワークロードを効率的に割り当てるには、データベースに関連付けられたオブジェクトを作成し、
  • を管理します.

    ProductDao

    public class ProductDao{
    	
        	public List<Product> SelectAllProducts() throws SQLException{
    		List<Product> products = new ArrayList<>();
    		
    		String sql = "select product_no, product_price, product_discount_price, product_name "
    				+ "from tb_sample_products "
    				+ "order by product_no desc ";
    		
    		Connection connection = getConnection();
    		PreparedStatement pstmt = connection.prepareStatement(sql);
    		ResultSet rs = pstmt.executeQuery();
    		
    		while(rs.next()) {
    			
    			Product product = new Product();
    			product.setNo(rs.getInt("product_no"));
    			product.setPrice(rs.getInt("product_price"));
    			product.setDiscountPrice(rs.getInt("product_discount_price"));
    			product.setName(rs.getString("product_name"));
    			
    			products.add(product);
    		}
    		
    		rs.close();
    		pstmt.close();
    		connection.close();
    		
    		return products;
    	}
    
    }

    リファレンス


    VO(Value Object)

  • コンテンツは値そのものを表すのでreadonly
  • 値は変わらない