DEV Community

Zaw Htut Win
Zaw Htut Win

Posted on

Full Stack Development with Spring Boot and React (အခန်း ၃)

CRUD repositories များဆောက်ခြင်း

Spring Boot Data JPA မှာ CRUD operation တွေကို အလွယ်တကူလုပ်လို့ရအောင် CrudRepository ဆိုတဲ့ interface ကို ထည့်ပေးထားပါတယ်။

domain package ထဲမှာ CarRepository ဆိုတဲ့ ကျွန်တော်တို့ရဲ့ Car entity အတွက် CrudRepository တစ်ခုဆောက်ကြည့်ရအောင်။

အရင်ဆုံး အောက် ပါ code ကို CarRepository ဆိုတဲ့ class ကို domain package ထဲ create လုပ်ပြီးရေးပါ။

package com.packt.demo.domain;

import org.springframework.data.repository.CrudRepository;

public interface CarRepository extends CrudRepository<Car,Long> {

}
Enter fullscreen mode Exit fullscreen mode

အခုဆိုရင် ကျွန်တော်တို့ CarRepository ကနေ Spring Data JPA က ပေးတဲ့ အောက်ပါ method တွေကို သုံးနိုင်ပြီဖြစ်ပါတယ်။

Method Description
long count() entity items အရေအတွက်
Iterable<T> findAll() item တွေအကုန်ရှာဖို့
Optional<T> findById(ID Id) id နဲ့ item ကို ရှာဖို့
void delete(T entity) entity ကို ဖျက်ဖို့
void deleteAll() repository ထဲမှာ ရှိတဲ့ entity items တွေ အကုန်ဖျက်ဖို့
<S extends T> save(S entity) entity တစ်ခု save လုပ်ဖို့

ပြီးပြီဆိုရင် database ထဲကို data အချို့ ဒီ repository ကို သုံးပြီးထည့်ကြည့်ပါ့မယ်။

Spring Boot ရဲ့ CommandLineRunner ဆိုတဲ့ interface ကိုသုံးပြီး Spring Boot Application မစမှီ database ထဲကို data တွေထည့်ကြည့်ကြမယ်။

package com.packt.demo;


import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Bean
    CommandLineRunner runner() {
        return args ->{
            // Place your code here
        };
    }
}
Enter fullscreen mode Exit fullscreen mode

ဒီနောက်မှာတော့ ကျွန်တော်တို့ create လုပ်ခဲ့တဲ့ CarRepository ကို main class ထဲကို inject လုပ်ပြီး ခေါ်သုံးလို့ရနေပါပြီ။

inject လုပ်ချင်ရင် @Autowired ဆိုတဲ့ annotation ကို သုံးပြီး inject လုပ်လို့ရပါတယ်။

ဒီနေရာမှာ bean ရဲ့ အကြောင်းကို နဲနဲပြောပြချင်ပါတယ်။ Bean တွေဟာ Application စ run တဲ့ အချိန်ကစပြီး တကြိမ်ပဲ create လုပ်ပါတယ်။

သူတို့ကို ခေါ်သုံးချင်ရင် ခေါ်သုံးမယ့် class မှာ inject လုပ်ပြီး ခေါ်သုံးရုံပါပဲ။

ဥပမာ new CarRepository() လို့ မခေါ်သုံးပါဘူး။ @Autowired annotation နဲ့ inject လုပ်ပြီး ခေါ်သုံးတာပါ။ ဒါကို dependency injection လုပ်တယ်လို့ ခေါ်ပါတယ်။

package com.packt.demo;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

import com.packt.demo.domain.Car;
import com.packt.demo.domain.CarRepository;

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Autowired
    CarRepository repository;

    @Bean
    CommandLineRunner runner() {
        return args ->{
            // Place your code here
            repository.save(new Car("Ford", "Mustang", "Red",
                    "ADF-1121", 2017, 59000));
            repository.save(new Car("Nissan", "Leaf", "White",
                    "SSJ-3002", 2014, 29000));
            repository.save(new Car("Toyota", "Prius", "Silver",
                    "KKO-0212", 2018, 39000));
        };
    }
}
Enter fullscreen mode Exit fullscreen mode

DemoApplication.java ကို Run As -> Java Application နဲ့ run ပြီး http://localhost:8080/h2-console ကို သွားကြည့်ရအောင်။ ခုနက save လုပ်လိုက်တဲ့ data တွေ ဝင်နေပြီဆိုတာတွေ့ပါလိမ့်မယ်။

Image description

Top comments (0)