我正在使用 Spring 3.1 / Hibernate / Jackson 创建一个 Restfull API 服务器。
我有一个“购买”控制器/模型/道。
我现在需要添加“标记”购买的功能。
因此,一个带有“tagId”和“tagName”的简单类链接回“Purchase”。
一个“Purchase”可以有多个“Tags”,一个“Tag”只能属于一个“Purchase”。
代表我必须添加的这个新的“标签”类的最佳方式是什么?IE
- 我应该将 purchaseId 属性添加到“标签”模型并以某种方式对其进行注释吗?
- 我应该添加一个“标签列表”归因于购买”模型吗?
- 我会创建一个作为“PurchaseController”子类的“Tag”控制器吗?
- ETC...
本质上,我正在寻找使用 Spring 进行设计的最佳实践方法。
此外,任何关于我可以采用的设计模式的建议都将受到欢迎。
也许装饰者模式在这里适用?
当然,所有购买和标签都必须保存到数据库中。
谢谢
采购控制人:
@Controller
public class PurchaseController
{
@Autowired
private IPurchaseService purchaseService;
@RequestMapping(value = "purchase", method = RequestMethod.GET)
@ResponseBody
public final List<Purchase> getAll()
{
return purchaseService.getAll();
}
@RequestMapping(value = "purchase/{id}", method = RequestMethod.GET)
@ResponseBody
public final Purchase get(@PathVariable("id") final Long id)
{
return RestPreconditions.checkNotNull(purchaseService.getById(id));
}
@RequestMapping(value = "purchase/tagged", method = RequestMethod.GET)
@ResponseBody
public final List<Purchase> getTagged()
{
return RestPreconditions.checkNotNull(purchaseService.getTagged());
}
@RequestMapping(value = "purchase/pending", method = RequestMethod.GET)
@ResponseBody
public final List<Purchase> getPending()
{
return RestPreconditions.checkNotNull(purchaseService.getPending());
}
@RequestMapping(value = "purchase", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public void create(@RequestBody final Purchase entity)
{
RestPreconditions.checkRequestElementNotNull(entity);
purchaseService.addPurchase(entity);
}
}
购买型号:
@Entity
@XmlRootElement
public class Purchase implements Serializable
{
/**
*
*/
private static final long serialVersionUID = 6603477834338392140L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private Long pan;
public Long getId()
{
return id;
}
public void setId(Long id)
{
this.id = id;
}
public Long getPan()
{
return pan;
}
public void setPan(Long pan)
{
this.pan = pan;
}
}