Java EJB、JPA将业务方法转换为实体
我从projectant得到了uml图,在实体中我得到了getTotalPrice()方法 这是我的课:Java EJB、JPA将业务方法转换为实体,java,jakarta-ee,jpa,entity,Java,Jakarta Ee,Jpa,Entity,我从projectant得到了uml图,在实体中我得到了getTotalPrice()方法 这是我的课: public class UOrder { @OneToMany private List<Product> products; .... public BigDecimal getTotalPrice(){ BigDecimal b = new BigDecimal(0.0); for(Product p : products){
public class UOrder {
@OneToMany
private List<Product> products;
....
public BigDecimal getTotalPrice(){
BigDecimal b = new BigDecimal(0.0);
for(Product p : products){
b.add(p.getPrice());
}
return b;
}
}
公共类UOrder{
@独身癖
私人上市产品;
....
公共BigDecimal getTotalPrice(){
BigDecimal b=新的BigDecimal(0.0);
对于(产品p:产品){
b、 添加(p.getPrice());
}
返回b;
}
}
这样做是个好主意?逻辑业务进入实体?
我在uml图中只有一个函数,而不是字段totalPrice或类似的东西,所以我想它一定是这样的 我认为还不错,但我更喜欢(伪代码):
公共类UOrder{
...
公共BigDecimal getTotalPrice(){
退货价格util.getTotalPrice(产品);
}
}
公共类PriceUtil{
公共静态BigDecimal getTotalPrice(列出产品){
产品的退货金额;
}
…其他用户和花哨的价格函数。。。
}
因为您通常需要:
- 计算增值税或
- 作为产品或服务的其他类别的价格
- 其他类别中的价格为UOrder
- 等等
公共类UOrder{
...
公共BigDecimal getTotalPrice(){
退货价格util.getTotalPrice(产品);
}
}
公共类PriceUtil{
公共静态BigDecimal getTotalPrice(列出产品){
产品的退货金额;
}
…其他用户和花哨的价格函数。。。
}
因为您通常需要:
- 计算增值税或
- 作为产品或服务的其他类别的价格
- 其他类别中的价格为UOrder
- 等等
- 这更像是一个品味问题。例如,如果你喜欢哲学,这确实是一个好主意,因为总价格属于
UOrder
类。这更像是一个品味问题。例如,如果您喜欢哲学,这是一个非常好的主意,因为总价属于UOrder
类。作为另一种观点(活动记录样式的数据映射对象只是以方便的形式保存的数据-值对象),我认为:
考虑到你说的方法是业务逻辑,考虑到@Anton谈论的众所周知的领域,这是个坏主意。如果您没有说这是业务逻辑,我会问您为什么在应用程序中关心这个总数
作为一个实验,考虑重新命名映射的类UOrdDATA,将其视为一个值对象,并有一个在应用层实现业务逻辑的UORD类。< /P> < P>作为一个替代的观点(活动记录样式数据映射对象只是一个方便的形式的持久数据-一个值对象),这就是我所想的:
考虑到你说的方法是业务逻辑,考虑到@Anton谈论的众所周知的领域,这是个坏主意。如果您没有说这是业务逻辑,我会问您为什么在应用程序中关心这个总数作为一个实验,考虑重新命名映射的类UOrdDATA,将其视为一个值对象,并有一个在应用层实现业务逻辑的UORD类。
public class UOrder {
...
public BigDecimal getTotalPrice() {
return PriceUtil.getTotalPrice(products);
}
}
public class PriceUtil {
public static BigDecimal getTotalPrice(List<Product> products) {
return sum-of-products;
}
... other userful and fancy price functions ...
}