Các giá trị có thể chọn cho spring - bd truc tuyen

/imgposts/nmp3hn7z.jpg

Hiện tại, trong tệp cấu hình của Spring: src/main/resources/application.properties, có dòng sau được cài đặt:

spring.jpa.hibernate.ddl-auto=update

Kết quả là mỗi khi khởi động ứng dụng Spring Boot, các bảng cơ sở dữ liệu sẽ tự động được tạo dựa trên các lớp entity. Tuy nhiên, tôi không thực sự cần đến tính năng này vì những lý do sau đây:

  • Tôi thích sử dụng MySQL Workbench để tạo và chỉnh sửa bảng theo cách thủ công hơn.
  • Việc cho phép các thao tác DDL (Data Definition Language) tự động diễn ra trong môi trường sản xuất là rất nguy hiểm.
  • update: Tự động thêm các bảng hoặc cột chưa tồn tại vào cơ sở dữ liệu mà không xóa dữ liệu hiện có.
  • create: Tạo mới hoàn toàn các bảng nếu chúng không tồn tại; tuy nhiên, dữ liệu cũ sẽ bị xóa sạch.
  • create-drop: Giống như create, nhưng ngoài ra còn xóa tất cả các bảng khi dịch vụ dừng lại.
  • validate: Chỉ kiểm tra xem cấu trúc bảng có khớp với định nghĩa entity hay không mà không thay đổi gì.
  • none: Không thực hiện bất kỳ hành động nào liên quan đến việc tạo hoặc cập nhật bảng.

Rõ ràng, giá trị none đáp ứng hoàn toàn nhu cầu của tôi vì nó ngăn chặn mọi hoạt động tự động đối với cơ sở dữ liệu. Tuy tỷ số bóng đá hôm nay nhiên, nếu validate có khả năng kiểm tra xem các trường của bảng có đúng với các thuộc tính của lớp Entity hay không thì đó sẽ là một lựa chọn tốt hơn.

Giá trị validate dường như nghiêm ngặt hơn, bởi vì nó sẽ đảm bảo rằng cấu trúc bảng trong cơ sở dữ liệu luôn khớp với định nghĩa của các lớp Entity trong mã nguồn. Nếu phát hiện bất kỳ sai lệch nào, hệ thống sẽ thông báo lỗi. Do đó, tôi quyết định sử dụng giá trị này:

spring.jpa.hibernate.ddl-auto=validate

Bằng cách này, tôi vừa đảm bảo rằng không có bất kỳ thay đổi nào xảy ra tự động trong cơ sở dữ liệu, vừa có được sự an tâm rằng cấu trúc tại f8bet bảng luôn chính xác theo mong muốn của mình.