2009-04-18 9 views
2

는 다음과 지속성 구조 DataNucleus를 사용하여 응용 프로그램을 생각 중 :DataNucleus : 트랜잭션을 커밋 할 때 자동으로 작업을 수행하려면 어떻게합니까?

을 당신이 만들어 (일)과 같은 두 가지 속성과 LASTUPDATE (일)이있는 클래스 : 당신이 자동으로 이러한 속성을 채우기 어떻게을 이 클래스의 객체가 커밋 될 때 적절한 값? 객체가 데이터베이스에 삽입 단이 변경되면 LASTUPDATE를 업데이트 할 때 적절한 값이 모두 설정 될 것이다 는 현재 시간 LASTUPDATE을 만들었다.

답변

3

나는 그것을 지금 알아 냈다.

당신은

PersistenceManager pm = pmf.getPersistenceManager(); 
pm.addInstanceLifecycleListener(new BasicEntityLifecycleListener(), null); 

은 내가하지 않았다 이는 DataNucleus Access Plaftorm manual의 해결책을 발견 ...으로 PersistenceManager를 InstanceLifecycleListener ...

public class BasicEntityLifecycleListener implements StoreLifecycleListener { 

    public void postStore(InstanceLifecycleEvent evt) { 
    } 

    public void preStore(InstanceLifecycleEvent evt) { 
     if((PersistenceCapable)evt.getSource() instanceof BasicEntity) { 
      BasicEntity obj = (BasicEntity)evt.getSource(); 
      Date now = new Date(); 
      if(JDOHelper.isNew(obj)) 
       obj.setCreated(now); 
      obj.setLastUpdate(now); 
     } 
    } 
} 

을 만든 다음 내에서 등록해야 지금까지 인정 받았다. 온라인 매뉴얼은 나에게 조금 복잡해 보인다.