Prof. Dr. Michael Helbig     Montag, 18.02.2013
   IT-Berater   Professor Mathematik & Informatik
   CCC   AOP   CDI   JPA
   CCC   AOP   CDI   JPA
   Wikipedia: http://de.wikipedia.org/wiki/Cross-Cutting_Concern
   Wikipedia: http://de.wikipedia.org/wiki/Cross-Cutting_Concern
   DZone: http://architects.dzone.com/articles/example-cross-cutting-concerns
   8 Core Concerns with 5 CCC    ◦   Database Access    ◦   Data Entities    ◦   Worker    ◦   Result Processing    ◦   P...
   HINWEIS: nur Servlet Container (Tomcat 7)   JSF mit Mojarra und Primefaces   CDI mit Weld   JPA mit Hibernate
   CCC   AOP   CDI   JPA
   Wikipedia:    http://de.wikipedia.org/wiki/Aspektorientierte_Programmierung
   CCC   AOP   CDI   JPA
   more than a DI framework…   JEE, auch Java-SE   DI (Hollywood Principle: „Don‘t call us, we‘ll    call you“)   Prod...
   JSR-299 auf JSR-330   Prominente Implementierungen    ◦ JBoss Weld (RI)    ◦ Apache Open WebBeans    ◦ Resin CanDI
   Annotation für das InterceptorBinding:@InterceptorBinding@Target({TYPE, METHOD})@Retention(RUNTIME)public @interface M...
   Interceptor-Implementierung@Interceptor @MyCCCpublic class MyCCCInterceptor {    @AroundInvoke    public Object doCCC(...
   Verwendung des Interceptors@MyCCCpublic class AnotherClass {…}- oder -@MyCCCpublic void myMethod(){…}
   Interceptor: DebugMethod   Interceptor: Transactional
   CCC   AOP   CDI   JPA
    @PostLoad -„After Select Trigger“, z.B. Filtern    @PrePersist - „Before Insert Trigger“    @PostPersist - „After I...
    Verwendung direkt in Entity:@Entitypublic class MyEntity {  …  Date creationDate;  …  @PrePersist  public void setCre...
    Separate EntityListener-Klassepublic class MyEntityListener {  @PrePersist  public void setCreationDate(Object entity...
   Account: User und TS ergänzen   AccountAudit: Schreiben des Logs
   Bspe von CCCs   Heraustrennung mittels AOP   AOP mit CDI   AOP mit JPA
Lightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPA
Upcoming SlideShare
Loading in …5
×

Lightweight AOP with CDI and JPA

1,114 views
1,001 views

Published on

1 Comment
0 Likes
Statistics
Notes
  • http://dbmanagement.info/Tutorials/Java.htm
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Views
Total views
1,114
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
9
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Lightweight AOP with CDI and JPA

  1. 1. Prof. Dr. Michael Helbig Montag, 18.02.2013
  2. 2.  IT-Berater Professor Mathematik & Informatik
  3. 3.  CCC AOP CDI JPA
  4. 4.  CCC AOP CDI JPA
  5. 5.  Wikipedia: http://de.wikipedia.org/wiki/Cross-Cutting_Concern
  6. 6.  Wikipedia: http://de.wikipedia.org/wiki/Cross-Cutting_Concern
  7. 7.  DZone: http://architects.dzone.com/articles/example-cross-cutting-concerns
  8. 8.  8 Core Concerns with 5 CCC ◦ Database Access ◦ Data Entities ◦ Worker ◦ Result Processing ◦ Process Flow Manager ◦ Email/Notification ◦ Error Handling ◦ Logging
  9. 9.  HINWEIS: nur Servlet Container (Tomcat 7) JSF mit Mojarra und Primefaces CDI mit Weld JPA mit Hibernate
  10. 10.  CCC AOP CDI JPA
  11. 11.  Wikipedia: http://de.wikipedia.org/wiki/Aspektorientierte_Programmierung
  12. 12.  CCC AOP CDI JPA
  13. 13.  more than a DI framework… JEE, auch Java-SE DI (Hollywood Principle: „Don‘t call us, we‘ll call you“) Producer Methods (Factory-Method-Pattern) Events (lokales Messaging) Interceptors (AOP) Decorators (Decorator-Pattern, „domainnahes“ AOP)
  14. 14.  JSR-299 auf JSR-330 Prominente Implementierungen ◦ JBoss Weld (RI) ◦ Apache Open WebBeans ◦ Resin CanDI
  15. 15.  Annotation für das InterceptorBinding:@InterceptorBinding@Target({TYPE, METHOD})@Retention(RUNTIME)public @interface MyCCC {}
  16. 16.  Interceptor-Implementierung@Interceptor @MyCCCpublic class MyCCCInterceptor { @AroundInvoke public Object doCCC(InvocationContext context) { Object result = null; // logic before method call … // method call result = context.proceed(); // logic after method call  Aktivierung in beans.xml (Reihenfolge!) … <beans> return result; } <interceptors>} <class>de.bigdev.MyCCCInterceptor</class> </interceptors> </beans>
  17. 17.  Verwendung des Interceptors@MyCCCpublic class AnotherClass {…}- oder -@MyCCCpublic void myMethod(){…}
  18. 18.  Interceptor: DebugMethod Interceptor: Transactional
  19. 19.  CCC AOP CDI JPA
  20. 20.  @PostLoad -„After Select Trigger“, z.B. Filtern @PrePersist - „Before Insert Trigger“ @PostPersist - „After Insert Trigger“ @PreUpdate -„Before Update Trigger“ (Dirty Check) @PostUpdate - „After Update Trigger“ (Dirty Check) @PreRemove - „Before Delete Trigger“ @PostRemove - „After Delete Trigger“
  21. 21.  Verwendung direkt in Entity:@Entitypublic class MyEntity { … Date creationDate; … @PrePersist public void setCreationDate() { this.creationDate = new Date(); } }}
  22. 22.  Separate EntityListener-Klassepublic class MyEntityListener { @PrePersist public void setCreationDate(Object entity) { if (entity instanceof Person) { Person person = (Person) entity; person.setCreatedAt(new Date()); }}} Registrierung an den Entities@Entity@EntityListeners(MyEntityListener.class)public class Person { … }
  23. 23.  Account: User und TS ergänzen AccountAudit: Schreiben des Logs
  24. 24.  Bspe von CCCs Heraustrennung mittels AOP AOP mit CDI AOP mit JPA

×