모든 CRUD DAO에 대한 추상 baseclass를 작성하면됩니다. 기본 인터페이스는 콜백 메커니즘의 일종에 걸릴 것입니다,이 같은 보일 것이다 :
public abstract class AbstractCrudDao<T> {
public void create(T t, CompleteCallback completeCallback)
{
create(t);
completeCallback.onComplete();
}
public abstract void create(T t);
//same for read, update, delete
public interface CompleteCallback {
void onComplete();
}
}
분명히 이것이 완료 예에서 멀리이다,하지만 난 그게위한 트리거로 콜백을 활용하는 아이디어를 전시 생각 완성. onException 이벤트를 수신하기 위해 인터페이스를 추가로 확장 할 수 있습니다.
Spring의 트랜잭션 관리를 사용하는 경우 트랜잭션의 내부 또는 외부에서 콜백 이벤트를 수행할지 여부에 따라 추가 조정이 필요할 수 있습니다.
개인적으로 DAO 코드를 소유하지 않는 한 개인적으로는 AOP를 사용하지 않겠지 만, 그렇다고하더라도 다른 메커니즘이 선호 될 수 있습니다.
업데이트 해 주셔서 감사합니다. 그러나 하위 클래스에서 create 메소드의 구현을 어떻게 지정할 수 있습니까? CarDao와 같은? 추상적 인 DAO에서 모든 것을 지정하는 경우 이것이 어떻게 작동하는지 알지만 하위 클래스의 실제 로직을 구현해야 할 때는 그렇지 않습니다. – LuckyLuke
업데이트되어 더 잘 작동하는지 알려주세요. –
그게 내가 원하는 것을 더 많이 보았습니다. 고마워요! 콜백의 예가 나쁘지는 않지만 유연성과 API 디자인에 대해 생각하고있었습니다. 하지만 예를 들어 InsertListeners 또는 UpdateListeners 만 호출하는 방법은 무엇입니까? 다른 버전의 CrudAction을 만들고 instanceof 연산자를 사용합니까? – LuckyLuke