最近在写数据库课程设计 有些疑问。大家看一下下面的简单代码没有办法贴图啊。。
package com.meran.cyclone.domain;import java.math.BigDecimal;
import java.util.List;public class SalesOrder {
private int sID;
private  List<SalesItemLine> list;
private BigDecimal sDiscount;
private BigDecimal totalPrice;
private BigDecimal finalPrice;
private int wID;
private int cID;
public void setWID(int wID){
this.wID=wID;
};
public int getWID(){
return wID;
}
public void  setCID( int cID){
this.cID=cID;
}
public int getCID(){
return cID;
}

public void setSID(int sID){
this.sID=sID;
}
public void setList(List<SalesItemLine> list){
this.list=list;
}
public void setSDiscount(BigDecimal dis){
this.sDiscount=dis;
}
public void setTotalPrice(BigDecimal tot){
this.totalPrice=tot;
}
public void setFinalPrice(BigDecimal fin){
this.finalPrice=fin;
}

public int getSID(){
return sID;
}
public List<SalesItemLine> getList(){
return list;
}
public BigDecimal  getSDiscount(){
return sDiscount;
}
public BigDecimal getTotalPrice(){
return totalPrice;
}
public BigDecimal  getFinalPrice(){
return finalPrice;


}package com.meran.cyclone.domain;import java.math.BigDecimal;public class SalesItemLine {
    private Product product;
    private int sNum ;
    private BigDecimal sDiscount; 
    private BigDecimal sLineTotalPrice;
    private BigDecimal sLineFinalPrice;
    
    
    public void setProduct(Product pro){
     this.product=pro;
    }
    public void setSNum(int sNum){
     this.sNum=sNum;
    }
    public void setSDiscount(BigDecimal sDiscount){
     this.sDiscount=sDiscount;
    }
    public void setSLineTotalPrice(BigDecimal tot){
     this.sLineTotalPrice=tot;
    }
    public void setLineFinalPrice(BigDecimal fin){
     this.sLineFinalPrice=fin;
    }
    public int getProduct(){
     return product;
    }
    public int getSNum(){
     return sNum;
    }
    public BigDecimal getSDiscount(){
     return sDiscount;
    }
    public BigDecimal getSLineTatalPrice(){
     return sLineTotalPrice;
    }
    public BigDecimal getSLineFinalPrice(){
     return sLineFinalPrice;
    }
}
package com.meran.cyclone.domain;import java.math.BigDecimal;public class Product {
private int pID;
private String pCategory;
private String pName;
private BigDecimal pPrice;
private int pNum;

public void setPNum(int num){
this.pNum=pNum;
}
public int getPNum(){
return pNum;
}

public void setPID(int pID){
this.pID=pID;
}
public void setPCategory(String pCategory){
this.pCategory=pCategory;
}
public void setPName(String pName){
this.pName=pName;
}
public void setPrice(BigDecimal price){
this.pPrice=price;
}
public int getPID(){
return pID;
}
public String getPCategory(){
return pCategory;
}
public String getPName(){
return pName;

public BigDecimal getPPrice(){
return pPrice;
}
    


}
虽然 order 和 product 是多对多的关系,但是考虑到我们只需要单方向数据导航,所以去掉了 Product到 Order 的关系,
具体表现为,每个 Order 可以有多个 ItemLine  每个ItemLine 可以有多个 Product , 现在我想实现延时加载,  比如 我可以实现搜索 Order 的时候 ,把他的 ItemList 置为空, 但是 如果我想实现 仅仅是 Product的延时加载 ,我是不是无法实现的?因为 ItemLine 并没有在数据库中主键,它的 主键 是 Order 的主键与 Product 主键的集合?  我说的有没有问题 ??还有我们的DAO 模式返回由数据库重新装载出的对象,那么这个 对象中属性却有未被装载好的指向空的引用
,这是不是和DAO 有些违背?还有我们项目中的 多对多关系是不是一般都可以 根据数据导航方向 转化为 一对多的关系?多对多的延时加载是不是和一对多差不多? 可以 表现为两个双向的 一对多关系?ORM 对此是如何处理的?因为我最近菜开始用 ORM  所以有些疑问。
另外在领域驱动设计中是不是一定要保证 对象的导航有领域模型决定,而不是通过数据库而获得?