new framework(2)--why put Statement inside dao method
原來Statement stmt = conn.createStatement();都是在放在BaseDao中,
子類dao的方法中就可以直接用這個stmt,而且方法最后都會用finally
來close這個stmt以及rs。
這個做不好,因為new一個dao后,不能連續調用兩個方法,因為前一個方法
已經把stmt關閉掉了。
因此新架構中,在每個方法中都加入Statement stmt = conn.createStatement();
這樣就不會有上述問題了,但以增加代碼量為代價。
例子:





















MenuDao連續調用了兩個方法getNextMenu和save,如果不把
Statement stmt = conn.createStatement()置于方法內,那么我們要這樣寫:
MenuDao mDao = new MenuDao(conn);
MenuDto menu = mDao.getNextMenu(dto.getId().substring(0,2));
MenuDao mDao2 = new MenuDao(conn);
mDao2.save(dto);
要new兩次,不是不可以,但讓人感覺很不爽。