Il modo più semplice per accedere a un database in JAVA
Confronto tra Hibernate, JPA, EclipseLink e Spring Data JPA
Cos'è l'ORM in Java?
ORM è l'acronimo di Object-Relational Mapping ed è una tecnica utilizzata in Java e in altri linguaggi di programmazione per mappare i dati memorizzati in un database relazionale agli oggetti in un linguaggio di programmazione. L'idea è quella di fornire un modo conveniente per accedere e manipolare i dati memorizzati nel database, senza dover scrivere codice SQL.
I framework JAVA ORM più diffusi includono:
- Ibernazione
- Dati primaverili JPA
- APP
Discutiamo l'un l'altro in modo più dettagliato.
Panoramica: Java Persistence API (JPA)
Fornisce una specifica per la persistenza, la lettura e la gestione dei dati dall'oggetto Java alle tabelle relazionali nel database. Questo framework fornisce un'API comoda e coerente per eseguire operazioni CRUD (Crea, Leggi, Aggiorna, Elimina) sul database e gestire le relazioni tra gli oggetti. Questo può aiutare a ridurre la quantità di codice che deve essere scritto e rendere il codice più gestibile e più facile da capire.
Ibernazione contro JPA?
Hibernate è un'implementazione di JPA, mentre JPA è una specifica per ORM in Java. JPA definisce un insieme di API standard per la persistenza dei dati in un database utilizzando oggetti Java, mentre Hibernate è un'implementazione specifica di tali API. Hibernate ha un'architettura più potente di JPA, in quanto consente agli sviluppatori di personalizzare il processo ORM.
Ecco un semplice esempio di come si potrebbe persistere un semplice oggetto "Person" in un database utilizzando sia JPA che Hibernate:
APP
@Entity
public class Person {
@Id
@GeneratedValue
private Long id;
private String firstName;
private String lastName;
// Getters and setters omitted for brevity
}
// Persisting an entity using JPA
EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnitName");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Person person = new Person();
person.setFirstName("John");
person.setLastName("Doe");
em.persist(person);
em.getTransaction().commit();
em.close();
emf.close();
@Entity
public class Person {
@Id
@GeneratedValue
private Long id;
private String firstName;
private String lastName;
// Getters and setters omitted for brevity
}
// Persisting an entity using Hibernate
SessionFactory sessionFactory = new Configuration()
.configure()
.buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
Person person = new Person();
person.setFirstName("John");
person.setLastName("Doe");
session.save(person);
session.getTransaction().commit();
session.close();
sessionFactory.close();
Spring Data JPA vs JPA?
Spring Data JPA è un framework, mentre JPA è una specifica. Spring Data JPA è un'implementazione JPA predefinita denominata Hibernate con la specifica fornita come parte di Spring Framework.
Ecco un esempio che utilizza JPA:
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String firstName;
private String lastName;
// Getters and setters ...
}
public class PersonDao {
private EntityManager em;
public PersonDao(EntityManager em) {
this.em = em;
}
public void save(Person person) {
em.getTransaction().begin();
em.persist(person);
em.getTransaction().commit();
}
public Person findById(Long id) {
return em.find(Person.class, id);
}
}
public interface PersonRepository extends JpaRepository<Person, Long> {
}
È inoltre possibile utilizzare PersonRepositoryper eseguire operazioni più complesse semplicemente dichiarando metodi con nomi specifici e seguendo una convenzione di denominazione. Spring Data JPA genererà automaticamente l'implementazione per te.
Come puoi vedere, il modo più rapido per mappare un database in java è utilizzare il framework Spring Data JPA.
Panoramica: Ibernazione
Hibernate è un framework ORM (object-relational mapping) open source per il linguaggio di programmazione Java. Lo scopo di questo framework è quello di sollevare gli sviluppatori da una quantità significativa di dati relazionali, inclusa la gestione delle transazioni e la conversione dei dati da una rappresentazione di oggetti a una rappresentazione relazionale.
Hibernate può essere utilizzato con o senza Java Persistence API (JPA), ma è spesso utilizzato in combinazione con JPA per fornire una soluzione completa per la mappatura relazionale degli oggetti e la persistenza nelle applicazioni Java.
Vantaggi
- Questo framework ORM semplifica il processo di archiviazione e recupero dei dati da un database.
- Fornisce maggiori prestazioni e funzionalità di ottimizzazione, come il caricamento lento che può aumentare le prestazioni dell'applicazione.
- Fornisce una soluzione scalabile per la persistenza e la gestione dei dati su larga scala.
- Hibernate può essere complesso da utilizzare per relazioni complesse, come ereditarietà o raccolte, che possono portare a difficoltà nel mappare il modello a oggetti al modello relazionale.
- Può essere prolisso, soprattutto quando si tratta di scrivere query, il che può rendere difficile la lettura e la manutenzione del codice.
Questo framework introduce il concetto di repository JPA, un insieme di interfacce che definisce i metodi di query . Non è più necessario scrivere troppe query. Spring Boot implementerà automaticamente le interfacce del tuo repository, inclusi i metodi di ricerca personalizzati, mentre li scrivi.
Cosa puoi creare con Spring Data JPA:
- Supporto del repository: Spring Data JPA fornisce un approccio basato sull'interfaccia per l'accesso ai dati. Puoi semplicemente dichiarare un'interfaccia che si estende
JpaRepositorye ottenere operazioni CRUD di base (Crea, Leggi, Aggiorna, Elimina) - Creazione di query: fornisce un meccanismo per la creazione di query personalizzate
- Impaginazione e ordinamento
- Transazioni: Spring Data JPA fornisce la gestione automatica delle transazioni, facile da eseguire con una semplice annotazione @Transaction
Panoramica: EclipseLink
EclipseLink è un potente strumento ORM (object-relational mapping) che fa parte degli strumenti Java aziendali di Eclipse Foundation. È un open source e un buon modo per iniziare a imparare Java. Non è facile come Spring Data JPA ma sarai in grado di capire meglio cosa sta succedendo all'interno di un'applicazione.
Supporta molti database tra cui puoi scegliere come Postgres, MySQL e MariaDB. Offre funzionalità utili come il caricamento lento e un livello di prestazioni elevate e garantisce la scalabilità dell'applicazione.
Lo svantaggio è che possono richiedere più installazione e configurazione rispetto ad altri strumenti ORM.
Esempio di una semplice implementazione di EclipseLink :
EntityManagerFactory emf = Persistence.createEntityManagerFactory("default");
EntityManager em = emf.createEntityManager();
// clear
em.getTransaction()
.begin();
em.createQuery("DELETE FROM Employee ").executeUpdate();
em.getTransaction()
.commit();
Employee e1 = new Employee("Costel", "Daniel", "0742929245", 21, Departament.Marketing, 2100.0);
Employee e2 = new Employee("Daniel", "Costin", "0742929345", 26, Departament.IT, 4100.0);
Employee e3 = new Employee("Codrin", "Daniel", "0742929245", 41, Departament.HumanResource, 3100.0);
em.getTransaction()
.begin();
System.out.println("Saving your new employees");
em.persist(e1);
em.persist(e2);
em.persist(e3);
em.getTransaction()
.commit();
System.out.println("End");
}
Se stai usando JPA , dovresti scrivere tu stesso il codice necessario per implementare la logica di persistenza. Ma con Spring Data JPA , gran parte della logica di persistenza viene implementata automaticamente per te, quindi puoi concentrarti sulla scrittura della logica aziendale dell'applicazione. Ecco perché Spring Data JPA è più popolare tra gli sviluppatori perché possono concentrarsi sulla logica aziendale e non scrivere molte query.
In conclusione, quando si sceglie uno strumento ORM, è importante considerare le esigenze specifiche del progetto, incluso il tipo di database che si desidera utilizzare e la complessità del modello di dati.
Fatto!
Resta sintonizzato per saperne di più sull'argomento!
Grazie per aver letto!
Riferimenti
- https://dzone.com/articles/what-is-the-difference-between-hibernate-and-sprin-1
- https://www.eversql.com/java-orm-hibernate-vs-spring-data-jpa-vs-eclipselink-vs-jpa-vs-jdbc/
- https://www.baeldung.com/database-auditing-jpa Semaforo | Java Concurrent API Threading e Multiprocessing in Python hanno spiegato 5 linguaggi di programmazione a cui prestare attenzione nel 2023: quale crescerà di più? Pacchetti API simultanei Java — Parte 1 Creazione di un'applicazione console del sistema bancario in Java

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































