欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
簡(jiǎn)易java框架 - 使用對象-關(guān)系映射(ORM)系統中間件提升軟件開(kāi)發(fā)效率及質(zhì)量

一、什么是對象-關(guān)系映射(ORM)?  

  對象-關(guān)系映射(Object/Relation Mapping,簡(jiǎn)稱(chēng)ORM),是隨著(zhù)面向對象的軟件開(kāi)發(fā)方法發(fā)展而產(chǎn)生的。面向對象的開(kāi)發(fā)方法是當今企業(yè)級應用開(kāi)發(fā)環(huán)境中的主流開(kāi)發(fā)方法,關(guān)系數據庫是企業(yè)級應用環(huán)境中永久存放數據的主流數據存儲系統。對象和關(guān)系數據是業(yè)務(wù)實(shí)體的兩種表現形式,業(yè)務(wù)實(shí)體在內存中表現為對象,在數據庫中表現為關(guān)系數據。內存中的對象之間存在關(guān)聯(lián)和繼承關(guān)系,而在數據庫中,關(guān)系數據無(wú)法直接表達多對多關(guān)聯(lián)和繼承關(guān)系。因此,對象-關(guān)系映射(ORM)系統一般以中間件的形式存在,主要實(shí)現程序對象到關(guān)系數據庫數據的映射。
    
二、為什么要引入對象-關(guān)系映射中間件?
   在開(kāi)發(fā)關(guān)系數據庫的系統時(shí),可以通過(guò)SQL語(yǔ)句讀取及操作關(guān)系數據庫數據。在Java領(lǐng)域,可以直接通過(guò)JDBC編程來(lái)訪(fǎng)問(wèn)數據庫。JDBC可以說(shuō)是JAVA訪(fǎng)問(wèn)關(guān)系數據庫的最原始、最直接的方法。這種方式的優(yōu)點(diǎn)是運行效率高,缺點(diǎn)是在Java程序代碼中嵌入大量SQL語(yǔ)句,冗余是不可避免的,開(kāi)發(fā)人員常常發(fā)現自己在一次又一次地編寫(xiě)相同的普通代碼,如獲得連接、準備語(yǔ)句、循環(huán)結果集以及其他一些 JDBC 特定元素,使得項目難以維護。特別是當涉及到非常多的關(guān)系數據表、需要在多個(gè)不同類(lèi)型的關(guān)系數據庫系統中使用時(shí),通過(guò)在程序中使用JDBC開(kāi)發(fā)實(shí)施起來(lái)更加困難。
   在開(kāi)發(fā)基于數據應用為主的軟件系統時(shí),引入對象-關(guān)系映射中間件是提高開(kāi)發(fā)效率、提升軟件產(chǎn)品的可維護、擴展性的現實(shí)需要。實(shí)踐表明,在基于數據處理為主的企業(yè)級應程序開(kāi)發(fā)中,通過(guò)引入對象-關(guān)系映射中間件,可以節省與對象持久化有關(guān)的差不多35%的編程工作量,同時(shí)提升軟件產(chǎn)品可維護及易擴展性,提升軟件產(chǎn)品質(zhì)量。
   因此,在開(kāi)發(fā)企業(yè)級應用時(shí),有必要通過(guò)引入對象-關(guān)系映射系統中間件,實(shí)現數據庫的快速開(kāi)發(fā)。企業(yè)可以通過(guò)JDBC編程來(lái)開(kāi)發(fā)單獨的持久化層,把數據庫訪(fǎng)問(wèn)操作封裝起來(lái),提供簡(jiǎn)潔的API,供業(yè)務(wù)層統一調用,實(shí)現自己的ORM系統中間件。
   當然,一個(gè)成熟的對象-關(guān)系映射中間件產(chǎn)品,不只是簡(jiǎn)單的把內存中的對象持久化到數據庫、把數據庫中的關(guān)系數據加載到內存中,還要保證系統頻繁地訪(fǎng)問(wèn)數據庫的性能,降低訪(fǎng)問(wèn)數據庫的頻率,需要引入多線(xiàn)程、緩存、事務(wù)管理等很多細節,涉及到的技術(shù)比較復雜,因此,我們更多是使用市場(chǎng)上優(yōu)秀的ORM系統中間件產(chǎn)品。
  
三、當前JAVA主流的對象-關(guān)系映射中間件產(chǎn)品?
   對象關(guān)系映射程序(Object Relational Mappers,ORM)有多種形式。在 Java領(lǐng)域,大多數流行的 ORM 都可以實(shí)現完整的域模型映射,它的目標是將整層的對象和行為映射到數據庫表。當前主流的 ORM 中間件產(chǎn)品主要有:
   Hibernate(重點(diǎn)推薦)
   JDO
iBatis
   EJB Entities 3
   EJB Entity Beans 2.x
   TopLink
   在眾多的ORM中間件產(chǎn)品中,Hibernate是筆者重點(diǎn)推薦的。Hibernate是一個(gè)基于Java的開(kāi)放源代碼的持久化中間件,它對JDBC做了輕量級封裝,不僅提供ORM映射服務(wù),還提供數據查詢(xún)和數據緩存功能,Java開(kāi)發(fā)人員可以方便地通過(guò)Hibernate API來(lái)操縱數據庫?,F在,越來(lái)越多的Java開(kāi)發(fā)人員把Hibernate作為企業(yè)應用和關(guān)系數據庫之間的中間件。

四、使用EasyDBO實(shí)現簡(jiǎn)單的對象-關(guān)系映射
   EasyDBO是由簡(jiǎn)易java框架網(wǎng)(www.easyjf.com)開(kāi)發(fā)的一個(gè)適合中小型軟件數據庫開(kāi)發(fā)的java數據持久層框架,系統參考hibernate、JDO等,結合中小項目軟件的開(kāi)發(fā)實(shí)際,實(shí)現簡(jiǎn)單的Java對象到關(guān)系數據的映射。EasyDBO由于比較簡(jiǎn)單,比較適合于中小企業(yè)及個(gè)人開(kāi)發(fā)使用,EasyDBO當前還處于測試階段、是一個(gè)簡(jiǎn)易但不太成熟的對象-關(guān)系映射開(kāi)源中間件。
  EasyDBO的源代碼非常簡(jiǎn)單,有一點(diǎn)Java知識的人基本上都能讀懂,因此,選擇EasyDBO作本文的示例主要目的在于讓讀者快速進(jìn)入ORM系統的世界,理解對象-關(guān)系數據庫實(shí)質(zhì)及實(shí)現原理。
   EasyDBO考慮的是最簡(jiǎn)單的對象-關(guān)系映射,簡(jiǎn)單到可以不使用任何配置文件就實(shí)現對象-關(guān)系的映射。EasyDBO源碼主要包括com.easyjf.dbo、com.easyjf.dbo.config、com.easyjf.dbo.sql三個(gè)包。其中com.easyjf.dbo是框架的核心、實(shí)現了對象-關(guān)系的轉換、JDBC API的封裝以及用戶(hù)接口支持等,com.easyjf.dbo.config實(shí)現配置文件的管理,com.easyjf.dbo.sql實(shí)現數據庫的簡(jiǎn)單Sql語(yǔ)句的生成及多數據庫支持的擴展。
   在當前推出的測試版本中,程序員使用EasyDBO操作數據庫主要關(guān)注EasyJDO類(lèi)提供的方法及原數據對象DBObject類(lèi)、IObject接口即可。

五、使用EasyDBO的開(kāi)發(fā)數據庫應用程序示例
   下面我們看看使用EasyDBO是怎么樣實(shí)現數據庫的開(kāi)發(fā)。
   假設一個(gè)留言版系統存放留言信息關(guān)系數據表(message)的結構為:
   cid: varchar 16 主鍵
   title: varchar 50
   content: text
   inputUser: varchar 16
   inputTime: datetime
   status: int
  
相應java中的類(lèi)Message定義為
   import java.util.Date;
   import java.util.List;
   import com.easyjf.dbo.EasyJDB;
   import com.easyjf.dbo.IObject;
   //實(shí)現com.easyjf.dbo.IObject接口從而使得你的對象無(wú)需要配置文件即可與關(guān)系數據表映射
   public class Message implements IObject {
   private String cid;
   private String title;
   private String content;
   private String inputUser;
   private Date inputTime;
   private Integer status;
   public String getTableName() {
   return "message";
   }
   public String getKeyField() {

   return "cid";
   }
   public String getKeyGenerator() {
   return "com.easyjf.dbo.IdGenerator";
   }
   public String getCid() {
   return cid;
   }
   public void setCid(String cid) {
   this.cid = cid;
   }
   public String getContent() {
   return content;
   }
   public void setContent(String content) {
   this.content = content;
   }
   public java.util.Date getInputTime() {
   return inputTime;
   }
   public void setInputTime(java.util.Date inputTime) {
   this.inputTime = inputTime;
   }
   public String getInputUser() {
   return inputUser;
   }
   public void setInputUser(String inputUser) {
   this.inputUser = inputUser;
   }
   public Integer getStatus() {
   return status;
   }
   public void setStatus(Integer status) {
   this.status = status;
   }
   public String getTitle() {
   return title;
   }
   public void setTitle(String title) {
   this.title = title;
   }

   //把對象持久化(保存)到關(guān)系數據庫中
   public boolean save()
   {
   EasyJDB db=new EasyJDB();
   return db.saveOrUpdate(this);
   }
   //從持久化存儲設備數據庫系統中永久刪除對象
   public boolean del()
   {
   EasyJDB db=EasyJDB.getInstance();
   return db.del(this);
   }
   //通過(guò)主鍵id從數據庫系統中讀取數據,返回一個(gè)對象
   public static Message read(String cid)
   {
   EasyJDB db=EasyJDB.getInstance();
   return (Message)db.get(Message.class,cid);
   }
   //通過(guò)sql從數據庫中查詢(xún)符合條件的數據,返回對象列表
   public static List query(String sql)
   {
   EasyJDB db=EasyJDB.getInstance();
   return db.query(Message.class,sql);
   }
   //應用演示代碼
   public static void main(String[] args) {
   Message m=new Message();
   m.setTitle("標題");
   m.setContent("內容");
   m.setInputTime(new Date());
   m.setInputUser("test");
   m.setStatus(new Integer(1));
   if(m.save())
   {
   System.out.print("成功把對象保存到關(guān)系數據庫中");
   }
   else
   {
   System.out.println("保存數據出錯!");
   }
   //查詢(xún)數據
   List list=Message.query("1=1");
   if(list!=null){
   for(int i=0;i<list.size();i++)
   {
   Message message=(Message)list.get(i);
   System.out.println("--------");
   System.out.println("cid:"+message.getCid());
   System.out.println("title:"+message.getTitle());
   System.out.println("inputUser:"+message.getInputUser());
   System.out.println("inputTime:"+message.getInputTime());
   System.out.println("status:"+message.getStatus());
   }
   }
   }
   }

   如上面的代碼所示,程序只需要通過(guò)EasyJDB的getInstance()方法得到一個(gè)實(shí)例,然后就可以通過(guò)EasyJDB對象的save、update、del、get、query等類(lèi)似的方法進(jìn)行數據庫的操作了。而程序員不用管具體的數據庫系統類(lèi)型、不用管數據庫連接的獲取、數據庫資源的釋放、不用構造煩瑣無(wú)味的Sql添、刪、改、查語(yǔ)句。
   關(guān)于數據源及配置文件:用戶(hù)可以通過(guò)EasyDBO的配置文件easyjf-dbo.xml文件配置數據庫連接數據源,也可以程序中設置數據源,還可通過(guò)IOC容器設置數據源。下面我們看看EasyDBO的數據源配置文件easyjf-dbo.xml的內容。
   <easyjf-dbo>
   <datasource id="bbs" type="org.apache.commons.dbcp.BasicDataSource">
   <property name="easydbo.connection.driver_class">org.gjt.mm.mysql.Driver</property>
   <property name="easydbo.connection.password">yourpassword</property>
   <property name="easydbo.connection.url">jdbc:mysql://127.0.0.1:3306/easyjf</property>
   <property name="easydbo.connection.username">root</property>
   <property name="easydbo.dialect">com.easyjf.dbo.sql.MySqlQuery</property>
   <property name="easydbo.optimize">true</property>
   <property name="esyydbo.show_sql">true</property>
   </datasource>
   <tables>
   <class>
   </class>
   </tables>
   </easyjf-dbo>

  假如用戶(hù)使用的是MS Sql Server數據為,把上面的的配置文件修改成如下的內容即可:
   <easyjf-dbo>
   <datasource id="bbs" type="org.apache.commons.dbcp.BasicDataSource">
   <property name="easydbo.connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
   <property name="easydbo.connection.password">sa</property>
   <property name="easydbo.connection.url">jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=easyjf;SelectMethod=cursor</property>
   <property name="easydbo.connection.username">yourpassword</property>
   <property name="easydbo.dialect">com.easyjf.dbo.sql.MSSqlServerQuery</property>
   </datasource>
   <tables>
   <class>
   </class>
   </tables>
   </easyjf-dbo>

六、選擇適合你的對象-關(guān)系映射中間件
   不是功能最全,用得最多的中間件就一定適合您,當前流行的各種ORM中間件產(chǎn)品中,hibernate無(wú)疑是最為出色的產(chǎn)品,從系統的構架、性能及功能上都非常好。在大型分布市群集服務(wù)器運用領(lǐng)域,EJB Entity Beans是首選,因為其有廣泛的市場(chǎng)及運用基礎。當然,在小型的數據庫應用軟件領(lǐng)域,如一個(gè)新聞網(wǎng)站、一個(gè)簡(jiǎn)單的網(wǎng)上商店、論壇系統等,筆者也推薦大家不防試試EasyDBO。作為初學(xué)者,筆者推薦大家使用EasyDBO,閱讀EasyDBO的源代碼,可以讓你快速掌握及了解ORM中間件的實(shí)質(zhì)及工作原理,從而為學(xué)習及使用功能更加強大對象-關(guān)系映射中間件產(chǎn)品打下基礎。
   更多完整的有關(guān)EasyDBO應用實(shí)例代碼,請通過(guò)官方網(wǎng)站www.easyjf.com下載。

(轉載請保留作者及來(lái)源信息)

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
JPA EntityManager獲得session、connection
java開(kāi)發(fā)框架之Hibernate入門(mén)學(xué)習
圖形化Hibernate框架理解
myeclipse開(kāi)發(fā)hibernate應用程序示例
10年開(kāi)發(fā)經(jīng)驗程序員一文帶你把5種數據庫操作框架給直接理解透徹
Hibernate框架ORM的實(shí)現原理(資料)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久