No entendí muy bien como funciona el @Autowired de Spring

Pregunta de la clase:
Alejandro Villegas Carvajal

Alejandro Villegas Carvajal

Pregunta
studenthace 9 años

No entendí muy bien como funciona el @Autowired de Spring

7 respuestas
para escribir tu comentario
    pepe Martin

    pepe Martin

    studenthace 7 años
    <code>@SpringBootApplication public class PruebaExamenApplication implements ApplicationRunner { @Autowired public PersonaRepository personaRepository; public static void main(String[] args) { SpringApplication.run(PruebaExamenApplication.class, args); } @Override public void run(ApplicationArguments arg0) throws Exception { // TODO Auto-generated method stub System.out.println(personaRepository.findById(2L).getProfesion()); for (int i = 0; i < personaRepository.listaProfesiones().size(); i++) { System.out.println(personaRepository.listaProfesiones().get(i)); } for(Persona p : personaRepository.findAll()) { System.out.println(p.getNombre()+ " " +p.getProfesion()); } personaRepository.deleteAllInBatch(); personaRepository.deletePersona("Marketing"); Persona p = new Persona(3L, "54848788f", 27, "Jose" , "Marketing"); personaRepository.save(p); personaRepository.actualizaNif("77777777k", "48569515t"); personaRepository.actualizaNifyNombre("89857556j", "Rojo"); } }
    pepe Martin

    pepe Martin

    studenthace 7 años
    <code>@Transactional public interface PersonaRepository extends JpaRepository<Persona, Long> { @Query("Select p from Persona p where id = ?1") public Persona findById(Long id); @Query("Select p.profesion from Persona p") public List<Persona> listaProfesiones(); @Modifying @Transactional @Query("delete from Persona p where p.profesion = ?1") public void deletePersona(String profesion); @Modifying @Transactional @Query("update Persona p set p.nif = ?1 where p.nif = ?2") public void actualizaNif(String nifO, String nifD); @Modifying @Transactional @Query("update Persona p set p.nif = ?1, p.nombre = ?2 where p.nif = '5785693k'") public void actualizaNifyNombre(String nif, String nombre); }
    pepe Martin

    pepe Martin

    studenthace 7 años
    <code>@Entity @Getter @Setter @AllArgsConstructor @NoArgsConstructor @Table(name = "carcel") public class Carcel { @Id @GeneratedValue private Integer idCarcel; private String Nombre; private String Ciudad; } @Entity @Getter @Setter @AllArgsConstructor @NoArgsConstructor @Table(name = "condena") public class Condena { @Id @GeneratedValue private Integer idCondena; @Column(name = "nombreCondena") private String nombreCondena; @Column(name = "anyos") private Integer anyos; }
    pepe Martin

    pepe Martin

    studenthace 7 años
    <code>@Entity @Getter @Setter @AllArgsConstructor @NoArgsConstructor @Table(name = "telefono") public class Telefono { @Id @GeneratedValue private Integer idTelefono; private Integer numeroTelefono; private String compañia; @ManyToOne @JoinColumn(name = "preso_id") private Preso preso; }
    pepe Martin

    pepe Martin

    studenthace 7 años
    <code>@Entity @Getter @Setter @AllArgsConstructor @NoArgsConstructor @Table(name = "preso") public class Preso { @Id @GeneratedValue private Integer idPreso; private String Nombre; private String Apeliido; @ManyToOne @JoinColumn(name = "id") private Carcel idCarcel; @OneToMany(mappedBy = "preso") @Column(name = "telefonos") private List<Telefono> ListTelefono; @ManyToMany @JoinTable(name = "presoCondena", joinColumns = { @JoinColumn(name = "idPreso", referencedColumnName = "idPreso") }, inverseJoinColumns = { @JoinColumn(name = "idCondena", referencedColumnName = "idCondena") }) private List<Condena> condenas = new ArrayList<Condena>(); }
    pepe Martin

    pepe Martin

    studenthace 7 años
    <code><dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.2.12.Final</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.16</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.20</version> <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-5.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hbm2ddl.auto">update</property> <property name="hibernate.connection.url" jdbc:mysql://localhost:3306/accesodatos2017</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password"></property> <property name="hibernate.connection.pool_size">10</property> <property name="show_sql">true</property> <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> <property name="hibernate.current_session_context_class">thread</property> <!--Mapeo de todas las clases--> <mapping class="es.fempa.test.hibernate.Car" /> </session-factory> </hibernate-configuration> public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder() .configure("hibernate.cfg.xml").build(); Metadata metaData = new MetadataSources(standardRegistry).getMetadataBuilder().build(); sessionFactory = metaData.getSessionFactoryBuilder().build(); } catch (Throwable th) { System.err.println("Enitial SessionFactory creation failed" + th); throw new ExceptionInInitializerError(th); } } public static SessionFactory getSessionFactory() { return sessionFactory; } } public class App { public static void main(String[] args) { SessionFactory sessFact = null; try { sessFact = HibernateUtil.getSessionFactory(); Session session = sessFact.getCurrentSession(); Transaction tr = session.beginTransaction(); //INSERTAR Y GUARDAR List<Condena> lista = new ArrayList<Condena>(); Condena con = new Condena(); con.setNombreCondena("Atraco"); con.setAnyos(10); // con.setIdCondena(7); lista.add(con); Carcel c = new Carcel(); c.setNombre("Otra"); c.setCiudad("Barcelona"); //c.setIdCarcel(8); Preso p = new Preso(); // p.setIdPreso(14); p.setNombre("Pepe"); p.setApeliido("Diaz"); p.setIdCarcel(c); p.setCondenas(lista); List<Telefono> listado = new ArrayList<Telefono>(); Telefono tel = new Telefono(); tel.setNumeroTelefono(648878959); tel.setCompañia("Vodafone"); listado.add(tel); p.setListTelefono(listado); session.save(con); session.save(c); session.save(p); session.save(tel); //MODO 1 DELETE Carcel car = new Carcel(); car.setIdCarcel(24); session.delete(car); //UPDATE 1 Carcel c = new Carcel(); c.setIdCarcel(16); c.setNombre("Carcel 1"); c.setCiudad("Asturias"); session.update(c); //UPDATE 2 MAS OPTIMA Carcel c = (Carcel)session.get(Carcel.class, 7); c.setNombre("CACACITY"); session.update(c); //SACAR TODOS LOS PRESOS CON SUS DATOS String allPresos = "select p from Preso p inner join p.idCarcel c" + " inner join p.ListTelefono inner join p.condenas co"; List<Preso> presoList = session.createQuery(allPresos).getResultList(); for (Preso preso : presoList) { System.out.println("ID: " + preso.getIdPreso()); System.out.println("Name: " + preso.getNombre()); System.out.println("Apellido: " + preso.getApeliido()); for (Condena co : preso.getCondenas()) { System.out.println("Condena: " + co.getNombreCondena() + ", " + co.getAnyos() + " años"); } for (Telefono tel : preso.getListTelefono()) System.out.println("telefono: " + tel.getNumeroTelefono()); System.out.println("Carcel: " + preso.getIdCarcel().getNombre() + " " + "Ciudad: " + preso.getIdCarcel().getCiudad()); } //MODO 2 DELETE Query borrarPreso10 = session.createQuery("delete Preso where idPreso = :idPreso"); borrarPreso10.setParameter("idPreso", 9); borrarPreso10.executeUpdate(); tr.commit(); sessFact.close(); } catch (Exception ex) { ex.getMessage(); } finally { sessFact.close(); } } } //Spring //Aplication.properties spring.jpa.hibernate.ddl-auto=update spring.datasource.url=jdbc:mysql://localhost:3306/accesodatos2017 spring.datasource.username=root spring.datasource.password= server.port=8787 <!--Para ver las querys en consola--> logging.level.org.hibernate.SQL=DEBUG logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
Curso de Java para APIs REST 2016

Curso de Java para APIs REST 2016

Crea software en Java de nivel corporativo profesional. Programa apps del lado del servidor, nativas, con bases de datos y APIs seguros. Usa Spring, el framework más robusto de Java, para crear proyectos rápidos y confiables. Domina los IDEs Eclipse e IntelliJ al desarrollar.

Curso de Java para APIs REST 2016
Curso de Java para APIs REST 2016

Curso de Java para APIs REST 2016

Crea software en Java de nivel corporativo profesional. Programa apps del lado del servidor, nativas, con bases de datos y APIs seguros. Usa Spring, el framework más robusto de Java, para crear proyectos rápidos y confiables. Domina los IDEs Eclipse e IntelliJ al desarrollar.