Aplicando Clean Code e DDD em entidades Hibernate/JPA

Aplicando Clean Code e DDD em entidades Hibernate/JPA

Palestra apresentada no TDC2013 em Florianópolis

Objetos bem encapsulados, uso adequado de herança, imutabilidade de objetos, princípios de código limpo (SOLID) e prática do Effective Java não são tão usuais quanto se gostaria em equipes de desenvolvimento atuais. A maioria dos desenvolvedores se esforça, mas tem grandes dificuldades em aplicar estas técnicas em sistemas com entidades mutáveis JPA (ou Hibernate). Esta palestra apresentará algumas lições aprendidas em como aplicar estas técnicas num ambiente JavaEE utilizando entidades JPA (ou Hibernate). Também avaliaremos como estas práticas podem ser aplicadas em outras implementações de JPA e JPA 2.1.

Código disponível em https://github.com/yanaga/clean-jpa

14493d3489b1441918bfddfe298415d9?s=128

Edson Yanaga

May 25, 2013
Tweet

Transcript

  1. Aplicando Clean Code e DDD em entidades Hibernate/JPA Edson Yanaga

    @edsonyanaga
  2. Edson Yanaga • Bacharel em Ciência da Computação/UEM • Mestre

    em Engenharia Elétrica/UTFPR • Desenvolvedor Java desde 1997 • Administrador Unix desde 1999 • Líder Técnico na Produtec desde 2012 • Instrutor Líder da GlobalCode desde 2012
  3. Certificações • Oracle Certified Professional, Java Platform, Enterprise Edition 6

    Enterprise JavaBeans Developer • Sun Certified Enterprise Architect for the Java Platform,Enterprise Edition 5 (i) • Certified ScrumMaster • Sun Certified Developer for Java Web Services 5 • Sun Certified Specialist for NetBeans IDE • Sun Certified Web Component Developer for J2EE 1.4 • Sun Certified Programmer for Java 2 Platform 1.4
  4. Software é artesanal

  5. Ou não?

  6. Software Craftsmanship

  7. Deus?

  8. None
  9. Nós não precisamos de mais programadores!

  10. O que você sabe/ aprendeu sobre OO?

  11. Herança Polimorfismo Encapsulamento

  12. Herança Polimorfismo Encapsulamento

  13. public class Pessoa { private String nome; private String cpf;

    private String telefone; private Date nascimento; }
  14. Code Smells

  15. Primitive Obsession

  16. None
  17. public class Pessoa { private String nome; private Cpf cpf;

    private Telefone telefone; private Date nascimento; }
  18. Tell, dont’ ask

  19. What if...

  20. Null Object

  21. None
  22. Cuide do seu código.

  23. Software melhor, mundo melhor

  24. Edson Yanaga edson@yanaga.com.br @edsonyanaga www.yanaga.com.br