honzeland

          記錄點滴。。。

          常用鏈接

          統計

          Famous Websites

          Java

          Linux

          P2P

          最新評論

          2010年4月20日 #

          Interesting books read or being read

          Oracle Performance Tuning for 10gR2, Second Edition -- http://www.amazon.com/Oracle-Performance-Tuning-10gR2-Second/dp/1555583458

          posted @ 2011-04-07 15:30 honzeland 閱讀(203) | 評論 (0)編輯 收藏

          GAE Logging

          Official document: http://code.google.com/appengine/docs/java/runtime.html#Logging  
          Log4j configuration in production env:
          http://blog.xam.de/2010/03/logging-in-google-appengine-for-java.html 
          http://www.mail-archive.com/google-appengine-java@googlegroups.com/msg06396.html

          posted @ 2010-11-11 12:52 honzeland 閱讀(270) | 評論 (0)編輯 收藏

          Read a Stress Test Report

          Load Average: 

          1. http://www.teamquest.com/resources/gunther/display/5/index.htm
          2. 
          http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages (Great)

          posted @ 2010-11-05 14:16 honzeland 閱讀(277) | 評論 (0)編輯 收藏

          GAE Mapping

          Executing Simple Joins Across Owned Relationships

          posted @ 2010-10-27 13:27 honzeland 閱讀(252) | 評論 (0)編輯 收藏

          Servlet Mappings - rules, pattern....

          http://www.rawbw.com/~davidm/tini/TiniHttpServer/docs/ServletMappings.html

          posted @ 2010-10-22 22:41 honzeland 閱讀(288) | 評論 (0)編輯 收藏

          GWT-RPC in a Nutshell - go through the internal

          GWT-RPC in a Nutshell: http://www.gdssecurity.com/l/b/2009/10/08/gwt-rpc-in-a-nutshell/

          posted @ 2010-10-22 22:40 honzeland 閱讀(226) | 評論 (0)編輯 收藏

          [zz] Tuning Your Stress Test Harness

          HTTP://WWW.THESERVERSIDE.COM/NEWS/1365219/TUNING-YOUR-STRESS-TEST-HARNESS?ASRC=SS_CLA_315053&PSRC=CLT_81

          posted @ 2010-09-11 12:27 honzeland 閱讀(245) | 評論 (0)編輯 收藏

          GWT 2 Spring 3 JPA 2 Hibernate 3.5 Tutorial – Eclipse and Maven 2 showcase

          See details at: http://www.javacodegeeks.com/2010/07/gwt-2-spring-3-jpa-2-hibernate-35.html
          Executing Simple Joins Across Owned Relationships for gae: http://gae-java-persistence.blogspot.com/2010/03/executing-simple-joins-across-owned.html

          posted @ 2010-08-20 13:01 honzeland 閱讀(419) | 評論 (0)編輯 收藏

          Java remote invocation frameworks (RPC)

          1. Remote Method Invocation (RMI)

          2. Hessian

          3. Burlap

          4. HTTP invoker

          5. EJB

          6. JAX-RPC

          7. JMX

          posted @ 2010-06-09 14:25 honzeland 閱讀(252) | 評論 (0)編輯 收藏

          Tomcat Architecture Diagram

          zz from http://marakana.com/forums/tomcat/general/106.html


          Valve and Filter:
          "Valve" is Tomcat specific notion, and they get applied at a higher level than anything in a specific webapp. Also, they work only in Tomcat.

          "Filter" is a Servlet Specification notion and should work in any compliant servlet container. They get applied at a lower level than all of Tomcat's
          Valves.

          However, consider also the division between your application and the application  server. Think whether the feature you're planning is part of your application, or is it rather a generic feature of the application server, which could have uses in other applications as well. This would be the correct criteria to decide between Valve and Filter.

          Order for filter: The order in which they are defined matters. The container will execute the filters in the order in which they are defined.

          posted @ 2010-05-10 10:39 honzeland 閱讀(1543) | 評論 (0)編輯 收藏

          Hibernate Annotations

          Use one single table "blank_fields" for both A and B. "blank_fields" has fields: 'ref_id', 'blank_field', 'type'. 'type' is used to identify which entity the record belongs to. Use 'type' + 'ref_id' to specify the collection of elements for one entity.

          @Entity
          @Table(name 
          = "table_a")
          public class A {
              
          private Set<BlankField> blankFields = new HashSet<BlankField>();
             
              @CollectionOfElements
              @Fetch(FetchMode.SUBSELECT)
              @Enumerated(EnumType.ORDINAL)
              @JoinTable(name 
          = "blank_fields", joinColumns = { @JoinColumn(name = "ref_id") })
              @Cascade(value 
          = org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
              @Column(name 
          = "blank_field", nullable = false)
              @SQLInsert(sql 
          = "INSERT INTO blank_fields(ref_id, blank_field, type) VALUES(?,?,0)")
              @Where(clause 
          = "type=0")
              
          public Set<BlankField> getBlankFields() { // BlankField is an enum
                  
          return blankFields;
              }

              @SuppressWarnings(
          "unused")
              
          private void setBlankFields(Set<BlankField> blankFields) {
                  
          this.blankFields = blankFields;
              }
          // End B

          @Entity
          @Table(name 
          = "table_b")
          public class B {
              
          private Set<BlankField> blankFields = new HashSet<BlankField>();
             
              @CollectionOfElements
              @Fetch(FetchMode.SUBSELECT)
              @Enumerated(EnumType.ORDINAL)
              @JoinTable(name 
          = "blank_fields", joinColumns = { @JoinColumn(name = "ref_id") })
              @Cascade(value 
          = org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
              @Column(name 
          = "blank_field", nullable = false)
              @SQLInsert(sql 
          = "INSERT INTO blank_fields(ref_id, blank_field, type) VALUES(?,?,1)"// used for insert
              @Where(clause = "type=1"// used for query, if not @CollectionOfElements, such as @OneToMany, use @WhereJoinTable instead
              public Set<BlankField> getBlankFields() {
                  
          return blankFields;
              }

              @SuppressWarnings(
          "unused")
              
          private void setBlankFields(Set<BlankField> blankFields) {
                  
          this.blankFields = blankFields;
              }
          }

          當然還有其他的方式來實現上面的需求,上面采用的單表來記錄不同實體的associations(這兒是CollectionOfElements,并且返回的是Set<Enum>,不是Set<Embeddable>),然后用'type'來區分不同的實體,這樣做的好處是:數據庫冗余少,易于擴展,對于新的實體,只需加一個type值,而不需更改數據庫表結構。另外一種采用單表的方式是為每個實體增加新的字段,如
          "blank_fields": 'a_id', 'b_id', 'blank_field', a_id reference table_a (id), b_id reference table_b (id). 這樣在映射的時候更簡單,
          對于A,映射為
          @JoinTable(name = "blank_fields", joinColumns = { @JoinColumn(name = "a_id") })
          對于B,映射為
          @JoinTable(name = "blank_fields", joinColumns = { @JoinColumn(name = "b_id") })
          這樣作的缺點是:帶來了數據庫冗余,對于blank_fields來講,任一條記錄,a_id和b_id中只有一個不為null。當多個實體共用這個表時,用上面的方法更合理,如果共用實體不多時,這種方法更方便。

          posted @ 2010-04-20 17:20 honzeland 閱讀(455) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 峨边| 临清市| 巴南区| 河南省| 平山县| 沁阳市| 绵竹市| 札达县| 赤城县| 德化县| 潞城市| 潞西市| 旺苍县| 南汇区| 高台县| 安溪县| 姚安县| 晋城| 桓台县| 揭西县| 建平县| 陆丰市| 丰原市| 哈尔滨市| 特克斯县| 阜宁县| 醴陵市| 阿勒泰市| 色达县| 仲巴县| 平安县| 伊宁市| 广西| 镇雄县| 广昌县| 石台县| 兰西县| 麻栗坡县| 烟台市| 历史| 堆龙德庆县|