আমি স্প্রিং বুট ব্যবহার করে একটি রেস্ট এপিআই তৈরি করছি এবং আমি অনুরোধ ইনপুটগুলি বৈধ করতে হাইবারনেট বৈধতা ব্যবহার করছি।
তবে আমার অন্যান্য ধরণের বৈধতাও প্রয়োজন, উদাহরণস্বরূপ যখন আপডেটের ডেটা চেক করা দরকার, যদি কোম্পানির আইডি উপস্থিত না থাকে তবে আমি একটি কাস্টম ব্যতিক্রম ছুঁড়ে দিতে চাই।
এই বৈধতা পরিষেবা স্তর বা নিয়ামক স্তরে অবস্থিত হওয়া উচিত?
পরিষেবা স্তর:
public Company update(Company entity) {
if (entity.getId() == null || repository.findOne(entity.getId()) == null) {
throw new ResourceNotFoundException("can not update un existence data with id : "
+ entity.getId());
}
return repository.saveAndFlush(entity);
}
নিয়ামক স্তর:
public HttpEntity<CompanyResource> update(@Valid @RequestBody Company companyRequest) {
Company company = companyService.getById(companyRequest.getId());
Precondition.checkDataFound(company,
"Can't not find data with id : " + companyRequest.getId());
// TODO : extract ignore properties to constant
BeanUtils.copyProperties(companyRequest, company, "createdBy", "createdDate",
"updatedBy", "updatedDate", "version", "markForDelete");
Company updatedCompany = companyService.update(company);
CompanyResource companyResource = companyAssembler.toResource(updatedCompany);
return new ResponseEntity<CompanyResource>(companyResource, HttpStatus.OK);
}