Curso Spring 3 + Hibernate

63
Spring 3, Hibernate, Maven Sistemas Humanos

description

Curso de spring3, El código de acompañamiento está aca https://github.com/iamedu/SpringHibernate

Transcript of Curso Spring 3 + Hibernate

Page 1: Curso Spring 3 + Hibernate

Spring 3, Hibernate, Maven

Sistemas Humanos

Page 2: Curso Spring 3 + Hibernate

Maven•Sistema de Automatización•Construcción de proyectos•Prueba de proyectos•Manejo de dependencias•Plugins

Page 3: Curso Spring 3 + Hibernate

Spring•Spring es un framework Open Source•Creado por Rod Johnson (Export One-on-One J2EE Design and Development)•Un nuevo comienzo después del invierno de J2EE

Page 4: Curso Spring 3 + Hibernate

¿Por qué Spring?•Reducir la complejidad de J2EE•Spring usa POJOs (Plain Old Java Objects)•(Spring = Java Beans) !== EJB

Page 5: Curso Spring 3 + Hibernate

Características•NO intrusivo•Promover buen diseño•Fácilmente "probable"

Page 6: Curso Spring 3 + Hibernate

Características•Fácilmente configurable (XML, anotaciónes)•Spring ES un contenedor, administra el ciclo de vida de nuestros objetos.•Desacomplamiento por medio de IoC (Inversion of Control) y AOP (Aspect Oriented Programming)

Page 7: Curso Spring 3 + Hibernate

Inversion of Control

Main

Dependencias

Dependencias

Main

Page 8: Curso Spring 3 + Hibernate

Dependency Injection•Spring•Guice•PicoContainer•JSR 299 (Contexts and Dependency Injection for the Java EE Platform)

Page 9: Curso Spring 3 + Hibernate

AOPTrámi

teAlta Repor

te

Autorización

Page 10: Curso Spring 3 + Hibernate

Módulos de Spring

Page 11: Curso Spring 3 + Hibernate

Core Spring•Dependency Injection•JNDI•Scheduling•EJB

Page 12: Curso Spring 3 + Hibernate

Spring AOP•Aspectos de Spring•Desacomplar temas transversales

Page 13: Curso Spring 3 + Hibernate

Acceso a datos•Abstraer JDBC•JPA, JDO, iBatis, y Hibernate•JMS•Object to XML Mapping

Page 14: Curso Spring 3 + Hibernate

Web•Integracion con Servlets•Integración con Java Portlet API•RMI•Hessian•Burlap•JAX-WS•Spring HTTP-Invoker

Page 15: Curso Spring 3 + Hibernate

Testing•jUnit•Mockito•Acceso a datos•Transacciónes

Page 16: Curso Spring 3 + Hibernate

Spring Instrumentation

Page 17: Curso Spring 3 + Hibernate

Más alla de las bases•Spring Web Flow•Spring Web Services•Spring Security•Spring Integration•Spring Batch•Spring Social•Spring Mobile (Spring Android)

Page 18: Curso Spring 3 + Hibernate

Más allá de las bases•Spring Dynamic Modules•Spring LDAP•Spring Rich Client•Spring.NET•Spring Flex•Spring ROO

Page 19: Curso Spring 3 + Hibernate

Volviendo a la teoría...

Page 20: Curso Spring 3 + Hibernate

Contenedores de Spring•Bean Factory

•XmlBeanFactory•ApplicationContext (Ciclo de Vida)•FilesystemXmlApplicationContext•ClassPathXmlApplicationContext•WebXmlApplicationContext

Page 21: Curso Spring 3 + Hibernate

BeanFactory•Ambientes reducidos•Construye Beans•Inyecta Beans

Page 22: Curso Spring 3 + Hibernate

Application Context•BeanFactory +•Ciclo de vida•Eventos•BeanPostProcessor

Page 23: Curso Spring 3 + Hibernate

BeanPostProcessor

PostProcessor

PROXY

Page 24: Curso Spring 3 + Hibernate

Manejando la vida•init-method = InitializingBean•destroy-method = DisposableBean

Page 25: Curso Spring 3 + Hibernate

Scopes•Singleton, Prototype•Session, Request (Servlet)•GlobalSession (Portlets)

Page 26: Curso Spring 3 + Hibernate

Construyendo Beans•Constructor•Static Factory•Bean Factory

Page 27: Curso Spring 3 + Hibernate

Constructornew Bean(blah)

=

<bean id='mibean' class='Bean' />

Page 28: Curso Spring 3 + Hibernate

Static Factoryclass Static { public static Bean buildObject() { ... }}Static.buildObject()=<bean class="Static" factory-method="buildObject" />

Page 29: Curso Spring 3 + Hibernate

Bean Factoryclass Bean { public NewBean buildObject() { ... }}new Bean().buildObject() =<bean id='factoryBean' class='Bean' /><bean factory-bean="factoryBean" factory-method="buildObject" />

Page 30: Curso Spring 3 + Hibernate

Autowire•byName•byType•byConstructor•autodetect•byConstructor•byType

Page 31: Curso Spring 3 + Hibernate

¡Anotación!

Page 32: Curso Spring 3 + Hibernate

Autowire recargado•@Autowire•@Qualifier

Page 33: Curso Spring 3 + Hibernate

Autowire estandarizado•@Inject

•@Qualifier•@Named•Inyección de proveedores

Page 34: Curso Spring 3 + Hibernate

¿Inyección de proveedores?

Page 35: Curso Spring 3 + Hibernate

Component Lookup•@Component•@Scope•@Controller (WebMVC)•@Repository (DAO)•@Service = @Component (Facade)

Page 36: Curso Spring 3 + Hibernate

Java en vez de XML

Page 37: Curso Spring 3 + Hibernate

Simplificando (JMS)•JmsTemplate•Sin EJB•MessageCreator para generar mensajes.

Page 38: Curso Spring 3 + Hibernate

Acceso a DatosHibernate + JPA

Page 39: Curso Spring 3 + Hibernate

Persistencia en java•EJB•JDO•JPA

Page 40: Curso Spring 3 + Hibernate

JPA•JPA es un estándar•JPA sólo es la manera de llamar a...•Hibernate•TopLink•Kopo•OpenJPA

Page 41: Curso Spring 3 + Hibernate

Hibernate•JPA está basado en Hibernate•Lucene•Ehcaché

Page 42: Curso Spring 3 + Hibernate

Desventajas•No soporta queries nativos nombrados

Page 43: Curso Spring 3 + Hibernate

Entendiendo a JPAEntityManagerFacto

ry

EntityManager

Query Entity Transaction

Page 44: Curso Spring 3 + Hibernate

Configurando a JPA•META-INF/persistence.xml

Page 45: Curso Spring 3 + Hibernate

Configurando a JPA

Page 46: Curso Spring 3 + Hibernate

Entidades•@Entity•Ciclo de vida•No existe•Nuevo•Manejado•Eliminado•Separado

Page 47: Curso Spring 3 + Hibernate

Ciclo de vida•@PrePersist•@PostPersist•@PreLoad•@PostLoad•@PreRemove•@PostRemove

Page 48: Curso Spring 3 + Hibernate

Caché (ehcache)•Sobre las entidades anotadas con @Entity•@Cache(usage = CacheConcurrencyStrategy.•READ_WRITE•READ_ONLY•NONSTRICT_READ_WRITE

Page 49: Curso Spring 3 + Hibernate

ehcache + hibernatepropiedades de proveedor

en persistence.xml

Page 50: Curso Spring 3 + Hibernate

ehcache.xml

Page 51: Curso Spring 3 + Hibernate

Lucene + Hibernate Search•@Field =

@Indexed•@Boost

Page 52: Curso Spring 3 + Hibernate

persistence.xmlpropiedades de proveedor

en persistence.xml

Page 53: Curso Spring 3 + Hibernate

Indexando y Consultando

Page 54: Curso Spring 3 + Hibernate

De vuelta a Spring (MVC)

Page 55: Curso Spring 3 + Hibernate

Arquitectura

Dispatcher Servlet

HandlerMappin

g

View Resolve

r

Controller

Page 56: Curso Spring 3 + Hibernate

View Resolver•InternalResourceViewResolver•TilesViewResolver•JasperReportsViewResolver•VelocityViewResolver•FreeMarkerViewResolver

Page 57: Curso Spring 3 + Hibernate

HandlerMapping•SimpleUrlHandlerMapping•ControllerBeanNameHandlerMapping•<mvc:annotation-driven />

Page 58: Curso Spring 3 + Hibernate

RequestMapping•@RequestMapping•value={'/url/','/otra/url'}•method={RequestMethod.GET, RequestMethod.POST}

Page 59: Curso Spring 3 + Hibernate

Pasando Variables•@RequestParam(required=false)•@PathVariable + '/url/{var}'

Page 60: Curso Spring 3 + Hibernate

i18n•ResourceBundleMessageSource•CookieLocaleResolver•AcceptHeaderLocaleResolver

Page 61: Curso Spring 3 + Hibernate

Validación•@Valid•@Size•@Pattern

Page 62: Curso Spring 3 + Hibernate

Spring Security•auto-config!•authentication-manager•user-service•@Secured :)

Page 63: Curso Spring 3 + Hibernate

¡Gracias!