繁体   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