English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
عمليات CRUD هي أساس أكثر مواقع الويب حيوية. لذلك، يجب أن نرتب مما يعني إنشاء، قراءة/استرجاع، تحديثوال حذفهذه هي وظائف الأرشيف الدائم الأربعة الأساسية.
CRUD هو موجه نحو البيانات، وهو يمكن تعريف CRUD كاتفاقية واجهة المستخدم، تتيح من خلال نماذج الحاسوب والتحقيقات مراجعة، البحث وتعديل المعلومات.فعالات HTTP
استخدام الطريقة القياسية. HTTP يحتوي على فعالات مهمة. POST: إنشاء مصدر جديد GET: قراءة المصدر PUT: تحديث المصدر الحالي DELETE:
حذف المصدر
عمليات CRUD القياسية عمليات الإنشاء: سيقوم بتنفيذ جملة INSERT لإنشاء سجلات جديدة. عمليات القراءة: سيقوم بقراءة سجلات الجدول بناءً على المعلمات المدخلة. عمليات التحديث: ي�行ر تعديل على الجدول. وهو يعتمد على المعلمات المدخلة. عمليات الحذف:
كيف تعمل عمليات CRUD عمليات CRUD هي أساس أكثر مواقع الويب حيوية. لذلك، يجب أن نرتب CRUD مع HTTPفعل الحركة
مميزة افترض أننا نريدإنشاء وأجرِ العمليات التالية: ، لإنشاء سجل جديد يجب أن نستخدم فعل العملية HTTP تحديثسجل واحد، يجب أن نستخدم PUT فعل. نفس الشيء، إذا كنت تريد حذفإذا كان لديك سجل، يجب أن تستخدم DELETE فعل. من خلال عمليات CRUD، يتم منح المستخدمين والمديرين صلاحية استرجاع، إنشاء، تعديل وحذف السجلات عبر الإنترنت.
لدينا العديد من الخيارات لتنفيذ عمليات CRUD. أحد الخيارات الأكثر فعالية هو إنشاء مجموعة من الدوال التخزينية في SQL لتنفيذ العمليات.
العمليات CRUD تشير إلى جميع الوظائف الرئيسية التي يتم تنفيذها في تطبيقات قواعد البيانات المعلوماتية. يمكن ربط كل حرف في CRUD بمساعدة جملة SQL ووسيلة HTTP.}
العمليات | SQL | كلمات الفعل HTTP | خدمات الويب RESTful |
إنشاء | إدراج | PUT/POST | وأجرِ العمليات التالية: |
قراءة | استعلام | GET | GET |
تحديث | تحديث | PUT/POST/PATCH | PUT |
حذف | حذف | حذف | حذف |
Spring Boot تقدم واجهة تُدعى CrudRepository الواجهات التي تحتوي على طرق CRUD. إنها في حزمة org.springframework.data.repository محددة في المكتبةالواجهة. إنها توفر عمليات Crud العامة على المخزن. إذا أردت استخدام CrudRepository في تطبيقك، فعليك إنشاء واجهة وت扩نها CrudRepository .
اللغة
public interface CrudRepository<T,ID> extends Repository<T,ID>
حيث
T هو نوع المجال الذي يتم إدارة المخزن به. ID هو نوع الـ ID الذي يتم إدارة المخزن به.
على سبيل المثال:
public interface StudentRepository extends CrudRepository<Student, Integer> { }
في المثال السابق، قمنا بإنشاء واجهة تُدعى StudentRepository واجهة، الواجهة التي ت扩ن من CrudRepository. حيث Student هو المخزن الذي نريد إدارة، بينما Integer هي نوع الـ ID المحدد في مخزن الـ Student.
يقدم JpaRepository طرقًا تتعلق بـ JPA مثل تحديث، سياق الاستمرارية، وحدف سجل جماعي. إنه في حزمة محددة في org.springframework.data.jpa.repository. تمدد JpaRepository CrudRepository وال PagingAndSortingRepository.
على سبيل المثال:
public interface BookDAO extends JpaRepository { }
تسمح هذه الواجهات لـ Spring بالبحث عن واجهات المخزن وتوليد代理 أوبجكت لذلك. هذه المجموعة توفر لنا طرقًا تسمح بتنفيذ بعض العمليات الشائعة. يمكننا أيضًا تعريف طرق مخصصة.
CrudRepository | JpaRepository |
لا يقدم CrudRepository أي طرق لصفة التصفية والترتيب. | تمدد JpaRepository بـ PagingAndSortingRepository. يقدم جميع طرق تنفيذ التصفية. |
تعتبر كـعلامةالواجهة. | تمدد JpaRepository CrudRepository وال PagingAndSortingRepository . |
يقدم فقط وظائف CRUD. مثل، findById(),findAll()، إلخ. | يقدم بعض الطرق الإضافية بالإضافة إلى طرق PagingAndSortingRepository وCrudRepository. مثل، flush(),deleteInBatch(). |
للإستخدام عند عدم الحاجة إلى وظائف JpaRepository وPagingAndSortingRepository. | للإستخدام عند تنفيذ وظائف التصفية والترتيب في التطبيق. |
دعونا نضبط تطبيق Spring Boot وننفذ عمليات CRUD.
الخطوة 1: فتح Spring Initializr http://start.spring.io .
الخطوة 2: اختيار إصدار Spring Boot 2.3.0.M1.
الخطوة 2: Groupالاسم. قمنا بتقديم com.w3codebox.
الخطوة 3: تقديم Artifact الرقم المعرفي. قمنا بتقديم spring-boot-crud-operation.
الخطوة 5: إضافة الإعتمادات Spring Web،Spring Data JPA،وال قاعدة بيانات H2.
الخطوة 6: انقر Generate (مولد) أثناء النقر على زر "مولد"، سيقوم بتغليف الميزات في Jar ملف ونسخه إلى النظام المحلي.
الخطوة 7: استخراج ملف Jar ونسخه إلى مساحة العمل STS.
الخطوة 8: نقلاستيراد مجلد المشروع إلى STS.
ملف->استيراد->مشروع Maven موجود->استعراض->اختيار مجلد spring-boot-crud-operation->إتمام
استيراد بعض الوقت.
الخطوة 9: إنشاء مسمى في مجلد com.w3codebox.model مكتبة. مجلد src/main/java.
الخطوة 10: في إنشاء فئة في com.w3codebox.model. قمنا بإنشاء فئة Books. في "كتاب" الفئة، قمنا بأداء العمليات التالية:
تعريف أربعة متغيرات bookid, bookname, author،وال إنشاء Getters و Setters
نقر بزر الماوس الأيمن على الملف-> المصدر-> إنشاء Getters و Setters استخدام التفسيرات @Entityلإشارة الصفةEntity. استخدام التفسيرات @Table، علامة هذا الفئة Table الاسم. باستخدام الملصقات @Column تعريف كل متغير Column .
Books.java
package com.w3codebox.model; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; //تسمية الفئة كـEntity @Entity //تحديد اسم الفئة كاسم الجدول @Table public class Books { //تحديد معرف الكتاب كمفتاح رئيسي @Id @Column private int bookid; @Column private String bookname; @Column private String author; @Column private int price; public int getBookid() { return bookid; } public void setBookid(int bookid) { this.bookid = bookid; } public String getBookname() { return bookname; } public void setBookname(String bookname) { this.bookname = bookname; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } }
الخطوة 11: في في مجلد src/main/java قمنا بإنشاء صفة اسمها com.w3codebox.controller المجموعة.
خطوة 12: في في com.w3codebox.controller قمنا بإنشاء صفة Controller. قمنا بإنشاء صفة BooksController. في صفة BooksController، قمنا بما يلي:
استخدام التفسيرات @RestControllerلإشارة الصفة RestController . استخدام التفسيرات @Autowired التفسيرات الذاتية BooksService الصفة. تعريف التالي من الطرق: getAllBooks(): . سيقوم بإرجاع قائمة بجميع الكتب. getBooks(): سيقوم بإرجاع تفاصيل الكتاب المحدد الذي نحدده في متغير المسار. باستخدام تفسير @PathVariable، قمنا بتحويل bookid كمعرف. deleteeBook(): سيتم حذف الكتاب المحدد الذي نحدده في متغير المسار. saveBook(): تخزين تفاصيل كتاب. تفسير @RequestBody يعني أن يجب ربط معرفات المعلمات بالجسم المرسل من الطلب. update(): يجب تحديث سجل واحد في النص. يجب علينا تحديد السجل الذي نريد تحديثه في النص لتحقيق الغرض نفسه، ونحن نستخدم تفسير @RequestBody.
BooksController.java
بكيتاج com.w3codebox.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; إدخال org.springframework.web.bind.annotation.DeleteMapping; إدخال org.springframework.web.bind.annotation.GetMapping; إدخال org.springframework.web.bind.annotation.PathVariable; إدخال org.springframework.web.bind.annotation.PostMapping; إدخال org.springframework.web.bind.annotation.PutMapping; إدخال org.springframework.web.bind.annotation.RequestBody; إدخال org.springframework.web.bind.annotation.RestController; import com.w3codebox.model.Books; import com.w3codebox.service.BooksService; //تسمية الكلاس كـ Controller @RestController public class BooksController { //تجميع كلاس BooksService تلقائيًا @Autowired BooksService booksService; //إنشاء خارطة للرسائل الباردة لاسترجاع تفاصيل جميع الكتب من قاعدة البيانات @GetMapping("/book") private List<Books> getAllBooks() { return booksService.getAllBooks(); } //إنشاء خارطة للرسائل الباردة لاسترجاع تفاصيل الكتاب المحدد @GetMapping("/book/{bookid}") private Books getBooks(@PathVariable("bookid") int bookid) { return booksService.getBooksById(bookid); } //إنشاء خارطة للرسائل الباردة ل�除 الكتاب المحدد @DeleteMapping("/book/{bookid}") private void deleteBook(@PathVariable("bookid") int bookid) { booksService.delete(bookid); } //إنشاء خارطة للرسائل الساخنة لإصدار تفاصيل الكتاب في قاعدة البيانات @PostMapping("/books") private int saveBook(@RequestBody Books books) { booksService.saveOrUpdate(books); return books.getBookid(); } //إنشاء خارطة للرسائل الباردة لتحديث تفاصيل الكتاب @PutMapping("/books") private Books update(@RequestBody Books books) { booksService.saveOrUpdate(books); return books; } }
الخطوة 13: في مجلد في مجلد src/main/java أنشئ اسمه com.w3codebox.service المجموعة.
الخطوة 14: إنشاء Service في المجلد تم إنشاء كلاس اسمه BooksService الخدمة المحددة.
BooksService.java
package com.w3codebox.service; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.w3codebox.model.Books; import com.w3codebox.repository.BooksRepository; //تحديد منطق الأعمال @Service public class BooksService { @Autowired BooksRepository booksRepository; //استخدام طريقة findAll() من cruddrepository للحصول على جميع سجلات الكتب public List<Books> getAllBooks() { List<Books> books = new ArrayList<Books>(); booksRepository.findAll().forEach(books1 -> books.add(books1)); return books; } //استخدام طريقة findById() من cruddrepository للحصول على سجل معين public Books getBooksById(int id) { return booksRepository.findById(id).get(); } //استخدام طريقة save() من CrudRepository لتح Konservieren سجل معين public void saveOrUpdate(Books books) { booksRepository.save(books); } //استخدام طريقة deleteById() من CrudRepository لإزالة سجل معين public void delete(int id) { booksRepository.deleteById(id); } //تحديث السجل public void update(Books books, int bookid) { booksRepository.save(books); } }
الخطوة 15: في مجلد في مجلد src/main/java أنشئ اسمه com.w3codebox.repository المجموعة.
الخطوة 16: قم بإنشاء المكتبةفي المجموعة تم إنشاء واجهة اسمها BooksRepository المكتبة. هي قابلة للتمديد من واجهة المكتبة Crudالواجهة.
BooksRepository.java
package com.w3codebox.repository; import org.springframework.data.repository.CrudRepository; import com.w3codebox.model.Books; //repository that extends CrudRepository public interface BooksRepository extends CrudRepository<Books, Integer> { }
الآن، سنقوم بتعريف application.properties في ملف تكوين المصدر URL، اسم فئة المحرك، اسم المستخدموال كلمة المرور.
الخطوة 17: فتح application.properties ملفًا وقم بضبط المواصفات التالية.
application.properties
spring.datasource.url=jdbc:h2:mem:books_data spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.jpa.database-platform=org.hibernate.dialect.H2Dialect#activating the H2 console
بعد إنشاء جميع الفئات والصناديق، يبدو مجلد المشروع كما يلي.
الآن سنقوم بتشغيل هذا التطبيق.
الخطوة 18: فتح SpringBootCrudOperationApplication.java ملفًا كتطبيق جافا سكريبت.
SpringBootCrudOperationApplication.java
package com.w3codebox; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @SpringBootApplication { public class SpringBootCrudOperationApplication { public static void main(String[] args) } }
في الخطوات القادمة، سنستخدم عميل rest client Postman. لذلك، تأكد من أنك قد قمت بتثبيت تطبيق Postman في نظامك. فتح Postmanالخطوة 19:
اختر وأجرِ العمليات التالية: POST اختراطلب URL http://localhost:8080/books. جسم اختر نوع المحتوى JSON(application/json).
{ "price": "590" إدخال البيانات. تم إدخال البيانات التالية في الجسم: "bookname": "Core and Advance Java", "author": "R. Nageswara Rao", }
انقرإرسال
"price": "800" بعد تنفيذ الطلب بنجاح، سيتم عرض الحالة: 200 OK
. هذا يعني أن السجلات تم إدخالها بنجاح في قاعدة البيانات.
مثلما تم إدخال البيانات التالية. } { "bookid": "6321", "bookname": "Data Structures and Algorithms in Java", "author": "Robert Lafore", {"bookid": "0982","bookname": "Programming with Java","author": "E. Balagurusamy","price": "350" } { "price": "590" "bookid": "5433", "bookname": "Effective Java", "author": "Joshua Bloch", }
"price": "670"
دعونا نزور لوحة تحكم H2 لرؤية البيانات. الخطوة 20: فتح متصفح الويب واطلب URL http://localhost:8080/h2-console. انقر الاتصال
انقر الزر الاتصال، كما يظهر أدناه.الزر، سنرى في قاعدة البيانات Books الجدول، كما يظهر أدناه.
الخطوة 21: انقر Books الجدول، ثم انقر تشغيلالزر. تظهر هذه الجدول بياناتنا التي قمنا بوضعها في النص.
الخطوة 22: فتح Postman، ويقوم بإرسال URL http://localhost:8080/books. GET طلب. يعود ببياناتنا التي قمنا بوضعها في قاعدة البيانات.
نرسل URL http://localhost:8080/book/{bookid} GET الطلب. قمنا بتحديد bookid 6830 هو يعود بتفاصيل الكتاب الذي له ID
بشكل مماثل، يمكننا أيضًا إرسال DELETE الطلب لحذف السجل. افترض أننا نريد حذف سجل الكتاب الذي له ID 5433 سجل الكتاب.
اختر DELETE الطريقة وتحديد URL http://localhost:8080/كتاب/5433. قم مرة أخرى بتنفيذ Select البحث. وجدنا أن ID 5433 الكتاب قد تم حذفه من قاعدة البيانات.
بشكل مماثل، يمكننا أيضًا إرسال PUT الطلب لتحديث السجل. دعونا نحدث سجل الكتاب الذي له ID 6321 سعر الكتاب.
اختر PUT في جسم الطلب، ألصق السجل الذي تريد تحديثه وقم بتعديله. في هذا المثال، نريد تحديث سجل الكتاب الذي له ID 6321. في السجل التالي، قمنا بتعديل سعر الكتاب.
{ "bookid": "6321", "bookname": "Data Structures and Algorithms in Java", "author": "Robert Lafore", "price": "500" }
انقرإرسال
الآن، انتقل إلى لوحة تحكم H2، وانتظر إذا تم التغيير. نرى أن سعر الكتاب قد تغير كما يلي.