簡體   English   中英

Java結果集到EJB

[英]Java ResultSets to EJB

我在Java代碼中大量使用數據庫,例如讀取,寫入數據庫。 但我認為我做錯了。 我之所以這樣說,是因為我所有這樣做的類都是靜態的。 這是讀取和寫入數據庫的待辦事項列表類的示例:

public class TodoListItem () {

    public static String getItem () {

        String item;

        // For the sake of simplicity just imagine that here I call respective database
        // functions, execute preparedStatements and process the returned ResultSets

        // return item

    }

    public static void setItem (String "description") {

        // Again, imagine that I do preparedStatements and update the database

    }

}

因此,如您所見,這些方法都是靜態的,而且看起來似乎不是很“面向對象”,只是感覺不對。 我以某種方式認為您應該有一個代表“ TodoListItem”的bean,即:

public class Item {

    protected String description;

    public String getDescription () { return this.description; }

    public void setDescription (String description) { this.description = description; }

}

只是感覺更整潔了“面向對象”。但是,我該在哪里進行數據庫調用呢? 我很難說出這個問題,但是希望有人能理解我的意思...

您基本上想使用的是http://hibernate.org/orm ,它提供了數據庫表的對象表示形式,供您在應用程序中使用。

好吧,事實上,您自己在使用這種對象和多個靜態方法來做很多工作,而且您很嚴厲,充滿靜態方法的對象至少不舒服。 也許您正試圖用困難的方式創建數據訪問對象(DAO模式)。

關系數據庫與面向對象的世界之間存在不匹配,JPA(即休眠,eclipselink)試圖最小化該障礙。 因此,當您了解JPA規范時,您將從面向對象的角度查看所有數據庫,這只是加快了域學習和開發的速度(有一些取舍,但這就是想法)。

現在,詳細介紹一下:

  • Is a static class a bad practice for data manipulation? R /在大多數情況下,是的,很可能您會一遍又一遍地重新發明概念。 您將需要操縱事務,並發,鎖等。 但是,有例外,也許您有一個非常細小的舊系統,並且使用和ORM可能會過大,所以,請保持簡單,創​​建專用的JDBC控件-DAO-並使用它。
  • Is using hibernate more a luxury compared to "if you don't use hibernate you're not a very good developer" ? R /對於許多應用程序或行業,ORM概念是強制性的(如果不是通用的),這是您無法避免“ ORM,喜歡或恨它 ”的那種概念,但是您需要學習如何處理它。
  • So, what now? ,坐下來教自己一個ORM,並停止為實體管理器(jpa概念)編寫包裝器/代理。
  • But I really hate the ORMs! R /總是會有替代方案,標准化程度不高,但仍具有良好的支持和社區,例如:jooq,mybatis,spring數據等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM