@transactional 주석을 limsservice 'audit metod에 두지 않으면 감사 로그가 유지되지 않습니다. 그러나 persistenceService의 persist met는 allready이 주석을 가지고 있습니다. 왜이 주석을 넣어야합니까?Spring @ 트랜잭션 주석 사용법
@RequestMapping(value = "/lemf", method = RequestMethod.POST, headers = "Accept=application/json")
public
@ResponseBody
Lemf create(HttpServletResponse response, @RequestBody Lemf lemf) {
try {
Lemf l = limsService.findLemfByName(lemf.getName());
if (l == null) {
lemf= limsService.addLemf(lemf);
limsService.audit("User action",getRequestInfo(),"New lemf created.");
return lemf;
}
sendError(response, "Lemf Allready exist.");
} catch (ProviderException e) {
sendError(response, e);
}
return null;
}
public class PersistenceServiceImpl implements PersistenceService {
@Transactional(readOnly = false)
public <T extends Persistable> T persist(T obj) {
if (obj.getSystemId() != AbstractPersistable.UNSAVED_ID_VALUE) {
log.info("Updating... :" + obj);
T merged = em.merge(obj);
return merged;
} else {
em.persist(obj);
return obj;
}
}
}
public class LimsServiceImpl implements LimsService {
@Override
public Lemf addLemf(Lemf lemf) throws ProviderException {
return persistenceService.persist(lemf);
}
@Transactional
public void audit(String type,Pair<String,String > pair,String log) {
auditService. audit("User action", pair, "New lemf created.");
}
}