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> {
}
အခုဆိုရင် ကျွန်တော်တို့ 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
};
}
}
ဒီနောက်မှာတော့ ကျွန်တော်တို့ 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));
};
}
}
DemoApplication.java ကို Run As -> Java Application နဲ့ run ပြီး http://localhost:8080/h2-console ကို သွားကြည့်ရအောင်။ ခုနက save လုပ်လိုက်တဲ့ data တွေ ဝင်နေပြီဆိုတာတွေ့ပါလိမ့်မယ်။
Oldest comments (0)