Está en la página 1de 167

Java

Enterprise Edition
Java SE
(Java Standard Edition)
Java EE
(Java Enterprise Edition)
Java EE vs. Java SE
Java SE

Vista? Controlador Modelo


JEE (Java Enterprise Edition)

Nace porque se necesitan


aplicaciones distribuidas,
transaccionales y portables que
usan

todas las capacidades de un servidor


JEE (Java Enterprise Edition)

Servidor
velocidad, seguridad, confiabilidad
Servidores de Aplicaciones

WebLogic
Oralce
JBoss Enterprise Application Platform
Red Hat
WebSphere
IBM
Servidores de Aplicaciones

JOnAS
ObjectWeb
Wildfly
Versin de JBoss por la comunidad
GlassFish
Oracle
Gernnimo y TomEE
Apache
Apache Tomcat
Apache Tomcat
Software que se implementa en un servidor web exclusivo para
trabajar con Java Servlets
Contenedor Web vs. Servidor Web

Contenedor Web
Ejecucin de Servlets ()

Servidor Web
Ejecuta muchos tipos de aplicaciones web, recursos, gestiona
peticiones, y adems tambin puede tener un Contenedor Web
IDE para Java EE
Hola mundo!
MVC Java EE
Java SE

Vista? Controlador Modelo


Terminal Clases java POJO
Java EE

Vista Controlador Modelo


html / jsp Servlets POJO / Bean
JSP
JSP
Java Server Pages
Diseado para crear pginas web
dinmicas
HTML + JavaScript + CSS +Java
<% Date d = new Date() %>
Corriendo la
Aplicacin
Apache Tomcat
Apache Tomcat
https://tomcat.apache.org/download-80.cgi#8.0.42
Servlet
Servlet
Clase con super poderes
Hereda de HttpServlet
Tiene los mtodos
doGet
doPost
Bean
Bean
Al menos un Constructor sin
argumentos
Atributos de clase deben ser
privados
Sus propiedades deben ser
accesibles mediante mtodos
get y set
Debe ser serializable
Hola Login!
Empaquetados
War
WAR
Web application ARchive
Asistentes
inteligentes
Asistentes Inteligentes

Nos ayudan a crear proyectos basados en


plantillas
Descargan libreras de terceros (JAR)
Crean todos los componentes y los archivos
ejecutables, JAR, WAR, etc.
Maven
Maven

Es un proyecto de Apache
Configuracin y Construccin basado en XML
Project Object Model pom.xml
Describe el proyecto a construir
Dependencias
Compilacin del cdigo
Empaquetado
Maven - Estructura de archivos
Maven - Project Object Model pom.xml
Gradle
Gradle

Est basado en Groovy


Usa Domain Specified Language - Json
Gradle

build.gradle
Dependencias
Compilacin del cdigo
Empaquetado
Gradle - Estructura de archivos
Gradle - build.gradle
Aplicaciones
Orientadas a
Servicios
Orientadas a
presentacin
Genera sitios web dinmicos
Orientadas a servicios
Se enfocan solo en el backend y
usan el formato JSON como vista
Rest API
Nuestro IDE
Spring Tool Suite

Basado en Eclipse
Creado por la comunidad SpringSource
Plantillas de proyectos basados en
Spring
Integracin con Maven
https://spring.io/tools
La base del proyecto
Base de Datos
Diagramas
Hibernate
ORM
Object Relational Mapping
ORM - Object Relational Mapping

Es una herramienta de Mapeo


Objeto Relacional

Facilita el mapeo de atributos entre


una base de datos relacional y el
modelo de objetos
Hibernate

Camion
id int
matricula String
potencia double
tipo String
ORM Hibernate

Manipular los datos en la base


de datos, operando sobre
objetos.
ORM Hibernate

Busca solucionar el problema


de la diferencia entre los dos
modelos de datos
coexistentes en una
aplicacin
ORM Hibernate

Definir tipos de datos


Genera las sentencias SQL
Ayuda al manejo de los
resultados de las sentencias
SQL
Hibernate

@
Aplicacin Base de
hibernate.
cfg.xml
Annotations Datos

Hibernate
Configuracin
Hibernate
Hibernate integracin al IDE

Help -> Install New Software


Click en Add.
Ir al sitio:
http://download.jboss.org/jbosstools/
updates/stable/
Hibernate integracin al IDE

Escribir:

https://download.jboss.org/jbosstools/ne
on/stable/updates/
Hibernate integracin al IDE

Dentro de JBoss Web and Java EE


Development
Selecciona Hibernate Tools
Click en Siguiente
Mapeo en
Hibernate
Mapeo Hibernate

Para cada clase que queramos


persistir debemos crear un
archivo XML
hbm.xml
Infierno XML
Annotations
@
@Entity
Se aplica a la clase e indica que
esta clase Java es una entidad a
persistir
@Table
Se aplica a la clase e indica el
nombre de la tabla de la base de
datos donde se persistir la clase
@Column
Se aplica a una propiedad Java e
indica el nombre de la columna
de la base de datos en la que se
persistir la propiedad
@Id
Se aplica a una propiedad Java e
indica que este atributo es la
clave primaria
@GeneratedValue
Esta anotacin indica que
Hibernate deber generar el
valor de la clave primaria
Asociaciones
Hibernate
Uno a Uno
One to One
Unidireccional
Relaciones Hibernate - One to One

Un objeto tenga una


referencia a otro objeto de
forma que al persistirse el
primer objeto tambin se
persista el segundo.

@OneToOne(cascade=CascadeType.ALL)
Bidireccional
Relaciones Hibernate - One to One

Los dos objetos se persisten


mutuamente, ambos tienen
referencias uno de otro

@OneToOne(cascade=CascadeType.ALL)
Uno a Muchos
One to Many
Relaciones Hibernate - One to Many

Un objeto tenga una lista de


otros objetos de forma que al
persistirse el objeto principal
tambin se persista la lista de
objetos
@JoinColumn
El nombre de la columna que une
las tablas
Relaciones Hibernate - One to Many

Entity Owner
@OneToMany(mappedBy="entity", cascade = CascadeType.ALL)

Entity No Owner

@ManyToOne(optional = true, fetch = FetchType.EAGER)


@JoinColumn(name="primary_key")
Muchos a Muchos
Many to Many
Relaciones Hibernate - Many to Many

Un objeto A tenga una lista de


otros objetos B y tambin que
el objeto B a su vez tenga la
lista de objetos A
Relaciones Hibernate - Many to Many

Entity Owner
@ManyToMany(cascade = {CascadeType.ALL})

@JoinTable(name="entityMapped",
joinColumns={@JoinColumn(name="campoTablaPadre")},
inverseJoinColumns={@JoinColumn(name="campoTablaHijo")})

Entity No Owner
@ManyToMany(cascade = {CascadeType.ALL},mappedBy="entityName")
Accin en
Hibernate
Sesiones en Hibernate

SessionFactory sessionFactory;
Configuration configuration;
Session session;
Transacciones en Hibernate

session.beginTransaction();

session.save(media);

session.getTransaction().commit();
Transacciones en Hibernate
DAOs en
Hibernate
DAO
Data Access Object
DAO - Data Access Object

Patrn de diseo
verlo en forma de API
API consiste en mtodos
CRUD (Create, Read, Update
y Delete).
hql
Hibernate
hql
Hibernate Query Language
Hibernate - HQL

Se parece a SQL. Sin embargo,


comparado con SQL,

Es completamente orientado a objetos y


comprende nociones como herencia,
polimorfismo y asociacin.
Qu es un
Framework?
Inversin de
Control
Inversin de Control
Principio de Hollywood?

No nos llames, nosotros te llamaremos


Inversin de control

Librera vs. Framework


Librera: conjunto de clases, mtodos
etc. que son invocadas por el flujo del
programa y que posteriormente
devuelven el control a este.
Inversin de control - Librera

1. Nuestro cdigo invoca la librera.


2. Se ejecuta el contenido de la librera.
3. Regresa al flujo de nuestro cdigo.
Inversin de control - Librera

1. Nuestro cdigo invoca la librera.


2. Se ejecuta el contenido de la librera.
3. Regresa al flujo de nuestro cdigo.

Programacin Secuencial
Inversin de control

Librera vs. Framework


Framework: Un framework controla el
flujo del cdigo, l decide cundo llamar
nuestro cdigo
Inversin de control - Framework

1. Se invoca la librera y el cdigo se queda


escuchando
2. Al darse un evento especfico se ejecuta nuestro
cdigo
3. Regresa al flujo de la librera para continuar
escuchando
Inversin de control - Framework

1. Se invoca la librera y el cdigo se queda


escuchando
2. Al darse un evento especfico se ejecuta nuestro
cdigo
3. Regresa al flujo de la librera para continuar
escuchando

Programacin por Eventos


Librera - Programacin Secuencial

> Escribe tu nombre:


> Anah Salgado
> Escribe tu email:

> anahi@platzi.com

> Enviando Email

> Tu Email se envi exitosamente! |


Framework - Programacin por Eventos

Escribe tu nombre

Escribe tu Email

Enviar Email

Tu Email se envi exitosamente!


Inversin del Flujo
El Framework tom
el control
Un Framework usa
Inversin de
Control
Spring
Spring
Framework
Spring
Implementa un Contenedor
que se encarga de gestionar la
creacin y destruccin de los
objetos (instancias)
Spring Framework
Spring Framework
Spring Framework

https://itblogsogeti.com/2015/10/29/inyeccion-de-dependencias-vs-inversion-de-control-eduard-moret-sogeti/
Spring Framework

Inversin de
Control
Inyeccin de
Dependencias
Inyeccin de
Dependencias
Hacer que una clase A inyecte
objetos en una clase B
Spring - Inyeccin de Dependencias

La clase A le diga qu objetos crear a la clase B

Evitar que la clase B decida qu objetos crear


Spring - Inyeccin de Dependencias

Los mdulos de alto nivel del software no deben


depender de los mdulos de bajo nivel
Spring - Inyeccin de Dependencias

La clase Vehiculo quiere obtener las


revoluciones del motor
Spring - Inyeccin de Dependencias

El mdulo superior -vehculo- depende del


mdulo inferior -motor-
Spring - Inyeccin de Dependencias

Desacoplaremos los objetos hallando la forma


ms genrica de hacerlo
Polimorfismo
Spring - Inyeccin de Dependencias

La forma ideal ser usar interfaces pues


conseguimos abstraer la relacin de que una
clase A depende de una clase B sin importar la
implementacin
Spring - Inyeccin de Dependencias
Spring - Inyeccin de Dependencias
Spring - Inyeccin de Dependencias

El mdulo superior -vehculo- ya no depende del


mdulo inferior -motor-
Spring - Inyeccin de Dependencias

https://danielggarcia.wordpress.com/2014/01/15/inversion-de-control-e-inyeccion-de-dependencias/

Definimos una instancia para acceder a los mtodos


Spring - Inyeccin de Dependencias

El contenedor de Inyeccin de Dependencias se


encarga de hacer la instanciacin de los objetos
Spring - Inyeccin de Dependencias

En este contenedor se suelen crear y almacenar


objetos de servicio, DAOs, y objetos que nos
permitan conectarnos con otras partes del
sistema como Bases de Datos, Sistemas
Spring
Bean Factory
Spring - Bean Factory

Los objetos que son la columna vertebral de tu


aplicacin y que son administrados por el
contenedor Spring se denominan beans.
Spring - Bean Factory

Objetos de servicio y DAOs y Objetos que nos


permitan conectarnos con otras partes del
sistema como Bases de Datos
Spring - Bean Factory

Implementamos la interfaz en un solo tipo de


Objeto

DAO

Los indicamos con la anotacin @Autowired


Spring - Bean Factory

https://www.adictosaltrabajo.com/tutoriales/spring-container-inyeccion-dependencias/
Spring - Bean Factory

https://www.adictosaltrabajo.com/tutoriales/spring-container-inyeccion-dependencias/
Spring - Bean Factory

Implementamos la interfaz en varios tipos de


Objetos
Tendramos que decirle a Spring cul es el
Bean correcto, a partir de un archivo de
configuracin de Beans

Los indicamos con la anotacin


@Configuration y @Bean
Spring - Bean Factory

http://docs.spring.io/spring-javaconfig/docs/1.0.0.M4/reference/html/ch02s02.html
Spring - Bean Factory

Objetos de Sesin que trabajen en modo


Singleton
Composicin de
Spring
Spring

Es framework muy grande que contiene muchos


componentes
Spring Framework - Composicin
Spring MVC - Composicin
Spring MVC - Composicin
Spring MVC - Composicin
Spring MVC - Composicin
Spring MVC - Composicin
Spring MVC - Composicin
Spring Boot
Producto de Spring
Spring Boot

Simplifica la creacin de
aplicaciones de aplicaciones y
servicios Spring
Spring Boot

Proveer una forma muy sencilla de


arrancar desarrollos Spring

Proporcionar una serie de


caractersticas no funcionales
comunes a los proyectos (por
ejemplo, servidores embebidos,
seguridad, indicadores, configuracin
externalizada)
Spring Boot

No necesitar generacin cdigo ni


configuracin XML
Spring Boot
json
Spring Boot
Spring Boot - @Component

Componente genrico
Spring Boot - @Controller

La capa de presentacin, aqu se llega


cuando solicitas una ruta, tambin utiliza
@RequestMapping
Spring Boot - @Service

Maneja la lgica del negocio, llama a los


DAOs y ejecuta clculos relacionados
Generalmente se conecta con
@Repository
Spring Boot - @Repository

Es la capa de persistencia de la
aplicacin que se utiliza para obtener
datos de la base de datos.

Es decir, todas las operaciones


relacionadas con la base de datos son
realizadas por este repositorio.
Spring Boot
API Rest
API Rest

REpresentational
State Transfer
Como crear apis

https://platzi.com/blog/como-crear-apis/
Deploy del
Proyecto
Heroku
Heroku

https://devcenter.heroku.com/
Heroku

https://devcenter.heroku.com/articles/ge
tting-started-with-java#introduction

También podría gustarte