freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

武漢大學(xué)工程碩士專業(yè)學(xué)位論文模板-資料下載頁

2025-08-04 02:05本頁面
  

【正文】 塊層由實(shí)際需求中的業(yè)務(wù)對(duì)象組成。業(yè)務(wù)對(duì)象可以在各層之間移動(dòng)并承擔(dān)數(shù)據(jù)通訊的載體。由上章的分析,本系統(tǒng)涉及的業(yè)務(wù)對(duì)象有:一級(jí)版區(qū)(BOARD)、二級(jí)版區(qū)(BOARDS)、公告(BULLETIN)、廣告(ADV)、推薦(COMMEND)、精華(ELITE)、書簽(BOOKMARK)、黑名單(BLACKUSER)、好友(FRIEND)、留言(GUESTBOOK)、文章(FORUM)、在線統(tǒng)計(jì)(ONLINESTAT)、訂閱(SUBSCIBE)、用戶(USERINFO)、用戶詳細(xì)信息(USERDETAIL)、在線用戶(USERONLINE)、投票(VOTE)、投票項(xiàng)目(VOTEITEM)、投票人員記錄(VOTEUSER)等。業(yè)務(wù)對(duì)象類其實(shí)就是普通的java類,在其內(nèi)部定義一些和業(yè)務(wù)相關(guān)的私有屬性字段,并對(duì)外提供公有的相應(yīng)屬性的set和get方法設(shè)置或訪問其屬性值。下面列舉一個(gè)重要的業(yè)務(wù)對(duì)象類BOARD類的私有屬性boardName及其set和get方法的定義。 private String boardName。 public void setBoardName (Long boardName) { this. boardName = boardName。 } public String getBoardName () { return boardName。 } 持久層的實(shí)現(xiàn)我們用Hibernate框架實(shí)現(xiàn)應(yīng)用的持久層,封裝訪問數(shù)據(jù)庫的實(shí)現(xiàn)細(xì)節(jié),并向上層提供面向?qū)ο蟮臄?shù)據(jù)訪問API。在接下來的三個(gè)小節(jié),主要分析了如何創(chuàng)建Hibernate框架為我們的應(yīng)用服務(wù)。分為如下三個(gè)步驟:①創(chuàng)建O/R映射文件②創(chuàng)建Hibernate配置文件③通過Hibrenate API實(shí)現(xiàn)具體的DAO數(shù)據(jù)訪類 O/R映射 Hibernate采用XML格式的文件來指定對(duì)象和關(guān)系數(shù)據(jù)之間的映射。在應(yīng)用運(yùn)行時(shí),Hibernate將根據(jù)這個(gè)映射文件來生成各種SQL語句,實(shí)現(xiàn)數(shù)據(jù)的訪問。 由于一級(jí)版區(qū)下面可以有一個(gè)或多個(gè)二級(jí)版區(qū),所以Board和Boards是一對(duì)多的關(guān)聯(lián)關(guān)系。在XML配置文件中分別用屬性onetomany和manytoone表示這種關(guān)聯(lián)關(guān)系。 映射Board對(duì)象到數(shù)據(jù)庫ICPS_BOARD表,:map name=boards inverse=true cascade=all orderby=Orders asc key column=BoardID/index column=ID type=long/onetomany class= . / /map映射Board對(duì)象到數(shù)據(jù)庫ICPS_BOARDS表,:manytoone name=board class= column=BoardID/Hibernate從配置文件中讀取和數(shù)據(jù)庫連接有關(guān)的信息??梢圆捎肑ava屬性文件(采用鍵值對(duì)的形式)。其中主要配置的一些屬性及其說明如表62所示,表62 數(shù)據(jù)庫連接有關(guān)的信息屬性 描述url連接數(shù)據(jù)庫的URLJdbcDriverName數(shù)據(jù)庫的驅(qū)動(dòng)程序Username連接數(shù)據(jù)庫的用戶名Password連接數(shù)據(jù)庫的用戶密碼Dialect數(shù)據(jù)庫使用的SQL方言 DAO數(shù)據(jù)訪問接口本系統(tǒng)涉及的業(yè)務(wù)對(duì)象有19個(gè),每一個(gè)都映射到一張數(shù)據(jù)庫表,為了完成業(yè)務(wù)對(duì)象的持久化,執(zhí)行相應(yīng)的增、刪、改、查操作,所以必須實(shí)現(xiàn)每一個(gè)對(duì)象的DAO類?;谝韵聨c(diǎn)考慮,我們創(chuàng)建了每一個(gè)對(duì)象DAO類的接口類IDAO:l 為了以后功能擴(kuò)展l 降低系統(tǒng)實(shí)現(xiàn)之間的相互依賴關(guān)系l 業(yè)務(wù)層用Spring框架的設(shè)值注入方式綁定business service object和 DAO Object, Business Object中的Setter方法接受的是接口,這樣便于很松散的定義對(duì)象實(shí)現(xiàn),然后注入??紤]到每一個(gè)對(duì)象DAO類所需完成功能的相似性,所以可以定義一個(gè)接口超類, 用以封裝通用的方法定義。public interface IBaseDao { public Session openSession()。 public Query getQuery(String sql) throws Exception。 public Object getByPk(Class clazz,Integer id)。 public Object getByPk(Class clazz,Long id)。 public Object getByPk(Class clazz,String id)。 public Object add(Object entity)。 public Object update(Object entity)。 public void delete(Object entity) throws DaoException。 public void deleteAll(Collection entities) throws DaoException。 public List find(String queryString) throws DaoException。 public List find(String queryString, Object param) throws DaoException。 public List find(String queryString, Object[] params) throws DaoException。 }所有業(yè)務(wù)對(duì)象DAO類的接口類都繼承上面定義的接口超類IBaseDao類。由于在超類IBaseDao中定義了常規(guī)的大部分方法接口,對(duì)于每一個(gè)具體業(yè)務(wù)對(duì)象DAO類的接口類,只需根據(jù)需要定義部分接口即可。IBoards接口定義如下:public interface IBoardsDAO extends IBaseDao{ public List findOrderByNum()。 public boolean removeBoards(Boards boards)。 public short getNextOrders(Board board)。 public int getPostSumNum(int mainorall)。} DAO數(shù)據(jù)訪問實(shí)現(xiàn)為了實(shí)現(xiàn)代碼的最大復(fù)用和便于以后功能的變更,業(yè)務(wù)對(duì)象DAO都繼承自BaseDAO。,可以通過這個(gè)類獲得HibernateTemplate。HibernateTemplate能為我們管理Session的創(chuàng)建、事務(wù)的啟動(dòng)、提交與回滾。BaseDAO同時(shí)實(shí)現(xiàn)上面定義的接口超類IBaseDao,定義如下: public class BaseDao extends HibernateDaoSupport implements IBaseDao{... ...} 因?yàn)锽aseDao實(shí)現(xiàn)了IBaseDao接口,所以IBaseDao中定義所有方法都在這個(gè)BaseDao類中實(shí)現(xiàn)。下面依次分析了openSession() ,getQuery(),add(),getByPk(),update(), delete(),find()等方法的實(shí)現(xiàn)。u 提供openSession()這個(gè)方法主要是考慮到繼承BaseDao的子類中可能會(huì)有特殊的數(shù)據(jù)訪問目的,需要獲取和管理Session。這個(gè)方法是通過SessionFactoryUtils 類來獲取Session實(shí)例的。SessionFactoryUtils 。u getQuery()方法提供給調(diào)用者一個(gè)Query對(duì)象,它需要調(diào)用者傳入一個(gè)SQL語句的字符串作為參數(shù)。這個(gè)方法調(diào)用的openSession()方法獲取Session。u 向數(shù)據(jù)庫中添加記錄是最常見的操作之一。Add()實(shí)現(xiàn)了向數(shù)據(jù)庫中添加一條對(duì)應(yīng)于一個(gè)業(yè)務(wù)對(duì)象實(shí)例的記錄,它調(diào)用HibernateTemplate的save()方法實(shí)現(xiàn)。HibernateTemplate的save(). DataAccessException異常。Add()方法在添加成功后返回這個(gè)業(yè)務(wù)對(duì)象實(shí)例給調(diào)用者。u 根據(jù)主鍵查詢唯一數(shù)據(jù)對(duì)象,用getByPk()方法實(shí)現(xiàn)。這個(gè)方法有兩個(gè)參數(shù):業(yè)務(wù)對(duì)象Class和id。根據(jù)需要,id可以是Integer型對(duì)象、Long型對(duì)象或String,所以有三種實(shí)現(xiàn)方式,分別是getByPk(Class class,Integer id),getByPk(Class class,Long id)和getByPk(Class class,Long String)。u update()方法用于把業(yè)務(wù)對(duì)象的更新持久化到數(shù)據(jù)庫對(duì)應(yīng)的表中。u delete()方法從數(shù)據(jù)庫刪除一條對(duì)應(yīng)于一個(gè)業(yè)務(wù)對(duì)象的記錄u Find()方法根據(jù)查詢語句查詢數(shù)據(jù)庫并返回查詢結(jié)果所包含的業(yè)務(wù)對(duì)象集合。這個(gè)方法有三種實(shí)現(xiàn)形式:n List find(String queryString),根據(jù)查詢語句查詢數(shù)據(jù)庫并返回查詢結(jié)果所包含的業(yè)務(wù)對(duì)象集合。n List find(String queryString, Object param),根據(jù)帶一個(gè)參數(shù)的查詢語句查詢數(shù)據(jù)庫并返回查詢結(jié)果所包含的業(yè)務(wù)對(duì)象集合。n List find(String queryString, Object[] params), 根據(jù)帶多個(gè)參數(shù)的查詢語句查詢數(shù)據(jù)庫并返回查詢結(jié)果所包含的業(yè)務(wù)對(duì)象集合。 業(yè)務(wù)對(duì)象DAO封裝了Hibernate的實(shí)現(xiàn)細(xì)節(jié),提供訪問接口,供業(yè)務(wù)層調(diào)用。在上面的分析中,完成了IBoardsDAO、IBaseDao和BaseDao的實(shí)現(xiàn)。接下來我們以BoardsDAO的實(shí)現(xiàn)來說明如何實(shí)現(xiàn)一個(gè)具體業(yè)務(wù)對(duì)象DAO。BaseDao已完成了大部分通用功能的實(shí)現(xiàn),BoardsDAO只需要繼承它并實(shí)現(xiàn)本身特殊的功能需求即可,比如Boards的刪除涉及到級(jí)聯(lián)對(duì)象的刪除。BoardsDAO需要實(shí)現(xiàn)IBoardsDAO的四個(gè)方法:findOrderByNum()、removeBoards()、getNextOrders()和getPostSumNum()。其主要代碼如下所示: //級(jí)聯(lián)對(duì)象的刪除 ().getBoards().remove(().getId())。 (boards)。 ……// 省略其它代碼從上面的分析可以看出,用Hibernate實(shí)現(xiàn)持久層,使操作變得非常簡潔,我們所面對(duì)和操作的是都是具體得業(yè)務(wù)對(duì)象,而讓Hibernate根據(jù)映射文件去完成和數(shù)據(jù)庫表打交道得那部分工作。這也是使用Hibernate實(shí)現(xiàn)持久層得優(yōu)勢所在。 業(yè)務(wù)層的實(shí)現(xiàn)業(yè)務(wù)層所要做的就是處理來自表示層的請(qǐng)求、執(zhí)行應(yīng)用邏輯、對(duì)持久層的調(diào)用、處理事務(wù)、處理異常。本系統(tǒng)涉及到的業(yè)務(wù)邏輯類是由系統(tǒng)的業(yè)務(wù)對(duì)象決定的。Spring框架負(fù)責(zé)把業(yè)務(wù)處理邏輯與所用到的業(yè)務(wù)處理對(duì)象和DAO聯(lián)系起來以完成相應(yīng)的業(yè)務(wù)處理。 業(yè)務(wù)邏輯處理類的實(shí)現(xiàn)依據(jù)本系統(tǒng)涉及的業(yè)務(wù)對(duì)象,相應(yīng)的業(yè)務(wù)邏輯處理類及其接口為:① IBoardService接口和其實(shí)現(xiàn)BoardService類IBoardService接口定義了addBoard()、updateBoard()、findAllBoard()、findBoardById()、removeBoard()、getNextOrders()五個(gè)方法。BoardService負(fù)責(zé)一級(jí)版區(qū)的管理,即提供對(duì)一級(jí)版區(qū)的增、刪、改、查等服務(wù)。BoardService類實(shí)現(xiàn)了這些方法,借助Spring的IoC注入所依賴的JavaBean BoardDAO,調(diào)用此JavaBean相應(yīng)的方法實(shí)現(xiàn)所需的服務(wù)。② IBoardsService接口和其實(shí)現(xiàn)BoardsService類 IBoardsService接口提供的方法有:getUserInfoService(),setUserInfoService()(這個(gè)方法提供給Spring注入U(xiǎn)serInfoService Bean),addBoards(),updateBoards(),getBoards(),findOrderByNum(),getNextOrders(),removeBoards(),checkMainMaster(),checkAssiOrHideMaster(),isHideMaster(),createBoardsFile(),getBoardsMaster(),getPostSumNum()。BoardsService主要負(fù)責(zé)提供二級(jí)版區(qū)的管理和權(quán)限控制等服務(wù)。③ IBulletinService和BulletinService提供公告管理相關(guān)服務(wù)。④ IAdvService和AdvService提供廣告管理相關(guān)服務(wù)。⑤ IBookMarkService和IBookMarkService提供書簽管理相關(guān)服務(wù)⑥ ICommendService和CommendService提供文章推薦相關(guān)服務(wù)。⑦ IEliteService和EliteService提供指定精華文章相關(guān)服務(wù)。⑧ IBlackUserService和BlackUserService提供用戶黑名單相關(guān)服務(wù)⑨ IFriendService和FriendService提供好友管理相關(guān)服務(wù)。⑩ IGuestBookService和GuestBookService提供用戶留言服務(wù)。? IForumService和ForumService提供文章的查看、發(fā)表及回復(fù)等相關(guān)服務(wù)。? IOnlineStatService和OnlineStatService提供在線統(tǒng)計(jì)服務(wù)。? ISubscibeService和Sub
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1