Hibernate EventListeners in Spring konfigurieren

Wer in Spring Hibernate Event Listener eintragen will macht dies folgendermassen (vergleiche auch Spring Dokumentation Kapitel 12.2.2):

<beans>
  <bean id="loadListener" class="org.nautsch.MyLoadEventListener" />

  <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
    <property name="url" value="jdbc:hsqldb:hsql://localhost:9001"/>
    <property name="username" value="sa"/>
    <property name="password" value=""/>
  </bean>

  <bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="myDataSource"/>
    <property name="mappingResources">
      <list>
        <value>product.hbm.xml</value>
      </list>
    </property>
    <property name="hibernateProperties">
      <value>
        hibernate.dialect=org.hibernate.dialect.HSQLDialect
      </value>
    </property>
    <property name="eventListeners">
        <map>
            <entry key="load"><ref local="loadListener" /></entry>
        </map>
    </property>
  </bean>

</beans>

Wer wissen möchte welche Schlüssel es für die EventListener gibt sollte sich mal den Source der Klasse org.hibernate.event.EventListeners anschauen. Dort gibt es einen statischen Block der alle Keys mit den dazugehörigen Typen definiert:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
       static {
                eventInterfaceFromType = new HashMap();
 
                eventInterfaceFromType.put("auto-flush", AutoFlushEventListener.class);
                eventInterfaceFromType.put("merge", MergeEventListener.class);
                eventInterfaceFromType.put("create", PersistEventListener.class);
                eventInterfaceFromType.put("create-onflush", PersistEventListener.class);
                eventInterfaceFromType.put("delete", DeleteEventListener.class);
                eventInterfaceFromType.put("dirty-check", DirtyCheckEventListener.class);
                eventInterfaceFromType.put("evict", EvictEventListener.class);
                eventInterfaceFromType.put("flush", FlushEventListener.class);
                eventInterfaceFromType.put("flush-entity", FlushEntityEventListener.class);
                eventInterfaceFromType.put("load", LoadEventListener.class);
                eventInterfaceFromType.put("load-collection", InitializeCollectionEventListener.class);
                eventInterfaceFromType.put("lock", LockEventListener.class);
                eventInterfaceFromType.put("refresh", RefreshEventListener.class);
                eventInterfaceFromType.put("replicate", ReplicateEventListener.class);
                eventInterfaceFromType.put("save-update", SaveOrUpdateEventListener.class);
                eventInterfaceFromType.put("save", SaveOrUpdateEventListener.class);
                eventInterfaceFromType.put("update", SaveOrUpdateEventListener.class);
                eventInterfaceFromType.put("pre-load", PreLoadEventListener.class);
                eventInterfaceFromType.put("pre-update", PreUpdateEventListener.class);
                eventInterfaceFromType.put("pre-delete", PreDeleteEventListener.class);
                eventInterfaceFromType.put("pre-insert", PreInsertEventListener.class);
                eventInterfaceFromType.put("pre-collection-recreate", PreCollectionRecreateEventListener.class);
                eventInterfaceFromType.put("pre-collection-remove", PreCollectionRemoveEventListener.class);
                eventInterfaceFromType.put("pre-collection-update", PreCollectionUpdateEventListener.class);
                eventInterfaceFromType.put("post-load", PostLoadEventListener.class);
                eventInterfaceFromType.put("post-update", PostUpdateEventListener.class);
                eventInterfaceFromType.put("post-delete", PostDeleteEventListener.class);
                eventInterfaceFromType.put("post-insert", PostInsertEventListener.class);
                eventInterfaceFromType.put("post-commit-update", PostUpdateEventListener.class);
                eventInterfaceFromType.put("post-commit-delete", PostDeleteEventListener.class);
                eventInterfaceFromType.put("post-commit-insert", PostInsertEventListener.class);
                eventInterfaceFromType.put("post-collection-recreate", PostCollectionRecreateEventListener.class);
                eventInterfaceFromType.put("post-collection-remove", PostCollectionRemoveEventListener.class);
                eventInterfaceFromType.put("post-collection-update", PostCollectionUpdateEventListener.class);
                eventInterfaceFromType = Collections.unmodifiableMap( eventInterfaceFromType );
        }
  • Share/Bookmark

Trackbacks & Pingbacks 1

  1. From Hibernate Event Listeners – Mappings for Spring « Chris' Tech Blog on 21 Aug 2010 at 10:20

    [...] http://www.nautsch.net/2008/05/16/hibernate-eventlisteners-in-spring-konfigurieren/ [...]

Post a Comment

You must be logged in to post a comment.