Aplicacion web CRUD en Spring Boot JPA Hibernate y Thymeleaf

1) Crear una aplicación maven.

click derecho -> new -> project -> Maven Project

2) Configurar el Build Path del Proyecto

click derecho sobre el proyecto -> Build path -> Configure  Build path

asignar el JRE correcto.

asignar el Server correcto.

3) Agregar las dependencias necesarias en el archivo pom.xml 
[code] <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.cmd.cc</groupId> <artifactId>mailingwebapp</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>mailingwebapp Maven Webapp</name> <url>http://maven.apache.org</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.2.4.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.webjars</groupId> <artifactId>bootstrap</artifactId> <version>3.3.4</version> </dependency> <dependency> <groupId>org.webjars</groupId> <artifactId>jquery</artifactId> <version>2.1.4</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> [/code]


luego de salvar estos cambios, posiblemente te salga el siguiente error:

esto se soluciona facilmente
click derecho sobre el proyecto -> maven -> Update project
click en [OK]

4) Crear los modelos con los que se trabajará

en src/main/java creamos el package com.cmd.cc.domain
y en él crear el modelo MailingFilter.java

[code]
package com.cmd.cc.domain;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class MailingFilter {
 @Id
 @GeneratedValue(strategy = GenerationType.AUTO)
 private Integer id;
 private String name;
 private String description;

 public String getDescription() {
 return description;
 }

 public void setDescription(String description) {
 this.description = description;
 }

 public String getName() {
 return name;
 }

 public void setName(String name) {
 this.name = name;
 }

 public Integer getId() {
 return id;
 }

 public void setId(Integer id) {
 this.id = id;
 }

}
[/code]

5) Spring Data JPA Repository

Creamos el package com.cmd.cc.repositories
y en el la interface MailingFilterRepository.java

[code] package com.cmd.cc.repositories; import org.springframework.data.repository.CrudRepository; import com.cmd.cc.domain.MailingFilter; public interface MailingFilterRepository extends CrudRepository<MailingFilter, Integer>{ } [/code]
6) Implementar Spring Facade service.

Creamos un servicio que será quien interactue con la capa de persistencia.

en src/main/java creamos el package com.cmd.cc.services

y en él creamos primero una interface llamada MailingFilterService.java


[code] package com.cmd.cc.services; import com.cmd.cc.domain.MailingFilter; public interface MailingFilterService { Iterable<MailingFilter> listAllMailingFilters(); MailingFilter getMailingFilterById(Integer id); MailingFilter saveMailingFilter(MailingFilter mailingFilter); void deleteMailingFilter(Integer id); } [/code]

en ese mismo package crear la clase que implementa la interface la llamamos MailingFilterServiceImpl.java

[code] package com.cmd.cc.services; import org.springframework.beans.factory.annotation.Autowired; import com.cmd.cc.domain.MailingFilter; import com.cmd.cc.repositories.MailingFilterRepository; public class MailingFilterServiceImpl implements MailingFilterService { private MailingFilterRepository mailingfilterRepository; @Autowired public void setMailingFilterRepository(MailingFilterRepository mailingfilterRepository) { this.mailingfilterRepository = mailingfilterRepository; } @Override public Iterable<MailingFilter> listAllMailingFilters() { // TODO Auto-generated method stub return mailingfilterRepository.findAll(); } @Override public MailingFilter getMailingFilterById(Integer id) { // TODO Auto-generated method stub return mailingfilterRepository.findOne(id); } @Override public MailingFilter saveMailingFilter(MailingFilter mailingFilter) { // TODO Auto-generated method stub return mailingfilterRepository.save(mailingFilter); } @Override public void deleteMailingFilter(Integer id) { // TODO Auto-generated method stub mailingfilterRepository.delete(id); } } [/code]

Agregar un repositorio con SVN Subversion en Eclipse



1) windows-> preferences->buscar SVN

click en [browse]





 se abrirá una ventana de dialogo para que seleccionemos un conector
  

 seleccionamos svn kit 
y despues de que se baje el connector, reiniciamos el Eclipse.

2)windows->Show View->Other


 y se abrirá la vista SVN Repositories
 3)
click derecho sobre la vista SVN Repositories

4)
se abrirá la ventana donde ingresaremos
la URL del servidor y el User y Password.


click en [finish]


Instalar SVN SUBVERSION en Eclipse

1) abrir Eclipse
2) abrir en un browser la sgt direccion https://eclipse.org/subversive/downloads.php
se nos abrirá la sgt página

 3) con el mouse arrastrar el botón
y soltarlo en el worspace abierto de nuestro Eclipse.

4) se nos abrirá un cuadro de dialogo con los elementos a instalar. seleccionarlos todos y darle continuar, aceptar terminos y condiciones y listo.

5) Reiniciar eclipse.

Tutorial Basico Spring Boot Hola Mundo con Maven en Eclipse

Vamos a crear un proyecto llamado SpringBoot01
para esto,
-creamos un proyecto maven y configuramos el build path como vimos en el tutorial anterior

luego,
EDITAMOS EL POM.XML
[code] <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>SpringBoot01</groupId> <artifactId>SpringBoot01</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>SpringBoot01 Maven Webapp</name> <url>http://maven.apache.org</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.2.7.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <finalName>SpringBoot01</finalName> </build> </project> [/code]

el  spring-boot-starter-parent en la sección parent
es un "starter pom" que provee librerias minimas necesarias para maven.
Como vamos a desarrollar una aplicación web, vamos a necesitar como una dependencia
spring-boot-starter-web


CREAMOS UNA CLASE CONTROLADORA

En la carpeta src/main/java

click der -> new Class ...
(en mi caso lo cree en el package com.isra y lo llamé Ejemplo)
[code] package com.isra; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @EnableAutoConfiguration public class Ejemplo { @RequestMapping("/holamundo") String saludo() { return "Hola Mundo!"; } public static void main(String[] args) throws Exception { SpringApplication.run(Ejemplo.class, args); } } [/code]

donde,
@RestController  : es un stereotype annotation
indica que nuestra clase es un Controller y que Spring lo manejará cada vez que reciba un request desde la web. Además envia la respuesta de regreso a quien lo invoque.
@RequestMapping("/holamundo") : es una annotation de routeo
indica que cada llamada http que empiece con /holamundo sea mapeada con el método saludo

(ambos annotations son parte del spring MVC)


@EnableAutoConfiguration : ésta annotation le dice a SpringBoot que "adivine" como configurar Spring según las dependencias que tenemos.Ya que spring-boot-starter-web agregó Tomcat y SpringMVC asumirá que estamos desarrollando una aplicación web y configurará Spring a eso.






INDICAR EL PUERTO POR EL QUE SE EJECUTARÁ

En la carpeta src/main/resources
crear el archivo application.properties
e indicar el puerto (si ese no está libre cambiarlo por cualquier otro 9090 por ejemplo)
server.port=8080


A EJECUTARLO!

click derecho sobre el archivo Ejemplo.java
y le damos Run as->java application

abrimos un browser, y en la barra de direcciones tipeamos

http://localhost:8080/holamundo

y obtendremos algo asi




linux ubuntu mint actualizar chrome

 desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable