JavaRush /مدونة جافا /Random-AR /إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring...
Artur
مستوى
Tallinn

إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot. الجزء 1

نشرت في المجموعة
اسمحوا لي أن أبدأ بالقول إنني استمتعت حقًا بسلسلة المقالات التي كتبتها إليانور كيري بعنوان "نظرة عامة على REST". فيما يلي روابط لهذه المقالات: إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 1بشكل عام قررت أن أترك الحرية وأضيف لهم القليل. وهي معرفة كيفية إنشاء قاعدة بيانات وربطها بهذا التطبيق. من أين نبدأ؟ ربما من قاعدة البيانات نفسها. قررت استخدام PostgreSQL لأنني أحببت واجهة الإدارة سهلة الاستخدام. أولاً، نحتاج إلى تنزيل مثبت PostgreSQL، على سبيل المثال من هنا: تنزيل قاعدة بيانات PostgreSQL لن أصف عملية التثبيت الكاملة، لأن قد يختلف اعتمادًا على نظام التشغيل الخاص بك. ومع ذلك، ألاحظ أنه في هذه العملية ستحتاج إلى التوصل إلى كلمة مرور المسؤول لدور (حساب) postgres الافتراضي وإدخالها مرتين. للتبسيط، قمت بتعيين كلمة المرور إلى 123 . بالطبع، في المشاريع الحقيقية، من الضروري التوصل إلى شيء أكثر تعقيدا. إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 2بعد ذلك، يطالبك برنامج التثبيت بتحديد منفذ، وقد تركته بقيمته الافتراضية. إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 3تم أيضًا ترك اللغة كإعداد افتراضي. إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 4تم تثبيته، ثم افتح واجهة المسؤول pgAdmin . سيتم فتح متصفح بنافذة منبثقة حيث سيُطلب منا إدخال كلمة المرور التي تم إنشاؤها مسبقًا. إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 5الآن نحن بحاجة إلى ضبط لغة الواجهة. للقيام بذلك، انقر فوق تكوين pgAdmin --> متنوع --> لغة المستخدم وحدد اللغة المطلوبة --> حفظ وأعد تحميل صفحة المتصفح . إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 6في الزاوية العلوية اليسرى من الصفحة، انقر فوق " الخادم" ، وستظهر نافذة " الاتصال بالخادم " . أدخل كلمة المرور الخاصة بنا مرة أخرى وحدد المربع حفظ كلمة المرور حتى لا تدخلها في كل مرة. إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 7يمكننا الاستمرار في استخدام دور المسؤول لجميع قواعد البيانات، ولكن سيكون من الأفضل إنشاء دور جديد، لأنه قد يكون لدينا العديد من قواعد البيانات والعديد من البرامج التي تستخدمها. للقيام بذلك، في الزاوية اليسرى العليا، انقر على PostgreSQL 12 --> RMB عند تسجيل الدخول/أدوار المجموعة --> إنشاء --> تسجيل الدخول/دور المجموعة إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 8 . في النافذة المنبثقة، في علامة التبويب " عام "، أدخل اسم الدور. لقد قمت بتسمية جذر الدور . إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 9في علامة التبويب " التعريف " نقوم بإنشاء كلمة مرور جديدة، وتركت 123 فقط حتى لا يتم الخلط بيني وبين ذلك. إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 10انتقل إلى علامة التبويب " الحقوق " وقم بوضع علامة على جميع العناصر الضرورية. لقد قمت بضبط كافة العناصر على " نعم ". انقر فوق " حفظ " إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 11وننتقل إلى إنشاء قاعدة بيانات. انقر بزر الماوس الأيمن على "قواعد البيانات" --> إنشاء --> قاعدة بيانات إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 12 في علامة التبويب " عام "، أنشئ اسم قاعدة البيانات. فليكن، على سبيل المثال، العملاء . نقوم بتعيين المالك إلى الجذر ، الذي أنشأناه في الخطوة السابقة. إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 13على ال "التعريف »تحقق من أن لدينا مجموعة ترميز UTF8 . انقر على " حفظ ". هذا كل شيء، تم إنشاء قاعدة البيانات الخاصة بنا (فارغة في الوقت الحالي). إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 14عند هذه النقطة يمكننا أن ننتهي بـ pgAdmin، لأن... سنقوم بإنشاء الجداول برمجيًا، ولكن، في حالة حدوث ذلك، سأوضح لك كيفية إنشاء جدول يدويًا. قم بتوسيع العملاء -> المخططات -> الشجرة العامة . انقر بزر الماوس الأيمن فوق الجداول -> إنشاء -> جدول . إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 15سيتم فتح نافذة منبثقة. في علامة التبويب " عام "، نقوم بتعيين اسم لجدولنا، على سبيل المثال test_table ، ونقوم بتعيين الجذر باعتباره المالك . إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 16انتقل إلى علامة التبويب " الأعمدة "، وانقر على " + " لإنشاء عمود جديد. أدخل الاسم " id " ونوع البيانات bigserial ، وهو ما يعادل النوع الطويل في Java، ولكن مع زيادة تلقائية (عند إضافة سجل جديد، سيزيد المعرف تلقائيًا بمقدار واحد). نضع علامة على القيمة غير NULL كـ " Yes "، والمفتاح الأساسي هو أيضًا " Yes ". نقوم بإنشاء أعمدة " الاسم " و" البريد الإلكتروني " و" الهاتفإضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 17 " بنفس الطريقة . نختار نوع البيانات المتغير ، وهذا يتوافق مع نوع السلسلة ، ولكنه يسمح لك بتعيين الحد الأقصى للطول. قمنا بتعيين الحد الأقصى لطول الاسم على 200 حرف لملء الاسم بالكامل. في عمود واحد. لقد قمنا بتعيين الحد الأقصى لطول البريد الإلكتروني على 254 حرفًا. لماذا يمكن العثور على هذا الحد الأقصى للطول في البريد الإلكتروني هنا . بالنسبة لرقم الهاتف، حدد 20 حرفًا، وهذا يجب أن يكون كافيًا. قليلا عن أرقام الهواتف: المفاهيم الخاطئة لدى المبرمجين حول أرقام الهواتف (هبر) نضع علامة غير فارغة في جميع الأعمدة على أنها " نعم " إذا أردنا أن تكون هذه البيانات إلزامية. انقر على " حفظ ". هذا كل شيء، تم إنشاء الجدول. لحذف جدول الاختبار الخاص بنا، انقر بزر الماوس الأيمن عليه (في الشجرة) ثم " حذف "، لأنه لم نعد بحاجة إليها، لأننا سنقوم بإنشاء الجداول من برنامجنا. أغلق pgAdmin وانتقل إلى برنامجنا. دعونا نفتح IDEA مع مشروعنا. انقر فوق "قاعدة البيانات" في العمود الأيمن من الواجهة، ثم انقر فوق " + " لإضافة قاعدة البيانات الخاصة بنا. مصدر البيانات التالي -> PostgreSQL . في النافذة المنبثقة، أدخل في حقل المستخدم الدور الجذري الذي أنشأناه سابقًا، وكلمة المرور الخاصة بناإضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 18إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 19123 في حقل كلمة المرور . في حقل قاعدة البيانات نكتب اسم قاعدة بيانات عملائنا . نضغط على الزر اختبار الاتصال ، وإذا رأينا علامة اختيار خضراء تحتها، فكل شيء على ما يرام، ونضغط على الزر موافق . إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 20هذا كل شيء، لقد اتصلنا بقاعدة البيانات، والآن دعنا ننتقل إلى ملف pom.xml ونضيف التبعيات. للعمل مع قاعدة بيانات ORM :
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
لإنشاء وحدة تحكم REST:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
لخادم Tomcat:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
بالنسبة إلى PostgreSQL:
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.2.10</version>
</dependency>
الآن بعد أن قمنا بفرز pom.xml، دعنا ننتقل إلى مجلد الموارد ونملأ ملف application.properties كما يلي:
spring.datasource.url=jdbc:postgresql://localhost:5432/customers
spring.datasource.username=root
spring.datasource.password=123

spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.database=postgresql
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL10Dialect
أدخلنا هنا عنوان URL لقاعدة البيانات الخاصة بنا، وقمنا بتوفير معلومات تسجيل الدخول وكلمة المرور الخاصة بها، وقمنا بتسجيل برنامج التشغيل لـ PostgreSQL، وأشرنا إلى أننا سنستخدم نوع بيانات PostgreSQL، وحددنا اللهجة للإسبات. بعد ذلك، لنقم بإنشاء دليل جديد يسمى قاعدة البيانات في نفس مجلد الموارد . في هذا الدليل سنقوم بإنشاء ملفين: initDB.sql و populateDB.sql . الأول سيكون مسؤولاً عن إنشاء الجداول، والثاني سيكون مسؤولاً عن ملئها في البداية. دعونا نفتح initDB.sql ونرى شريطًا أخضر في الأعلى يشير إلى أنه لم يتم تكوين لهجة SQL . هذا يعني أننا لم نختار لهجة SQL لمشروعنا (وهناك العديد منها). انقر على الجانب الأيمن من نفس الشريط الموجود على النقش تغيير اللهجة إلى… . في النافذة المنبثقة، انقر فوق Project SQL Dialect ، وبما أن قاعدة البيانات الخاصة بنا هي PostgreSQL ، فإننا نختار اللهجة التي تحمل الاسم نفسه. انقر فوق "موافق" إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot.  الجزء 1 - 21 لننتقل إلى ملء ملفات .sql الخاصة بنا . لنبدأ أولاً بملء ملف initDB.sql :
CREATE TABLE IF NOT EXISTS clients
(
    id    BIGSERIAL PRIMARY KEY ,
    name  VARCHAR(200) NOT NULL ,
    email VARCHAR(254) NOT NULL ,
    phone VARCHAR(20)  NOT NULL
);
إذا تمت كتابة بعض الكلمات بخلاف العملاء بخط أبيض ، بعد ملء الملف ، فانقر بزر الماوس الأيمن داخل النص وحدد تغيير اللهجة --> PostgreSQL مرة أخرى . كما قد تكون قد فهمت بالفعل، فهذه هي نفس البيانات التي قمنا بملئها عند إنشاء جدول الاختبار يدويًا. هنا يتم تنسيقها بلهجة PostgreSQL الخاصة بلغة SQL. الآن لنملأ ملف populateDB.sql :
INSERT INTO clients VALUES
(1, 'Vassily Petrov', 'vpetrov@jr.com', '+7 (191) 322-22-33)'),
(2, 'Pjotr Vasechkin', 'pvasechkin@jr.com', '+7 (191) 223-33-22)');
إذا كان اسم جدول عملائك مكتوبًا بأحرف حمراء، فلا بأس. النقطة المهمة هي أننا لم نقم بإنشاء هذا الجدول بعد، ولم يتعرف عليه IDEA بعد. لإنشاء الجدول وتعبئته، نحتاج إلى العودة إلى ملف application.properties وإضافة الأسطر الثلاثة التالية هناك:
spring.datasource.initialization-mode=ALWAYS
spring.datasource.schema=classpath*:database/initDB.sql
spring.datasource.data=classpath*:database/populateDB.sql
نقول في هذه السطور أننا نريد تهيئة قاعدة البيانات برمجيًا والإشارة إلى الملفات التي يجب استخدامها لهذا الغرض. بعد ذلك، انتقل إلى الطريقة الرئيسية لتطبيقنا وقم بتشغيله . بعد ذلك، انتقل إلى pgAdmin --> الخوادم --> PostgreSQL 12 --> قواعد البيانات --> العملاء --> المخططات --> عام ، وانقر بزر الماوس الأيمن على " الجداول "، و" التحديث ". إذا سارت الأمور على ما يرام، فسنرى جدول العملاء الذي أنشأناه . بعد ذلك، ارجع إلى ملف application.properties وقم بالتعليق على السطر.
spring.datasource.data=classpath*:database/populateDB.sql
على النحو التالي:
spring.datasource.url=jdbc:postgresql://localhost:5432/customers
spring.datasource.username=root
spring.datasource.password=123

spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.database=postgresql
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL10Dialect

spring.datasource.initialization-mode=ALWAYS
spring.datasource.schema=classpath*:database/initDB.sql
#spring.datasource.data=classpath*:database/populateDB.sql
إذا لم نفعل ذلك، ففي المرة التالية التي نقوم فيها بتشغيل البرنامج سنتلقى الخطأ التالي: org.postgresql.util.PSQLException: خطأ: تنتهك قيمة المفتاح المكررة القيد الفريد "clients_pkey" . يحدث هذا لأننا ملأنا الحقول بالمعرفين 1 و 2 في الجدول بالفعل (حتى أثناء الإطلاق الأول). في الجدول الذي أنشأناه، تم تحديد حقل المعرف على أنه bigserial ، والذي يتوافق مع النوع الطويل في Java. ومع ذلك، في برنامجنا نوع هذا الحقل هو عدد صحيح . قررت أن أوضح كيفية استخدام Long (BIGSERIAL) لأنه يحتوي على نطاق أكبر من عدد صحيح. الحقيقة هي أنه في الجداول، يمكن استخدام الحقل المعين كمفتاح أساسي ليس فقط لتخزين معرفات المستخدمين ، ولكن أيضًا لتخزين فهارس مجموعة واسعة من البيانات، ويمكن أن يتجاوز عدد هذه السجلات الحد الأقصى لقيمة عدد صحيح. على سبيل المثال، إذا كان برنامجنا يأخذ بعض القياسات كل ثانية ويكتب البيانات في جدول. من أجل إعادة كتابة فئاتنا لاستخدام نوع البيانات الطويل، نحتاج إلى تغيير النوع من عدد صحيح إلى طويل في جميع الفئات والأساليب التي تستخدم حقل المعرف . لن نفعل ذلك، لأن البرنامج كتبه المؤلف في الأصل لنوع id Integer، مما يعني أن هذا منطقي إلى حد ما. للمتابعة، دعونا مرة أخرى نزيل جدول العملاء الذي أنشأناه من قاعدة البيانات لدينا، ولكن الآن سنحاول القيام بذلك برمجيًا وليس يدويًا. للقيام بذلك، قم بالتعليق على الكود الخاص بنا في ملف initDB.sql وأضف سطرًا واحدًا:
-- CREATE TABLE IF NOT EXISTS clients
-- (
--     id    BIGSERIAL PRIMARY KEY ,
--     name  VARCHAR(200) NOT NULL ,
--     email VARCHAR(254) NOT NULL ,
--     phone VARCHAR(20)  NOT NULL
-- );
DROP TABLE IF EXISTS clients
لنقم بتشغيل البرنامج، انتقل إلى pgAdmin ، وانقر بزر الماوس الأيمن على " الجداول " (في قاعدة بيانات عملائنا ) - -> " تحديث "، وسنرى أن جدولنا قد اختفى. ملحوظة! كن حذرًا عند استخدام هذا الأمر، وإلا فإنك تخاطر بفقدان جميع البيانات الموجودة في جدولك! دعنا نعود إلى ملف initDB.sql ونعيد كتابته كما يلي:
CREATE TABLE IF NOT EXISTS clients
(
    id    SERIAL PRIMARY KEY ,
    name  VARCHAR(200) NOT NULL ,
    email VARCHAR(254) NOT NULL ,
    phone VARCHAR(50)  NOT NULL
);
لقد قمنا هنا بتغيير نوع المعرف إلى SERIAL ، والذي يطابق نوع العدد الصحيح الذي نستخدمه لحقل المعرف في برنامجنا. بالإضافة إلى ذلك، تمت زيادة الحد الأقصى لطول حقل الهاتف حتى نتمكن من استخدام المسافات والأحرف الخاصة بحرية (الأقواس والشرطات وما إلى ذلك) في كتابتها. الحد الأقصى لعدد الأرقام في رقم الهاتف حاليًا هو 18 رقمًا (إذا كانت ذاكرتي تخدمني بشكل صحيح). لقد قمت بتعيين الحجم على 50 حرفًا للتأكد. دعنا نذهب إلى ملف application.properties ونزيل التعليق عن السطر:
spring.datasource.data=classpath*:database/populateDB.sql
لنقم بتشغيل برنامجنا، ونذهب إلى pgAdmin، ونتأكد من إنشاء جدولنا، ثم نعلق على هذا السطر مرة أخرى.
#spring.datasource.data=classpath*:database/populateDB.sql
هذا هو المكان الذي ربما سأنهي فيه الجزء الأول من المقالة. أتمنى أن تنال إعجابكم، اكتبوا التعليقات (حتى لو لم تعجبكم). في الجزء الثاني، سنقوم بإعادة كتابة فصولنا حتى تتمكن من العمل مع قواعد البيانات الحقيقية. متابعة: إضافة قاعدة بيانات PostgreSQL إلى خدمة RESTful على Spring Boot. الجزء 2 محدث شكرًا للمشرفين على تصحيح الصور وتنسيق النص!
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION