最近在写数据库课程设计 有些疑问。大家看一下下面的简单代码没有办法贴图啊。。
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 所以有些疑问。
另外在领域驱动设计中是不是一定要保证 对象的导航有领域模型决定,而不是通过数据库而获得?
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 所以有些疑问。
另外在领域驱动设计中是不是一定要保证 对象的导航有领域模型决定,而不是通过数据库而获得?
解决方案 »
- ibatis调用sql存储过程获得自增长的id值问题:
- 请各位struts2高手帮帮忙,谢谢
- 谁会用JFreeChart画图啊。。。。。
- 关于hibernate返回值list封装成一个数组的通用方法(求教)
- spring中包含了操作数据库的很好的它封装后的JDBC,hibernate也是专门处理持久层的,我到底该用哪个啊?
- 关于struts2里面的chain:chain的目标方法没有被调用
- java后台的错误信息传给jsp页面
- 【代码思维锻炼】关于一个简单逻辑题编码实现的思考
- 我想学ant
- TOMCAT 问题!有答案马上结贴!
- 为什么一直说打开不了applicationContext.xml文件啊
- 大数据量解决方案测试
http://www.jdon.com
上过J道 感觉banq 是个下定义狂 不喜欢去