Download - Generic DAOs With Hades

Transcript
Page 1: Generic DAOs With Hades

HadesOliver Gierke - Synyx GmbH & Co. KG

„Simple things should be simple, complex things should be possible.“Alan Kay

Page 2: Generic DAOs With Hades

www.devoxx.com

Speaker

■ Oliver Gierke - [email protected]

■ Software Architect @ Synyx GmbH & Co. KG

■ JavaEE, Spring (beyond the obvious)

■ Financial industry, automotive

■ Hades project lead

■ olivergierke

Page 3: Generic DAOs With Hades

Java Persistence API

Page 4: Generic DAOs With Hades
Page 5: Generic DAOs With Hades

www.devoxx.com

GenericDao

GenericJpaDao

CRUD

Page 6: Generic DAOs With Hades

www.devoxx.com

Demo I

Page 7: Generic DAOs With Hades

Query methods

Page 8: Generic DAOs With Hades

www.devoxx.com

1. Create interface2. Declare methods3. Tune queries

Page 10: Generic DAOs With Hades

Derive

User findByUsername( String username);

Page 11: Generic DAOs With Hades

Named Query

@NamedQuery(name=“User.findByLastname“ query=“...“)

List<User> findByLastname(...);

Page 12: Generic DAOs With Hades

@Query

@Query(„from User u where ...“)List<User> findByLastname(...);

Page 13: Generic DAOs With Hades

www.devoxx.com

Demo II

Page 14: Generic DAOs With Hades

PaginationSorting

Page 15: Generic DAOs With Hades

@Query(„from User u where u.lastname = ?“)Page<User> findByLastname( String lastname, Pageable pageable);

Page 16: Generic DAOs With Hades

@Param(„name“)

Page 17: Generic DAOs With Hades

@Query(„from User u where u.lastname = :lastname or u.firstname = :firstname“)

List<User> findByLastOrFirstname(@Param(„lastname“) String lname,@Param(„firstname“) String fname)

Page 18: Generic DAOs With Hades

@Modifying

Page 19: Generic DAOs With Hades

@Modifying@Query(„...“)int undefaultAllBut(Role role);

Page 20: Generic DAOs With Hades

Spring integration

Page 21: Generic DAOs With Hades

<hades:dao-config base-package=“foo.**.dao“ />

Page 22: Generic DAOs With Hades

Spring IDE Plugin

Page 23: Generic DAOs With Hades

Custom DAO code

Page 25: Generic DAOs With Hades

www.devoxx.com

Demo III

Page 26: Generic DAOs With Hades

Additionalsupport

Page 27: Generic DAOs With Hades

Auditing

Page 28: Generic DAOs With Hades

Created? Modified?Who? When?

Page 29: Generic DAOs With Hades

Domain base classes

Page 30: Generic DAOs With Hades

Questions?

WTF

Page 31: Generic DAOs With Hades

www.devoxx.com

Meta stuff

■ Current version: 1.0 (stable 1.1-snapshot)

■ Apache license 2.0

■ http://hades.synyx.org