2012-11-29 6 views
1

간단한 응용 프로그램을 작성하고 그것을 뒤범벅 적어보고 누군가가 이것을 설정하는 방법에 대한 조언을 구할 수 있는지 알고 싶었습니다.wicket 및 db 액세스에 대한 모범 사례

나는 개찰판 응용 프로그램을 가지고 있는데, 기본적으로 포럼 응용 프로그램 (예 : 방명록 방명록을 보았습니다)과 같은 것을 할 것입니다. 그러나 이러한 메시지를 데이터베이스에 보관하고 싶습니다. 나는 메시지를 표시하기 위해 listview (또는 아마 중계기)를 사용하고 싶다. 나는 db (mysql)과 테이블을 생성하고 그들을 위해 엔티티 객체를 생성했다.

wicket을 db와 인터페이스하는 가장 좋은 방법은 무엇입니까? 나는 loadabledetachablemodel이 필요하다고 생각하지만 제안에 개방적이다.

loadabledetachable 인터페이스를 구현하는 클래스를 만들고이 클래스의 데이터베이스와 트랜잭션을 수행해야합니까? DAO를해야합니까? DAO에서 메서드를 호출하여 모델의 데이터를로드합니까? 나는 예제를보고 있었고 이것을 수행하는 방법에 대해 혼란 스럽다. 나는 이미 개찰구와 전체 JPA 물건을 배우고 있으므로, 이것에 Spring과 같은 것을 던지기를 정말로 원하지는 않습니다. 나는 추가/업데이트/삭제할 수 있어야하고 나는 이것을하기에 가장 좋은 곳이 어디인지 알아 내려고 노력하고있다.

도움이나 조언을 주시면 감사하겠습니다.

답변

1

Model 또는 PropertyModel과 같은 가장 간단한 모델을 사용하는 것이 좋습니다. 페이지를 렌더링 할 때 데이터베이스의 데이터를 모델로로드하고 데이터를 표시하십시오. 사용자가 업데이트 버튼을 누르면 모델에서 새 값을 읽고 데이터베이스로 업데이트합니다.

족보 프레임 워크의 기본 부분을 여전히 배우고 있으므로 지금은 LoadableDetachableModel이 필요하지 않습니다.

DAO 파트에 관해서, 위젯 학습에 집중하고 싶다면 DAO 클래스가없는 간단한 CRUD 애플리케이션을 만들면됩니다. 어쨌든 나중에 언제라도 DAO 클래스로 해당 코드를 리팩토링 할 수 있습니다. 그러나 웹 애플리케이션 개발을 배우려는 경우 DAO 클래스를 만들고 Multiple Tier Architecture의 개념에 대해 알아야합니다.

0

가 독일어로 꽤 좋은 설명입니다 -하지만 코드가 영어로되어 있습니다 :

이 솔루션은() 클래스 이름을 저장하고로드에 조회를 수행하여 EntityFacade을 유지하기 위해 LoadableDetachableModel를 확장합니다.

는 여기에서 예를 생각 : http://hotchpotch-blog.de/2012/10/09/wrapping-eines-ejb-in-ein-loadabledetachablemodel/

이 (준비하지 생산)과 같이 확장 될 수 있습니다

public class EjbModel extends LoadableDetachableModel { 

/** 
* Get the name of the EJBInterface type suitable for lookup. 
* 
*/ 
protected String ejbName; 

public EjbModel(EJBInterface bean){ 
    //store the bean so it will get detached 
    super(bean) 
    ejbName = bean.getSimpleName() + "Facade"; //not sure if + "Facade" is needed 
} 

@Override 
protected EJBInterface load() { 
    EJBInterface result = null; 
    try { 
     InitialContext ctx = new InitialContext(); 
     result = (EJBInterface) ctx.lookup("java:module/" + ejbName); 
    } catch (NamingException ex) { 
     Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "Error at JNDI lookup for " + getEjbName(), ex); 
    } 
    return result; 
} 
} 
+1

질문에 대답하기 위해 외부 링크를 사용하지 마십시오. 대답에 정보를 직접 입력하고 사용한 사이트에 대한 참조를 남겨 둡니다. – alandarev