MariaDB
 sql >> डेटाबेस >  >> RDS >> MariaDB

डॉकर, जावा स्प्रिंग और जेडीबीसी का उपयोग करके मारियाडीबी के साथ शुरुआत करना

2009 में MySQL से फोर्क किए जाने के बाद से, MariaDB पिछले एक दशक में डेवलपर्स के लिए सबसे लोकप्रिय डेटाबेस में से एक बन गया है। हालांकि कई प्रौद्योगिकीविदों ने इसके खुले स्रोत की जड़ों के कारण समाधान के रूप में इसकी ओर रुख किया है और यह संबंधपरक डेटाबेस की दुनिया में निहित है, जो वास्तव में केवल मारियाडीबी की पेशकश की सतह को खरोंचना शुरू कर देता है।

इन वर्षों में कई सुविधाओं और कार्यक्षमताओं को जोड़कर मारियाडीबी ने MySQL से विचलन किया है, जिनमें से अधिकांश हम इस लेख के संदर्भ में गोता लगाने में सक्षम नहीं होंगे। हालाँकि, एक बात, सबसे बढ़कर, वही रही है; एक आधुनिक, खुला स्रोत, उच्च गुणवत्ता वाला डेटाबेस समाधान प्रदान करना जिसका उपयोग डेवलपर्स अपने नवाचार को शक्ति देने के लिए कर सकते हैं।

लेकिन इससे पहले कि आप मारियाडीबी में गोता लगा सकें और इसकी पेशकश की सभी चीजों की जांच कर सकें, आपको सबसे बुनियादी सवालों के जवाब देने होंगे; आप मारियाडीबी का उपयोग कैसे शुरू करते हैं?

मारियाडीबी और जावा डाटाबेस कनेक्टिविटी (जेडीबीसी)

यह कोई आश्चर्य की बात नहीं है कि जावा, और अंततः जावा वर्चुअल मशीन (JVM) का वातावरण, डेवलपर्स द्वारा एप्लिकेशन बनाने के लिए उपयोग किया जाने वाला एक अत्यंत लोकप्रिय विकल्प रहा है।

इसे ध्यान में रखते हुए, मैंने आपको एक डॉकर छवि, जावा और मारियाडीबी जेडीबीसी क्लाइंट का उपयोग करके मारियाडीबी (सामुदायिक सर्वर) के साथ आरंभ करने के चरणों के बारे में बताने के लिए यह संक्षिप्त पूर्वाभ्यास लिखा है।

इस पूर्वाभ्यास में आप एक सरल (मावेन आधारित) "टू डू" एप्लिकेशन बनाने के लिए मारियाडीबी और जेडीबीसी का उपयोग करेंगे, जो कि जावा स्प्रिंग का उपयोग करके, बुनियादी सीआरयूडी (क्रिएट-रीड-अपडेट-डिलीट) करने के लिए उपयोग करने के लिए विभिन्न समापन बिंदुओं को उजागर करेगा। ) मारियाडीबी डेटाबेस इंस्टेंस पर संचालन।

आइए शुरू करें!

आवश्यकताएँ

कोड में कूदने से पहले, आपको यह सुनिश्चित करना होगा कि आपकी मशीन पर कुछ चीजें हैं:

  • मारियाडीबी क्लाइंट
  • डॉकर
  • जावा (व. 8+)
  • कर्ल (एपीआई एंडपॉइंट की जांच के लिए)

Docker का उपयोग करके एक नया MariaDB उदाहरण बनाना

मारियाडीबी के साथ आरंभ करने के सबसे सरल तरीकों में से एक, चाहे आप किसी भी ऑपरेटिंग सिस्टम का उपयोग कर रहे हों, डॉकर हब से मारियाडीबी सर्वर डॉकर छवि को खींचना और इसका उपयोग करके एक नया कंटेनर बनाना है।

ऐसा करने के लिए बस एक टर्मिनल विंडो खोलें और निम्नलिखित चलाएँ:

$ docker run -p 3306:3306 -d --name mariadb -eMARIADB_ROOT_PASSWORD=Password123! mariadb/server:10.4 

यही बात है। अब आपके पास MariaDB का एक रनिंग इंस्टेंस होना चाहिए। बहुत दर्द रहित, है ना?

आप निम्नलिखित को चलाकर डॉकर कंटेनर के भीतर इंस्टेंस की पुष्टि कर सकते हैं:

$ docker ps

और आपको अपने कंटेनर को आउटपुट के भीतर देखना चाहिए।

MariaDB से कनेक्ट हो रहा है

अब जब आपके पास एक नए डॉकर कंटेनर के भीतर एक चल रहे मारियाडीबी सर्वर इंस्टेंस है, तो अगला कदम मारियाडीबी क्लाइंट का उपयोग करके डेटाबेस इंस्टेंस से कनेक्ट और संचार करना होगा।

<ब्लॉकक्वॉट>

जंगली में कई SQL क्लाइंट उपलब्ध हैं। सादगी के लिए, मैंने यह प्रदर्शित करना चुना है कि आधिकारिक मारियाडीबी क्लाइंट का उपयोग कैसे करें, लेकिन निश्चित रूप से आप जो भी क्लाइंट पसंद करते हैं उसका उपयोग करने के लिए स्वतंत्र महसूस करें।

निम्नलिखित को क्रियान्वित करके अपने मारियाडीबी इंस्टेंस से कनेक्ट करें:

$ mariadb --host 127.0.0.1 -P 3306 --user root -pPassword123!

आपको निम्न जैसा कुछ दिखना चाहिए, जिसका अर्थ है कि आप मारियाडीबी इंस्टेंस से सफलतापूर्वक जुड़ गए हैं!

एक बार कनेक्ट होने के बाद आप एक नया डेटाबेस बना सकते हैं।

CREATE DATABASE todo;

फिर एक नई टेबल बनाएं।

CREATE TABLE todo.tasks (
  id INT(11) unsigned NOT NULL AUTO_INCREMENT,
  description VARCHAR(500) NOT NULL,
  completed BOOLEAN NOT NULL DEFAULT 0,
  PRIMARY KEY (id)
);

Java Spring, JDBC और MariaDB के साथ शुरुआत करना

एक डेटाबेस इंस्टेंस का विस्तार और स्कीमा बनाने के साथ आप एक नया जावा एप्लिकेशन बनाने के लिए तैयार हैं।

मावेन प्रोजेक्ट बनाएं

https://start.spring.io पर नेविगेट करके प्रारंभ करें, जो आपको एक नया स्प्रिंग-आधारित मावेन प्रोजेक्ट बनाने में सक्षम करेगा। इस परियोजना के लिए आप निम्नलिखित मानदंड दर्ज कर सकते हैं।

इसके बाद, निम्नलिखित निर्भरताएँ जोड़ें:

  • लोम्बोक: एक पुस्तकालय जो डोमेन ऑब्जेक्ट के भीतर बॉयलर प्लेट कोड (जैसे गेटर्स, सेटर्स) बनाने की आवश्यकता को समाप्त कर देगा।
  • स्प्रिंग वेब: रीस्टफुल एपीआई एंडपॉइंट बनाने और उजागर करने के लिए एक पुस्तकालय।
  • स्प्रिंग डेटा जेपीए: एक पुस्तकालय जो डेटाबेस से जुड़ने और संचार करने के लिए बॉयलर प्लेट कोड को खत्म करने में मदद करने के लिए अमूर्तता प्रदान करता है।

अंत में, प्रोजेक्ट बनाने और डाउनलोड करने के लिए "जेनरेट" बटन पर क्लिक करें (एक .zip फ़ाइल में निहित) अपनी मशीन पर वांछित स्थान पर।

MariaDB R2DBC कनेक्टर जोड़ें

उस स्थान पर नेविगेट करें जहां आपने नया मावेन प्रोजेक्ट (.zip फ़ाइल) डाउनलोड किया है, और अनज़िप करें। फिर प्रोजेक्ट खोलने के लिए कोड संपादक का उपयोग करें, और pom.xml खोलें।

निर्भरता के संग्रह में मारियाडीबी के जेडीबीसी कनेक्टर के लिए एक नई निर्भरता जोड़ें।

<dependency>             
   <groupId>org.mariadb.jdbc</groupId>           
   <artifactId>mariadb-java-client</artifactId>
   <version>2.6.0</version>
</dependency>

डेटा एकीकरण तैयार करना

अब जब आपने एक प्रोजेक्ट बना लिया है जिसमें आपको आवश्यक सभी निर्भरताएं शामिल हैं, तो यह जावा कोड में कूदना है। आम तौर पर, मैं इकाई वर्ग बनाकर शुरुआत करना पसंद करता हूं।

/src/main/java/com/mariadb/todo पर नेविगेट करें, "डोमेन" नामक एक नया फ़ोल्डर बनाएं, और इसके भीतर "Task.java" नाम की एक नई फ़ाइल बनाएं।

"Task.java" खोलें और निम्न कोड जोड़ें।

package com.mariadb.todo.domain;

import javax.persistence.*;

import lombok.Data;

@Data
@Entity
@Table(name = "tasks")
public class Task {
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String description;
    private Boolean completed = false;
}

इसके बाद, /src/main/java/com/mariadb/todo में "रिपॉजिटरी" नामक एक नया फ़ोल्डर बनाएं , और इसके भीतर "TaskRepository.java" नाम से एक नई फ़ाइल बनाएँ।

"TaskRepository.java" खोलें और निम्न कोड जोड़ें।

package com.mariadb.todo.repositories;

import com.mariadb.todo.domain.Task;

import org.springframework.data.repository.CrudRepository;

public interface TaskRepository extends CrudRepository<Task, Integer> {
}

जैसा कि नाम से पता चलता है कि क्रूड रिपोजिटरी इंटरफ़ेस एक सामान्य प्रकार (इस मामले में आपका कार्य वर्ग) और उस सामान्य प्रकार के लिए प्राथमिक कुंजी प्रकार के लिए एक भंडार पर बुनियादी सीआरयूडी संचालन प्रदान करता है।

डेटा सेवा बनाएं

सेवाओं का उपयोग आपके एप्लिकेशन के व्यावसायिक तर्क को प्रबंधित करने के लिए किया जा सकता है। इस एप्लिकेशन में एकमात्र सेवा, टास्क सर्विस का उपयोग टास्क ऑब्जेक्ट को मान्य करने और टास्क रिपोजिटरी के साथ एकीकृत करने के लिए किया जाता है।

/src/main/java/com/mariadb/todo में "services" नाम का एक नया फ़ोल्डर बनाएं , और इसके भीतर "TaskService.java" नाम की एक नई फ़ाइल बनाएँ।

"TaskService.java" खोलें और निम्न कोड जोड़ें।

package com.mariadb.todo.services;

import java.util.Optional;

import com.mariadb.todo.domain.Task;
import com.mariadb.todo.repositories.TaskRepository;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

// Registered as a Spring Service (Component)
@Service
public class TaskService {

    // Automatically instantiate (via Spring IoC) 
    @Autowired
    private TaskRepository repository;

    // 
    public Boolean isValid(final Task task) {
        if (task != null && !task.getDescription().isEmpty()) {
            return true;
        }
        return false;
    }

    // Get all records from the tasks table
    public Iterable<Task> getAllTasks() {
        return this.repository.findAll();
    }

    // Save a new task record
    public Task createTask(final Task task) {
        return this.repository.save(task);
    }

    // Update an existing task record
    @Transactional
    public Task updateTask(final Task task) {
        Optional<Task> ot = this.repository.findById(task.getId());
        Task t = ot.get();
        t.setDescription(task.getDescription());
        t.setCompleted(task.getCompleted());
        return this.repository.save(t);
    }

    // Delete the task record by specified id
    @Transactional
    public void deleteTask(final int id){
        Optional<Task> ot = this.repository.findById(id);
        Task t = ot.get();
        this.repository.delete(t);
    }
}

एपीआई एंडपॉइंट्स को एक्सपोज़ करें

अंत में, आपको चार समापन बिंदुओं को उजागर करने के लिए एक नियंत्रक बनाने की आवश्यकता होगी जिसका उपयोग आपके कार्यों पर बुनियादी सीआरयूडी संचालन करने के लिए किया जा सकता है।

/src/main/java/com/mariadb/todo में "नियंत्रक" नामक एक नया फ़ोल्डर बनाएं, और उसमें "TaskController.java" नामक एक नया फ़ाइल बनाएं।

"TaskController.java" खोलें और निम्न कोड जोड़ें।

package com.mariadb.todo.controllers;

import com.mariadb.todo.domain.Task;
import com.mariadb.todo.services.TaskService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/tasks")
public class TaskController {

    @Autowired
    private TaskService service;

    // Get all tasks
    @GetMapping()
    public ResponseEntity<Iterable<Task>> get() {
        return ResponseEntity.ok(this.service.getAllTasks());
    }

    // Create a new task
    @PostMapping()
    public ResponseEntity<Task> post(@RequestBody Task task) {
        if (service.isValid(task)) {
            return ResponseEntity.ok(this.service.createTask(task));
        }
        return ResponseEntity.status(HttpStatus.I_AM_A_TEAPOT).build();
    }

    // Update a task
    @PutMapping()
    public ResponseEntity<Task> put(@RequestBody Task task) {
        if (service.isValid(task)) {
            return ResponseEntity.ok(this.service.updateTask(task));
        }
        return ResponseEntity.status(HttpStatus.I_AM_A_TEAPOT).build();
    }

    // Delete a task
    @DeleteMapping()
    public ResponseEntity<Void> delete(@RequestParam int id) {
        if (id > 0) {
            this.service.deleteTask(id);
            return ResponseEntity.ok().build();
        }
        return ResponseEntity.status(HttpStatus.I_AM_A_TEAPOT).build();
    }
}

इसका परीक्षण करना

अब जब सब कुछ तैयार हो गया है, तो इसका परीक्षण करने का समय आ गया है!

सबसे पहले, एप्लिकेशन बनाएं।

$ mvn package

और फिर चलाओ।

$ mvn spring-boot:run

सबसे पहले, अपनी टू-डू सूची में एक नया कार्य जोड़कर प्रारंभ करें।

$ curl --header "Content-Type: application/json" \
  --request POST \
  --data '{"description":"A New Task"}' \
  http://localhost:8080/api/tasks

जबकि आप निश्चित रूप से डेटाबेस को सीधे यह पुष्टि करने के लिए क्वेरी कर सकते हैं कि एक नया कार्य रिकॉर्ड जोड़ा गया है, इसमें मज़ा कहां है? एपीआई पर वापस!

$ curl https://localhost:8080/api/tasks

यदि सब ठीक हो जाता है तो आपको निम्नलिखित JSON प्रतिक्रिया प्राप्त करनी चाहिए:

{ "id": 1, "description": "A New Task", "completed": false }

Voilà, JDBC और MariaDB का उपयोग करते हुए एक पूरी तरह से प्रतिक्रियाशील जावा स्प्रिंग एप्लिकेशन! इस कोड को पूरी तरह से देखने के लिए यहां स्रोत देखें। और यदि आप सोच रहे हैं "उपयोगकर्ता इंटरफ़ेस के साथ कार्यान्वयन देखना निश्चित रूप से अच्छा होगा", तो आप भाग्य में हैं! आप React.js और अपनी पसंद की कई API परियोजनाओं का उपयोग करके TODO एप्लिकेशन का पूरी तरह से कार्यान्वयन पा सकते हैं
(R2DBC, JDBC, Node.js और Python) जो सीधे यहां MariaDB के साथ एकीकृत होते हैं!

अभी शुरू हो रहा है

अब जब आपने स्प्रिंग डेटा जेपीए, जेडीबीसी और मारियाडीबी का उपयोग करके सफलतापूर्वक एक नया मावेन प्रोजेक्ट बना लिया है, तो आपके पास अपने स्वयं के मारियाडीबी की शक्ति का उपयोग करते हुए, पूरी तरह से प्रतिक्रियाशील एप्लिकेशन बनाना शुरू करने के लिए आवश्यक सभी उपकरण हैं! यदि आपके कोई प्रश्न हैं , इस ब्लॉग पोस्ट के साथ सुझाव या चिंताएं कृपया मुझे यहां बताएं या सीधे ट्विटर पर @probablyrealrob पर मुझसे संपर्क करें! इसे पढ़ने के लिए समय निकालने और कोडिंग को खुश करने के लिए धन्यवाद!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे ACOS () मारियाडीबी में काम करता है

  2. My DBA बीमार है - SysAdmins के लिए डेटाबेस फ़ेलओवर युक्तियाँ

  3. मारियाडीबी में REGEXP कैसे काम करता है

  4. मारियाडीबी के प्रमाणित सहयोगी कार्यक्रम के लाभों को अनलॉक करना

  5. मारियाडीबी डेटाबेस सर्वर की स्थापना, सुरक्षित और प्रदर्शन ट्यूनिंग कैसे करें