2017-12-29 48 views
1

사용 사례는 다음과 같습니다. 최대 절전 모드를 사용하는 프로젝트를 상속했습니다. 지금 당장 집중하고있는 엔티티는이 연습의 목적 상 을 수정에 대해 닫았습니다. 연습의 목적은 레거시 엔티티의 사용을 새로운 요구 사항에 더 적합한 비 관련 구현으로 대체하는 것입니다.엔티티를 최대 절전 모드로 전환하려면 어떻게해야합니까?

목표는 이전 엔터티에서 새로운 으로 점진적으로 기능을 이동할 수있게하는 것입니다.. 이므로

은 기존 개체의 사용은 구성 마법

//... 

    final Session currentSession = sessionFactory().getCurrentSession(); 
    { 
     LegacyEntity oldAndBusted = get(currentSession, "12345"); 

     oldAndBusted.change(...); 

     put(oldAndBusted); 
    } 
} 

LegacyEntity get(final Session currentSession, String businessId) { 
    return (LegacyEntity) currentSession   
     .createQuery("from PurpleMonkeyDishwasher where businessId = ?") 
     .setParameter(0, "12345") 
     .uniqueResult(); 
} 

void put(final Session currentSession, LegacyEntity changed) { 
    currentSession.saveOrUpdate(changed); 
} 

같은 나는 새를 위해 유사한 코드를 준비하려면 어떻게 일부 hbm.xml 파일

<class name="LegacyEntity" table="PurpleMonkeyDiswasher"> 
    <!-- stuff --> 
</class> 

을 오프 숨겨진 보인다 동일한 테이블에 매핑 된 엔티티

아직 코드 경로를 손상시키지 않고 동일한 프로세스에서 LegacyEntity를 사용합니까?

+1

마이그레이션하는 동안 매우주의해야합니다. – Kayaman

답변

0

"지금 당장 집중하고있는 실체는이 실습의 목적 상 수정을하지 않았습니다 ... 목표는 이전 실체에서 새 점진적으로 기능을 옮길 수있게하는 것입니다." 나는이 모순을 발견한다. 클래스를 다른 클래스로 대체 할 때 나는 항상 1) 이전 클래스 API를 새 클래스 API의 서브 세트로 점진적으로 변경하고, 2) 이전 클래스의 이름을 새 클래스와 동일한 이름 및 패키지로 변경하고, 3) 이전 클래스 제거 (2 단계에서 이름이 변경됨) 이 모든 작업을 수행하면서 IDE의 리팩토링 기능에 최대한 의지합니다.