使用dao.Processor管理資料持久化對象

來源:互聯網
上載者:User
對象|資料
原文

dao.Processor是在多資料庫多實體環境下以JAVA對象的資料對象化和持久化的核心類,它的使用方

法總結如下:

一、與Entity綁定;

針對dao.entity對象,可與EJB.entity設定相容。與entity相容的典型使用方法是:

Processor pro =ProcessorFactory.getProcessorInstance(ent);

或:

Processor pro  =Processor.getInstance(ent);

或:

processor pro =Procesor.getInstance();

pro.setEntity(entity);  或;pro.setEntity(String ent);

效果一樣;

使用的方式是: pro.open();這時侯pro會從entity的設定中通過datasource或ConnectionManager獲得指定的資料庫連接;

pro.close(),關閉清空所有的資料資源;

二、與DAO介面綁定;

Pro可以綁定一個或者多個DAO對象,這時侯Processor顯得象一個服務SPI;但每一個DAO對象只能綁定一個Processor執行個體。

可以通過find獲得dao對象;

DAO dao =pro.findByID(in id)或 pro.findByName(String name)獲得相應entity的執行個體對象,每個執行個體相當於資料庫中的一行記錄;

DAO dao =pro.findByValue(String key,String value);//根據給定的條件返回DAO對象;

dao.insert();dao.update();dao.delete()等方法相應通過介面調用pro.insert(DAO dao)等幾個同名方法;可以由容器管理這幾個方法,保持與資料庫的同步持久性。

dao.isExist(),該對象是否存在;

DAO dao =pro.getDao(String sql);//其實是直接用sql獲得dao對象;

三、與Query綁定;

dao.Processor的另一個使用方法是與dao.Query對象同步。Query是由dao.xml或其他xml定義的包含sql的查詢容器,典型設定如下:

 insert into bbsthread (author,sourceid,views,replys,authorid,pubdate,alias,topic,content,name,oldpath,oldsource) values (${author},${sourceid},${views},${replys},${authorid},${pubdate},${alias},${topic},${content},${name},${oldpath},${oldsource})

Query通過Query.addVarian(name,value),然後使用Query.getSqlStatement()獲得完整的sql語句;

Processor.setQuery(Query qry)設入Query;

String msg =pro.execute();//如果執行正常反回空,否則返回錯誤資訊;

或ArrayList alist =pro.executeQuery();這要求在entity有效情況下返回空或者是該entity的物件查詢列(適用於select型的Query);

或Resultset rs =pro.getResultSet(Query qry);四、直接執行Sql;

dao.Processor可以直接執行sql;

對於查詢型的語句可以直接通過ResultSet rs =pro.getResultSet(sql);

或者:String msg =pro.doUpdate(sql);直接執行sql執行語句;

通過 ArrayList alist =pro.getResultList(String sql);//使用entity設定的Class類型,要求entity不為空白

或ArrayList alist =pro.getResultList(String sql,String sclss);  //DAO介面的class名稱;

或ArrayList alist =pro.getResultList(String sql,Class cls);

這幾個重疊的方法得到相應的查詢結果對象列;

ArrayList alist =pro.getResultList(String[] conditions,String sOrd);//這個方法要求enty已經設好,按給定的更新的conditions條件集或order語句返回排序對象列;

五、擴充的方法:

 ArrayList alist =pro.getStringList(Query qry);//返回的是String型的列;

BatchDelete(int[] ids),BatchResume(int[] ids); BatchClear(int[] ids),幾個Batch方法,要求在entity已經設定的基礎上批執行指定的id集的所有記錄。

六、擷取connnection的方法;主要通過ConnectionManager擷取資料庫連接;

有三個可能的途徑;一是通過entity所屬的獲得需要的串連名;二是通過Query的getConn獲得需要的串連名;三是通過setConnection直接獲得串連名;


相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。