English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SpringBoot Data JPA

Spring Data هو مشروع Spring Source متقدم. هدفيه هو توحيد وتسهيل الوصول إلى أنواع مختلفة من المخزونات الثابتة مثل قواعد البيانات العلاقية وNoSQL.

عند تنفيذ تطبيق جديد، يجب علينا التركيز على منطق الأعمال وليس التعقيدات التقنية والكود النموذجي. هذا هو السبب في أن Java Persistence API (JPA) وSpring Data JPA شائعان جدًا.

يضيف Spring Data JPA طبقة فوق JPA. هذا يعني أن Spring Data JPA يستخدم جميع الميزات المحددة من قبل معيار JPA، خاصة الكيانات، وتحديد العلاقات والاستعلامات JPA. يضيف Spring Data JPA ميزات خاصة مثل تحقيق المخزن بدون كود وإنشاء استعلامات قاعدة البيانات من اسم الطريقة.

Spring Data JPA

يتعامل Spring Data JPA مع معظم التعاملات مع قواعد البيانات القائمة على JDBC وORM (Object-Relational Mapping) معقدة. إنه يقلل من الكود النموذجي المطلوب لـ JPA.

يهدف Spring Data JPA إلى تحسين تنفيذ طبقة الوصول إلى البيانات من خلال تقليل العمل المطلوب.

ميزات Spring Data JPA

يحتوي Spring Data JPA على ثلاثةالميزات الرئيسية، مثل

المخزن بدون كود، هذا هو النمط الأكثر شعبية المتعلق بالتحكم في التحقق. إنه يسمح لنا بتحقيق الكود الأعمال على مستوى أعلى من التجميع. الكود النموذجي المبسط: إنه يقدم تحقيق افتراضيًا لكل طريقة من خلال واجهة المخزن الخاص به. هذا يعني أنه لم يعد من الضروري تنفيذ العمليات القراءة والكتابة. الاستعلام المولد: واحدة من الميزات الأخرى لـ Spring Data JPA هي استنتاج الاستعلام بناءً على اسم الطريقةإنشاء استعلام قاعدة البيانات، إذا كانت الاستعلام غير معقدة، فإنه يجب تعريفها على واجهة المخزن ب findBy الأسلوب الذي يبدأ باسم

public interface EmployeeRepository extends CrudRepository<Employee, Long> 
{
Employee findByName(String name);
}

في المثال السابق، قمنا بتوسيع استخدام نوعين من الت泛يتين CrudRepository : Employee Long ، Employee يجب أن يتم إدارته الشخصية، Long نوع البيانات للرئيسية

يولد Spring داخليًا JPQL (Java Persistence Query Language) البحث بناءً على اسم الطريقة. هذا البحث يستمد من اسم الصفعة. يتم تعيين قيم المتغيرات المربوطة، تنفيذ البحث وإرجاع النتائج.

هناك بعض الميزات الأخرى، مثل

يمكنه دمج كود التخزين المخصص. إنه مكتبة قوية لتخزين النصوص والتحكم في الت映射. يتمتع بالمراجعة الشفافة. إنه يحقق كلاً من الأصناف الأساسية التي توفر الخصائص الأساسية. يستند إلى عدة وحدات، مثل Spring Data JPA، Spring Data MongoDB، Spring Data REST، Spring Data Cassandra وما إلى ذلك.

مكتبات البيانات من Spring

يقدم Spring Data JPA ثلاثةمكتبات التخزين، مثل

CrudRepository: ، يقدمإنشاء، قراءة، تحديثحذف، ويشمل مثل findOne()،findAll( )،save()،delete()،وغيرها. PagingAndSortingRepository : إنه يوسع CrudRepository وإضافة طريقة findAll. يتيح لنا تصفح البيانات بصفحات.ترتيباسترجاعبيانات. JpaRepository : هذا هو مكتبات التخزين المحددة بـ JPA، وهو Spring Data Jpa محدد. إنه يوسع مكتبات CrudRepository و PagingAndSortingRepository. إنه يضيف طرق مخصصة لـ JPA مثل flush()، لمحفز التحديث في سياق التزامنية.

<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>

SpringBoot Starter Data JPA

يقدم Spring Boot spring-boot-starter-data-jpa الارتباط بين تطبيقات Spring مع قواعد البيانات العلاقية بشكل فعال. spring-boot-starter-data-jpa يستخدم تعريف الاعتماد spring-boot-jpa من إصدار Spring Boot 1.5.3 فما فوق.

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>

تُصمم قواعد البيانات باستخدام تصميم الجداول/العلاقات. تتضمن الطريقة القديمة (JDBC) كتابة استعلامات SQL. في JPA، سنقوم بتخزين بيانات الأجسام في الجداول، والعكس صحيح. ولكن، تطورت JPA بناءً على عملية تفكير مختلفة.

قبل JPA، كان ORM هو التعبير الشائع المستخدم للإشارة إلى هذه الإطارات. لذلك، يُدعى Hibernate بإطار عمل ORM.

يسمح لنا JPA بتحويل كلاسيات التطبيق إلى جداول في قاعدة البيانات.

مدير الكيانات: : بعد تعريف الخرائط، سيتولى التعامل مع جميع التفاعلات مع قاعدة البيانات. JPQL (لغة الاستعلامات المبرمجة في Java): يوفر طريقة لكتابة استعلامات للبحث في الكيانات. إنه يختلف عن استعلامات SQL. استعلامات JPQL تعرف الخرائط المحددة بين الكيانات. إذا لزم الأمر، يمكننا إضافة شروط إضافية. الAPI المعياري : يحدد API يعتمد على Java للبحث في قاعدة البيانات.

Hibernate مع JPA

Hibernate هو تنفيذ JPA. إنه أكثر إطار عملORM شعبية، بينما هو API المعيارية. Hibernate يعرف الخرائط التي نضيفها بين الأجسام والجداول. ويضمن استرجاع/تحميل البيانات من قاعدة البيانات بناءً على الخرائط. ويقدم أيضًا ميزات إضافية على مستوى JPA.

مثال Spring Boot JPA

في هذا المثال، سنستخدم اعتماد spring-boot-starter-data- jpa لإنشاء اتصال بـ H2 قاعدة البيانات.

الخطوة 1: افتح spring Initializr https://start.spring.io/.

الخطوة 2: توفير النوعالاسم. قمنا بتوفير com.w3codebox

الخطوة 3: توفير الوحدة العملية المعرف. قمنا بتوفير spring-boot-jpa-example.

الخطوة 4: إضافة الاعتمادات: Spring Web،Spring Data JPA، قاعدة بيانات H2.

الخطوة 5: انقر توليدعندما ننقر على زر "توليد"، يقوم بتعليب المشروع في النقر على ملف و قم بتحميله على النظام المحلي.

الخطوة 6: استخراج ملف Jar و粘贴ه في منطقة العمل لـ STS.

الخطوة 7: قم بتحميلاستيراد مجلد المشروع إلى STS.

ملف->استيراد->مشروع Maven موجود->استعراض->اختر مجلد spring-boot-jpa-example->إتمام

استيراد الملف يتطلب بعض الوقت.

الخطوة 8: إنشاء ملف يحمل الاسم com.w3codebox.controller 的程序包在步骤 src/main/java 中。

步骤9: 在控制台中创建一个名称为 ControllerDemo 的Controller类。软件包 com.w3codebox.controller

ControllerDemo.java

package com.w3codebox.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class ControllerDemo 
{
@RequestMapping("/")
public String home()
{
return "home.jsp";
}
}

الخطوة 10: في مجلد يُنشأ في مجلد com.w3codebox.model التونلة المسمنوة  

الخطوة 11: يُنشأ في حزمة   User النسنسنسنس

User.مسنشنسنس

package com.w3codebox.model;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="userdata")
public class User 
{
@Id
private int id;
private String username;
public int getId() 
{
return id;
}
public void setId(int id) 
{
this.id = id;
}
public String getUname() 
{
return username;
}
public void setUname(String username) 
{
this.username = username;
}
@Override
public String toString() 
{
return ".السمنو السمنول السمنوة التونل السمنو المسمنوة التونل السمنوة;"
}
}
 

现在,我们需要配置H2数据库。

步骤12: 打开   application.properties 文件并配置以下内容:  端口,启用H2控制台,数据源,和   URL。

application.properties

server.port=8085
spring.h2.console.enabled=true
spring.datasource.platform=h2
spring.datasource.url=jdbc:h2:mem:w3codebox
 

步骤13: : 在文件夹   src/main/resources中创建一个 SQL 文件。

右键单击文件夹src/main/resources->新建->文件->提供  文件名->完成

我们提供了文件名   data.sql ,并将以下数据插入其中。

data.sql

insert into userdata values(101,'Tom');
insert into userdata values(102,'Andrew');
insert into userdata values(103,'Tony');
insert into userdata values(104,'Bob');
insert into userdata values(105,'Sam');
 

步骤14: : 在   src 文件夹中创建一个名称为   webapp 的文件夹。

步骤15: 使用我们在   ControllerDemo 中返回的名称创建一个JSP文件。在ControllerDemo.java中,我们返回了   home.jsp

home.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" %>
pageEncoding="ISO-8859-1">
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="addUser">
ID :<br/>
<input type="text" name="t1"><br/>
اسم المستخدم:<br/>
<input type="text" name="t2"><br/>
<input type="submit" value="إضافة">
</form>
</body>
</html>
 

الخطوة 16: العمل   SpringBootJpaExampleApplication.java الملف. يمكننا رؤية تطبيقنا في منفذ   8085 العمل.

الخطوة 17: فتح المتصفح وتحديد URL http://localhost: 8085/h2-console/، حيث يظهر نوع المحرك، الذي قمنا بتمريره بنجاح في   application.properties URL JDBC المحدد في الملف واسم المستخدم الافتراضي sa في الملف.

يمكننا أيضًا عن طريق النقر على   اختبار الاتصال الزر لاختبار الاتصال. إذا تم اكتمال الاتصال بنجاح، يتم عرض رسالة "نجاح الاختبار".

الخطوة 18: انقر   Connect (الرابط) الزر. يظهر لنا ما قمنا بتحديده في   User.java النظام المحدد في البيانات الديناميكية.

الخطوة 19: أ�行اء التالي لمعرفة الأنظمة التي قمنا بتعديلها   data.sql بيانات الملف.

SELECT * FROM USERDATA;