有谁熟悉 模型驱动设计 和 ORM 延时加载么?

meran 2011-09-01 09:08:17
最近在写数据库课程设计 有些疑问。

大家看一下下面的简单代码

没有办法贴图啊。。




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 所以有些疑问。


另外在领域驱动设计中是不是一定要保证 对象的导航有领域模型决定,而不是通过数据库而获得?
...全文
70 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
meran 2011-09-04
  • 打赏
  • 举报
回复
真心求 解答
meran 2011-09-02
  • 打赏
  • 举报
回复
而且 基本上banq 说什么就是什么 大家都跟风。。
meran 2011-09-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dzr1990 的回复:]
领域驱动的话楼主可以到J道论坛看一下,那里对领域驱动研究的很深,也有很多资料,地址是
http://www.jdon.com
[/Quote]

上过J道 感觉banq 是个下定义狂 不喜欢去
dzr1990 2011-09-02
  • 打赏
  • 举报
回复
领域驱动的话楼主可以到J道论坛看一下,那里对领域驱动研究的很深,也有很多资料,地址是
http://www.jdon.com
meran 2011-09-02
  • 打赏
  • 举报
回复
我并非 面向数据库编程 ,所以 对象导航 不想通过 数据库查询来实现啊
meran 2011-09-02
  • 打赏
  • 举报
回复
问题没有难度 关键是思想 ,谁熟悉领域驱动么
安心逍遥 2011-09-02
  • 打赏
  • 举报
回复
最好单向的一对多
LMAOhuaNL 2011-09-02
  • 打赏
  • 举报
回复
这么多文字很少热看到还是主要搞问题比较好哦,
meran 2011-09-02
  • 打赏
  • 举报
回复
求指点 可加分
dzr1990 2011-09-02
  • 打赏
  • 举报
回复
嗯,说实话,基本上它他们说的我都不懂……
开始的时候还硬着头皮去看,现在我也很少去了……

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧