Spring+Hibernate 조합 환경에서 단위테스트에 대한 토비님의 글.

AppFuse DAO Test 코드의 문제점

Rod Johnson의 Testing with Spring

Spring기반의 Hibernate DAO Unit Test 만들기

특히나 하이버네이트의 1차레벨 캐쉬 때문에

C/U/D 한 뒤 다시 객체를 읽어오는 경우 읽기전에 세션을 flush 해주어야 한다는 지적은

AppFuse 만든 Matt도 미처 몰랐던 사실!


spring-test 모듈의 AbstractTransactionalJUnit4SpringContextTests 사용환경에서는 아래처럼
만들어 놓고 중간중간 flushAndClearSession(); 해주면 될 듯. 
 @Autowired
 protected SessionFactory sessionFactory;

 protected Session getCurrentSession() {
  return SessionFactoryUtils.getSession(sessionFactory, true);
 }

 protected void flushSession() {
  getCurrentSession().flush();
 }

 protected void flushAndClearSession() {
  Session s = getCurrentSession();
  s.flush();
  s.clear();
 }



Posted by 에코지오
,
이클립스에서 static import 설정 팁.
http://whiteship.tistory.com/1416

스프링 2.5 레퍼런스의 테스트 부분.
http://static.springframework.org/spring/docs/2.5.x/reference/testing.html

스프링 샘플에 포함된 petclinic 테스트 소스 참고.
http://www.springframework.org/docs/petclinic.html

최범균님 스프링2.5 프로그래밍 책의 테스트 파트.


그 외.
http://mudchobo.tomeii.com/tt/233

http://otamot.tistory.com/61

http://cafe.naver.com/deve/2580
Posted by 에코지오
,
사실 JSF의 MVC와 Struts의 MVC가 다른 것은 알겠는데,

무엇이 어떻게 다른지 남들에게 설명하는데 애를 먹고는

MVC 자체를 내가 정확히 이해하지 못하고 있구나 좌절을 느꼈다.

그러다가 결정적으로 V에서 M을 참조하는 방식이 Pull / Push로 다름을 알고

아하 그렇구낭.... 좋아했는데,
 
오늘 또 PAC/HMVC를 보고는 헷갈리기 시작했다.
Posted by 에코지오
,

여러가지 개발 디자인 원칙

  • Convention over Configuration(CoC) : 설정보다 관례
  • DRY(Don’t Repeat Yourself) : 반복하지 마라
  • Design by Contract : 계약에 의한 디자인
  • Separation of Concerns(SoC) : 관심사항의 분리
  • High Cohesion, Low Coupling : 높은 응집, 낮은 결합
  • Separation of Policy and Implementation : 정책과 구현의 분리
  • YAGNI(You Ain't Gonna Need It) : 필요하기 전까진 만들지 마라
  • KISS(Keep It Simple Stupid) : 단순함을 유지하라
  • Hollywood Principle : 할리우드 원칙, Inversion of Control(의존관계역전)
  • 리스코프 치환 원칙 :
  • 단일책임의 원칙 :
  • 개방폐쇄 원칙 :


참고

송재하 : 소프트웨어 아키텍처 enabling 테크닉(소프트웨어 구축의 기본법칙)
위키백과사전 : http://en.wikipedia.org/wiki/List_of_software_development_philosophies


아참. RTFM 도 있었지... ^^

Posted by 에코지오
,

복잡하고 헷갈리는 XML 설정에 대한 대안들

  • XML GUI 도구 이용 : XML에디터, Struts Console, SpringIDE 등
  • 좀더 단순한 포맷 : Rails의 yml 포맷 등
  • 관습에 의한 코딩(CoC) : Rails, Grails
  • 메타데이터(Annotation/Attribute) : 소스에 설정을 포함. XDoclet, Java5
  • 코딩에 의한 설정 : Rails, Grails 등(스크립트 언어로 설정을 코딩)


 

Posted by 에코지오
,