2007年6月21日 星期四

Wicket 心得

1. 建立簡單的Ajax component: 對一般的component加上AjaxEventBehavior來達成,範例:
 DropDownChoice choice=new DropDownChoice(...);
choice.add(new AjaxEventBehavior("onchange") {
protected void onEvent(AjaxRequestTarget target) {
System.out.println("ajax here!");
}
}
或是自行繼承AbstractDefaultAjaxBehavior並進行必要改寫onComponentTag()與respond()來加入所需要的javascript與處理行為
2. 較複雜的Ajax component可以透過組合多個component來達成,可以參考wicket-extension裡的AjaxEditableLabel
3. 部份特效可以借助CSS來達成,例如tooltip
4. Override onComponentTag()可以修改tag本身的資訊,包含name,也可以加上其他attribute
5. 目前wicket中提供的大部分component都已經將onComponentTag()與onComponentTagBody()定義成final,所以要加上額外的attribute必須使用AttributeModifier或是AttributeAppender
6. ListView不只可以使用於table與<div>,亦可使用於<span>。若是需要橫向排列的效果,便需要使用<span>

2007年6月10日 星期日

Hibnerate Annotation心得筆記

1. 原來JPA的Annotation的定義:@OneToOne跟@ManyToOne都是預設是Fetch.Eager
2. Hibernate Annotation可以用@LazyToOne來設定@OneToOne或是@ManyToOne的Lazy fetch的方式(通常都是用LazyToOneOption.PROXY吧)。但是,對於@OneToOne來說,怎麼設定似乎都是無用的,Hibernate的實做,似乎還是會進行non-lazy fetch.
3. 若是@ManyToOne設定為fetch=FetchMode.Lazy的話,則該relation必須在使用Hibernate.initialize()之後,或是在查詢時加上fetch的語法才能在session關閉後取得.
4. 目前用Hibernate annotation extension中的@Index想幫一些relation加上db index,但是似乎不行。

結論,JPA的定義與原本的Hibernate作法似乎是有不少差異,而且就功能上來看,JPA的annotation比起Hibernate也就為不足