بهار داده JPA nedir ?
Spring Data JPA یک ماژول از Spring Data است که یک پروژه فرعی از Spring Framework است و بر اساس Java Persistence API (JPA) ساخته شده است. هدف آن ساده سازی و تسریع توسعه لایه های دسترسی به داده مبتنی بر JPA است. Spring Data JPA عملیات دسترسی به داده ها را با استفاده از ویژگی های اصلی JPA ساده می کند و ویژگی های اضافی مختلفی را ارائه می دهد.
ویژگی های کلیدی Spring Data JPA
- انتزاع مخزن: رابط های مخزن را برای CRUD (ایجاد، خواندن، به روز رسانی، حذف) و پرس و جوهای پیچیده تر ارائه می دهد.
-
روش های پرس و جو: به طور خودکار پرس و جوهایی را بر اساس نام روش ایجاد می کند. مثلا،
findByLastName(String lastName)
پسندیدن. - پرس و جوهای سفارشی: از نوشتن پرس و جوهای سفارشی با استفاده از JPQL (زبان پرس و جو ماندگاری جاوا) و SQL بومی پشتیبانی می کند.
- صفحه بندی و مرتب سازی: به شما امکان می دهد به راحتی عملیات صفحه بندی و مرتب سازی را انجام دهید.
- حسابرسی: امکان ضبط خودکار داده هایی مانند زمان ایجاد و به روز رسانی و اطلاعات کاربر را می دهد.
- پشتیبانی معاملاتی: مدیریت تراکنش را برای اطمینان از یکپارچگی تراکنش های پایگاه داده ارائه می دهد.
عملیات پایگاه داده با استفاده از Spring Data JPA
در زیر یک مثال نشان داده شده است که نحوه ایجاد اتصال پایگاه داده و انجام عملیات داده با استفاده از Spring Data JPA را نشان می دهد.
وابستگی های Maven
org.springframework.boot
spring-boot-starter-data-jpa
org.springframework.boot
spring-boot-starter-web
com.h2database
h2
runtime
ویژگی های برنامه (application.properties)
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.h2.console.enabled=true
spring.jpa.hibernate.ddl-auto=update
کلاس نهاد (Employee.java)
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private int age;
// Getter ve Setter metodları
}
رابط مخزن (EmployeeRepository.java)
import org.springframework.data.repository.CrudRepository;
import java.util.List;
public interface EmployeeRepository extends CrudRepository<Employee, Long> {
List<Employee> findByName(String name);
}
کلاس خدمات (EmployeeService.java)
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class EmployeeService {
@Autowired
private EmployeeRepository employeeRepository;
public Employee saveEmployee(Employee employee) {
return employeeRepository.save(employee);
}
public List<Employee> getEmployeesByName(String name) {
return employeeRepository.findByName(name);
}
public Iterable<Employee> getAllEmployees() {
return employeeRepository.findAll();
}
}
کلاس کنترلر (EmployeeController.java)
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/employees")
public class EmployeeController {
@Autowired
private EmployeeService employeeService;
@PostMapping
public Employee createEmployee(@RequestBody Employee employee) {
return employeeService.saveEmployee(employee);
}
@GetMapping("/{name}")
public List<Employee> getEmployeesByName(@PathVariable String name) {
return employeeService.getEmployeesByName(name);
}
@GetMapping
public Iterable<Employee> getAllEmployees() {
return employeeService.getAllEmployees();
}
}
برنامه Spring Boot (SpringDataJpaApplication.java)
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringDataJpaApplication {
public static void main(String[] args) {
SpringApplication.run(SpringDataJpaApplication.class, args);
}
}
توضیحات
- اعتیادها: شروع کننده های Spring Boot و وابستگی های پایگاه داده H2 تعریف شده اند.
- ویژگی های برنامه: اطلاعات اتصال و سایر تنظیمات برای پایگاه داده H2 انجام شده است.
-
کلاس موجودیت:
Employee
کلاس به جدول پایگاه داده نگاشت می شود.@Entity
ve@Id
حاشیه نویسی استفاده شد. -
رابط مخزن:
EmployeeRepository
رابط Spring DataCrudRepository
با گسترش رابط، عملیات اولیه CRUD را فراهم می کند. علاوه بر این،findByName
یک پرس و جو ویژه با متد تعریف می شود. -
کلاس خدمات:
EmployeeService
کلاس شامل منطق تجاری وEmployeeRepository
عملیات داده را با استفاده از . -
کلاس کنترلر:
EmployeeController
کلاس نقاط پایانی RESTful API را تعریف می کند. -
اپلیکیشن Spring Boot:
SpringDataJpaApplication
کلاس برنامه Spring Boot را شروع می کند.
مزایای Spring Data JPA
- آسان برای استفاده: انجام سریع عملیات CRUD به لطف رابط های مخزن.
- بهره وری: به صورت خودکار پرس و جو ایجاد کنید و پرس و جوهای پیچیده را با JPQL بنویسید.
- توسعه پذیری: امکان تعریف رابط ها و روش های مخزن سفارشی شده.
- ادغام: کاملاً با Spring Boot، پیکربندی خودکار و پیکربندی ساده سازگار است.
- استقلال پایگاه داده: قابلیت کار آسان با انواع مختلف پایگاه داده.
Spring Data JPA عملیات دسترسی به داده ها را با استفاده از انعطاف پذیری و قدرت JPA ساده و تسریع می کند. این برنامه توسعه سریع برنامه را فراهم می کند، به ویژه هنگامی که با Spring Boot استفاده می شود.