【问题标题】:Is it good practice to declare a DB's column as an Object in a POJO class? [closed]将数据库的列声明为 POJO 类中的对象是一种好习惯吗? [关闭]
【发布时间】:2021-07-12 01:04:07
【问题描述】:

这是我的数据库的一个例子, 客户(idCustomer,姓名,电子邮件...) 产品(idProduct,name,price ...) 订单(idOrder,idProduct,idCustomer,...)

如何在订单类中声明 idProduct

public class Order{
private int idCustomer ; 
private int idProduct ; 
private int idOrder ;
//Getters and setters
}

或者

public class Order{ 
private Customer customer ; 
private Product product ; 
private int idOrder ; 
//Getters and Setters  } 

当我更改属性时,如第二个 sn -p 所示。我在使用带有 ResultSet 的 Setter 时遇到了一个问题,因此我在循环中创建了一个 Customer 和 Product 变量。

public static  List<Order> getAllOrder() {
    List<Order> list=new ArrayList<Order>() ; 
    Customer c = new Customer()  ; 
    Product p = new Product() 
    try { 
        Connection con =DB.getCon() ; 
        java.sql.PreparedStatement ps=con.prepareStatement("select * from Order") ; 
        
        ResultSet rs=ps.executeQuery()   ;
        while (rs.next()) { 
            Order o =new Order() ;
            o.setIdOrder(rs.getInt(1)) ;
            c.setIdCustomer(rs.getInt(2)) ;
            o.setCustomer(c) ; 
            p.setIdProduct(rs.getInt(3)) ;
            c.setProduct(p) ;
            list.add(o) ;} 
        ps.close() ; 
        con.close();
            
        }catch (Exception e ) {System.out.println(e) ; }
        return list ;}

我这样做的原因是我希望我的项目符合 OOP 概念,并且它有助于 JOIN 查询,因此我可以检索未在 order 类中声明的信息。 谢谢大家

【问题讨论】:

  • 我知道您的代码可以正常工作并且您没有问题。那么也许Code Review 更适合您的问题?我只想说你应该在while 循环中创建Customer 类和Product 类的新实例。检查在while 循环内创建CustomerProduct 对象之间的list 元素是否与您现在创建单个Customer 对象和Product 对象的方式有任何区别在进入while 循环之前。

标签: java mysql oop resultset pojo


【解决方案1】:

简短的回答是肯定的,最好将关系声明为对象,而不仅仅是包含它们的 Id。如果您发现自己经常使用 Id 而没有对象的其余部分,那么添加其他仅从对象中获取 Id 的 getter 可能是个好主意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-12
    • 2015-02-18
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 2021-10-30
    相关资源
    最近更新 更多