代码之家  ›  专栏  ›  技术社区  ›  user818700

Java ResultSet到EJB

  •  1
  • user818700  · 技术社区  · 12 年前

    我在java代码中经常使用数据库,例如从数据库中读取数据,向数据库中写入数据。但我觉得我做错了。我这么说是因为我所有的类都是静态的。下面是一个读取和写入数据库的todo列表类的示例:

    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; }
    
    }
    

    这只是感觉更整洁,更“面向对象”。。但我该在哪里调用数据库呢?我觉得很难说出这个问题,但希望有人能理解我的意思。。。

    2 回复  |  直到 12 年前
        1
  •  1
  •   Sergio    12 年前

    好吧,事实上,你自己在用这种对象和多个静态方法做很多工作,你是对的,充满静态方法的对象至少让人不舒服。也许您正试图以艰难的方式创建数据访问对象(DAO模式)。

    关系数据库和面向对象的世界之间存在不匹配,JPA(i:e hibernate,eclipselink)试图将这一障碍最小化。因此,当您了解JPA规范时,您将从面向对象的视图中看到所有数据库,这只是加快了领域学习和开发的速度(有一些权衡,但这就是想法)。

    现在,详细介绍一下:

    • Is a static class a bad practice for data manipulation? R/大多数时候,是的,你很可能会一次又一次地重新发明概念。你需要操纵事务、并发、锁等等。但是!,有一些例外,也许你有一个非常小的遗留系统,使用和ORM可能会被过度使用,所以,保持简单,创建一个专门的JDBC控件- -并使用了它!。
    • 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、春季数据等。。。。
        2
  •  1
  •   David Billings    12 年前

    你基本上想使用的是 http://hibernate.org/orm 它提供了用于应用程序的数据库表的对象表示。