Cách dễ nhất để truy cập cơ sở dữ liệu trong JAVA
So sánh giữa Hibernate, JPA, EclipseLink và Spring Data JPA
ORM trong Java là gì?
ORM là viết tắt của Object-Relational Mapping và đó là một kỹ thuật được sử dụng trong Java và các ngôn ngữ lập trình khác để ánh xạ dữ liệu được lưu trữ trong cơ sở dữ liệu quan hệ tới các đối tượng trong ngôn ngữ lập trình. Ý tưởng là cung cấp một cách thuận tiện để truy cập và thao tác dữ liệu được lưu trữ trong cơ sở dữ liệu mà không cần phải viết mã SQL.
Các khung JAVA ORM phổ biến bao gồm:
- ngủ đông
- Dữ liệu mùa xuân JPA
- Nhật Bản
Hãy thảo luận với nhau chi tiết hơn.
Tổng quan: Java Persistence API (JPA)
Cung cấp một đặc điểm kỹ thuật để duy trì, đọc và quản lý dữ liệu từ đối tượng Java của bạn đến các bảng quan hệ trong cơ sở dữ liệu. Khung này cung cấp API thuận tiện và nhất quán để thực hiện các thao tác CRUD (Tạo, Đọc, Cập nhật, Xóa) trên cơ sở dữ liệu và quản lý mối quan hệ giữa các đối tượng. Điều này có thể giúp giảm số lượng mã cần viết và làm cho mã dễ bảo trì hơn và dễ hiểu hơn.
Ngủ đông so với JPA?
Hibernate là một triển khai của JPA, trong khi JPA là một đặc tả cho ORM trong Java. JPA định nghĩa một tập hợp các API tiêu chuẩn để duy trì dữ liệu trong cơ sở dữ liệu bằng cách sử dụng các đối tượng Java, trong khi Hibernate là một triển khai cụ thể của các API đó. Hibernate có kiến trúc mạnh mẽ hơn JPA, vì nó cho phép các nhà phát triển tùy chỉnh quy trình ORM.
Đây là một ví dụ đơn giản về cách bạn có thể duy trì một đối tượng “Person” đơn giản vào cơ sở dữ liệu bằng cách sử dụng cả JPA và Hibernate:
Nhật Bản
@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();
Dữ liệu mùa xuân JPA so với JPA?
Spring Data JPA là một framework, trong khi JPA là một đặc tả. Spring Data JPA là một triển khai JPA mặc định được gọi là Hibernate với đặc tả được cung cấp như một phần của Spring Framework.
Đây là một ví dụ sử dụng 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> {
}
Bạn cũng có thể sử dụng PersonRepositoryđể thực hiện các thao tác phức tạp hơn bằng cách chỉ cần khai báo các phương thức có tên cụ thể và tuân theo quy ước đặt tên. Spring Data JPA sẽ tự động tạo triển khai cho bạn.
Như bạn có thể thấy, cách nhanh nhất để ánh xạ cơ sở dữ liệu trong java là sử dụng khung công tác Spring Data JPA.
Tổng quan: Ngủ đông
Hibernate là một khung công tác ánh xạ quan hệ đối tượng (ORM) mã nguồn mở cho ngôn ngữ lập trình Java. Mục đích của khung này là giải phóng các nhà phát triển khỏi một lượng dữ liệu quan hệ đáng kể, bao gồm quản lý các giao dịch và chuyển đổi dữ liệu từ biểu diễn đối tượng sang biểu diễn quan hệ.
Hibernate có thể được sử dụng có hoặc không có Java Persistence API (JPA), nhưng nó thường được sử dụng cùng với JPA để cung cấp giải pháp hoàn chỉnh cho ánh xạ quan hệ đối tượng và tính bền vững trong các ứng dụng Java.
Thuận lợi
- Khung ORM này đơn giản hóa quá trình lưu trữ và truy xuất dữ liệu từ cơ sở dữ liệu.
- Cung cấp nhiều tính năng hiệu suất và tối ưu hóa hơn, chẳng hạn như tải từng phần có thể tăng hiệu suất ứng dụng của bạn.
- Cung cấp một giải pháp có thể mở rộng để duy trì và quản lý dữ liệu quy mô lớn.
- Hibernate có thể phức tạp để sử dụng cho các mối quan hệ phức tạp, chẳng hạn như kế thừa hoặc bộ sưu tập, điều này có thể dẫn đến khó khăn trong việc ánh xạ mô hình đối tượng sang mô hình quan hệ.
- Nó có thể dài dòng, đặc biệt là khi viết các truy vấn, điều này có thể khiến mã khó đọc và khó bảo trì.
Khung này mang đến khái niệm về Kho lưu trữ JPA, một tập hợp các Giao diện xác định các phương thức truy vấn . Bạn không cần phải viết quá nhiều truy vấn nữa. Spring Boot sẽ tự động triển khai các giao diện kho lưu trữ của bạn, bao gồm các phương thức tìm kiếm tùy chỉnh, khi bạn viết chúng.
Những gì bạn có thể tạo với Spring Data JPA:
- Hỗ trợ kho lưu trữ: Spring Data JPA cung cấp cách tiếp cận dựa trên giao diện để truy cập dữ liệu. Bạn có thể chỉ cần khai báo một giao diện mở rộng
JpaRepositoryvà nhận các thao tác CRUD cơ bản (Tạo, Đọc, Cập nhật, Xóa) - Tạo truy vấn: cung cấp cơ chế tạo truy vấn tùy chỉnh
- Phân trang và sắp xếp
- Giao dịch: Spring Data JPA cung cấp khả năng quản lý giao dịch tự động, dễ dàng thực hiện với một chú thích đơn giản @Transaction
Tổng quan: EclipseLink
EclipseLink là một công cụ ánh xạ quan hệ đối tượng (ORM) mạnh mẽ, là một phần của công cụ Java doanh nghiệp của Quỹ Eclipse. Nó là một mã nguồn mở và là một cách tốt để bắt đầu học java. Không dễ dàng như Spring Data JPA nhưng bạn sẽ có thể hiểu rõ hơn những gì đang xảy ra bên trong một ứng dụng.
Hỗ trợ rất nhiều cơ sở dữ liệu mà bạn có thể lựa chọn như Postgres, MySQL và MariaDB. Cung cấp các tính năng hữu ích như tải chậm và mức hiệu suất cao, đồng thời đảm bảo khả năng mở rộng của ứng dụng của bạn.
Nhược điểm là chúng có thể yêu cầu thiết lập và cấu hình nhiều hơn các công cụ ORM khác.
Ví dụ về cách triển khai EclipseLink đơn giản :
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");
}
Nếu bạn đang sử dụng JPA , bạn sẽ phải tự viết mã cần thiết để tự triển khai logic kiên trì. Nhưng với Spring Data JPA , phần lớn logic liên tục được triển khai tự động cho bạn, vì vậy bạn có thể tập trung vào việc viết logic nghiệp vụ của ứng dụng. Đó là lý do tại sao Spring Data JPA phổ biến hơn đối với các nhà phát triển vì họ có thể tập trung vào logic nghiệp vụ và không phải viết nhiều truy vấn.
Tóm lại, khi bạn chọn một công cụ ORM, điều quan trọng là phải xem xét các nhu cầu cụ thể của dự án, bao gồm loại cơ sở dữ liệu bạn muốn sử dụng và độ phức tạp của mô hình dữ liệu của bạn.
Xong!
Hãy theo dõi để biết thêm về chủ đề này!
Cảm ơn vì đã đọc!
Người giới thiệu
- 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 Semaphore | Giải thích về phân luồng và đa xử lý API đồng thời của Java trong Python 5 ngôn ngữ lập trình cần chú ý trong năm 2023 — Ngôn ngữ nào sẽ phát triển nhất? Các gói API đồng thời của Java — Phần 1 Tạo ứng dụng bảng điều khiển hệ thống ngân hàng trong Java

![Dù sao thì một danh sách được liên kết là gì? [Phần 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































