私が思うVO


  DBからMVCの各段階で大量の情報がやり取りされている.この場合、多くの情報を同時に送信できる情報器が必要です.情報器を独自に区分し概念を確立した.
DTO、VOの定義

  • DTO:情報ソースDBのテーブル列をモデリングするクラス.1つのテーブルのすべてのカラムがメンバー変数として使用されます.

  • VO:DTO以外の情報器は,表欄以外の情報を含む場合に用いる情報器が必要である.
    2-1. あるビューに必要なすべての情報を持つVO.
    2-2. mapper.パラメータをxmlのVOに渡します.
  • VOの使用
      JSP           :   ${VO.abcd} or ${abcd} == vo.getAbcd();
      Mapper.xml :  #{VO.abcd} or #{abcd} == vo.getAdbc();
     getAbcd()メソッドを作成した場合は、VOクラスのメンバー変数ではない場合でも、JSPまたはMapperを使用して必要な値を指定できます.xmlに送信できます.
     その利点は、モデル側ではなく、マッパまたはjspに必要な値の演算ロジックをサービスまたはVOクラス内部に送信できることです.
    ex) mapper.xmlにメッセージを渡すときにhashMapを使うのとVOを使うのとの違い
    public class BoardVo {
    	String keyword; //for 검색 , 확장성
    	
    	private int cp;//페이지 번호 
    	private int ps;//페이지 사이즈
    	{
    		cp = 1;
    		ps = 5;
    	}
    	public int getStartRow() {
    		return (cp-1) * ps; //ex) 0 * 5 = 0
    	}
    	public int getEndRow() {
    		return cp * ps; //ex) 1 * 5 = 5
    	}
    }
    上のVOと下のVOは違いますhashMapを使用する場合、導入は、サービス団が演算ロジックを提供していることを示すためである.
    public interface BoardMapper {
    	List<Board> list(Map<String,Integer> map);
    }    
    
    @Autowired
    private BoardMapper boardDao;
    @Override
    public BoardVo listS(int cp, int ps) {
    	Map<String, Integer> map = new HashMap<String,Integer>();
    	int initRow = (cp-1)*ps;
    	int lastRow = cp*ps;
    	map.put("initRow",initRow);
    	map.put("lastRow", lastRow);
    		
    	List<Board> list = boardDao.list(map);
    }
    hashMapで伝達するパラメータが多くなく,演算を必要としない場合には設計VOよりも便利であるようである.