Một bài viết trong loạt bài viết về cách tạo một dự án Java (có liên kết đến các tài liệu khác ở cuối). Mục tiêu của nó là phân tích các công nghệ chủ chốt, kết quả là viết một bot điện tín. Trong phần này, chúng tôi thử khởi chạy SpringBoot và Flyway. Lượng lý thuyết tối thiểu, tùy thích))) Chúng tôi bỏ qua phần so sánh cuối cùng về Flyway/Liquibase trong một khoảng thời gian không xác định và đi vào vấn đề. Và thậm chí như vậy nó đã kéo dài. Để không mô tả Flyway hai lần, tôi quyết định thêm nó ngay vào dự án JRTB trong tương lai của chúng tôi.
nhiều mặt, đa mô-đun:
Chúng ta cần phải làm gì khi tham gia vào việc này?
- Khởi chạy ứng dụng SpringBoot dựa trên Maven.
- Thêm Flyway vào đó: may mắn thay, chúng dễ dàng được tích hợp.
- Thêm lược đồ cho các bảng mà chúng ta có trong cơ sở dữ liệu mẫu.
Đường bay là gì
Để sử dụng một cái gì đó, trước tiên bạn cần phải tìm ra nó là gì và tại sao. Flyway là một công cụ kiểm soát phiên bản cơ sở dữ liệu. Lời thì ai cũng biết nhưng không hiểu sao vẫn chưa thêm vào được phải không? Hãy thử mô tả vấn đề mà đường bay giải quyết được. Giả sử chúng ta có một dự án. Giống như mọi thứ trên thế giới của chúng ta, nó không hoàn hảo nên không thể lập kế hoạch và đưa ra phiên bản cuối cùng của dự án. Mỗi khi một số sắc thái không được tính toán xuất hiện. Dự án sử dụng cơ sở dữ liệu trong công việc của mình. Tất nhiên, nếu dự án thay đổi thì cấu trúc cơ sở dữ liệu cũng có thể thay đổi. Giả sử chúng ta thêm một trường mới cho một trong các thực thể trong dự án của mình. Làm thế nào để làm nó?- Thêm trường này vào thực thể của chúng tôi, cập nhật mọi thứ để logic nghiệp vụ hoạt động.
- Cập nhật cơ sở dữ liệu. Cách duy nhất có thể là làm điều đó bằng tay. Để làm điều này, bạn cần vào và đăng ký tập lệnh sql cần thiết.
- Nhưng nếu chúng tôi có nhiều nơi để triển khai dự án của mình thì việc này có cần phải thực hiện ở mỗi nơi không?
- và nếu muốn quay lại, làm cách nào để biết chính xác cấu trúc cơ sở dữ liệu hiện đang ở trạng thái nào?
- Làm thế nào chúng tôi có thể chắc chắn rằng việc thay đổi cơ sở dữ liệu đã thành công?
- Làm cách nào tôi có thể có cơ hội theo dõi tất cả các thay đổi cơ sở dữ liệu diễn ra trong dự án?
Khởi chạy SpringBoot + Flyway
Khởi động mùa xuân là gì
Chúng tôi đang tung ra cái gì?... Để hiểu những gì và tại sao chúng tôi đang làm, bạn cần quyết định SpringBoot là gì. Đầu tiên, hãy nhanh chóng (à, rất nhanh) nói về Spring . Hiện tại, trên thực tế, đây là tiêu chuẩn công nghiệp trong việc phát triển các ứng dụng máy chủ bằng Java. Tiêu chuẩn của cái gì? Làm sao tôi có thể giải thích điều này với bạn? Spring là bộ xương của ứng dụng, sau đó chúng tôi đưa “thịt” - logic kinh doanh của chúng tôi vào đó. Với sự trợ giúp của Spring (sau đây tôi sẽ sử dụng giấy can này để không mất thời gian chuyển đổi ngôn ngữ :D)) Spring cho chúng ta một khởi đầu để từ đó chúng ta bắt đầu làm mọi việc. Nó có- Bạn có muốn làm việc với cơ sở dữ liệu không? Bạn có muốn quan hệ? Bạn có muốn không quan hệ? Chúng ta đang ở đây với Spring Data.
- Bạn có muốn làm việc với các yêu cầu http không? Của bạn đây, Spring web (Spring MVC).
- Bạn có cần một thùng chứa cho tất cả đồ vật của mình ở một nơi không? Đây là Spring Core.
- Bạn có cần thiết lập bảo mật cho một dự án để có các vai trò và chuỗi lệnh khác nhau không? An ninh mùa xuân.
- Ngay khi bạn nghĩ có một thứ như vậy thì thật tuyệt, hóa ra Spring đã có sẵn thứ bạn cần, và nó tích hợp nhanh chóng, dễ dàng.
Khởi chạy SpringBoot
Vì chúng ta đã hiểu Maven là gì nên hãy tạo một dự án mới cho nhu cầu của chúng ta. Để làm điều này, bạn chỉ cần truy cập một trang web được tạo đặc biệt cho vấn đề này. Nó được gọi là Spring Khởi tạo . Tại đây bạn cần điền và chọn những gì bạn cần:- Công cụ xây dựng dự án là gradle hoặc maven. Như bạn có thể thấy, Ant thậm chí không còn được nhắc đến nữa. Đây là gợi ý hay về công cụ xây dựng nào đáng để bạn dành thời gian.
- Ngôn ngữ bạn có thể viết là java, kotlin, groovy. Mọi thứ ở đây đều đơn giản: chúng đều giống JVM và dễ chạy mã Java. Nhân tiện, thật đáng để xem xét Kotlin. Groovy thực sự đã trở nên không thú vị (đã có lúc họ chuyển sang theo rãnh, nhưng nó nhanh chóng trôi qua).
- Phiên bản mùa xuân... Ở đây bạn cần hiểu rằng các phiên bản của phần chính của Spring và các mô-đun của nó là nhất quán.
- Dữ liệu dự án. Tôi đã mô tả những điều này rồi.
- Chúng tôi chọn kho lưu trữ nào sẽ được thu thập - Jar hoặc War.
- Vâng, phiên bản Java yêu thích của chúng tôi. Và gần đây đã có rất nhiều phiên bản này... Họ đã chờ đợi nhiều năm, và bây giờ mỗi năm có hai phiên bản.
- Maven - không phải vô ích mà chúng tôi đã nói chuyện với bạn về điều này trước đó.
- Java là con cưng của chúng tôi :D
- Hãy lấy phiên bản 2.2.11. Tại sao không phải là cái mới nhất? Bởi vì nó càng mới thì khả năng có một số lỗi ở đó càng lớn. Đối với chúng tôi, phiên bản nào không quan trọng, nhưng phiên bản cũ hơn sẽ đáng tin cậy hơn. Vì vậy chúng tôi chọn 2.2.11.
- Nhóm: com.github.javarushcommunity
- Hiện vật: springboot-flyway-demo
- Tên: SpringBoot + Flyway Demo
- Mô tả: Dự án thể hiện sự tích hợp giữa SpringBoot và Flyway . (Đúng, khả năng viết tài liệu là một phần quan trọng của quá trình phát triển :))
- Tên gói: com.github.javarushcommunity.springbootflywaydemo . Tại đây họ sẽ ngay lập tức tạo một gói cơ bản cho chúng ta với một lớp sẽ khởi chạy ứng dụng của chúng ta.
- Bao bì: Bình
- Java: 8. Chúng ta đừng đi trước đầu máy và lấy tám cái cũ tốt. Tại sao không phải là 11? Để làm gì? Đối với ví dụ của chúng tôi, tôi không hiểu vấn đề.
spring.datasource.url=jdbc:mysql://localhost:3306/flyway_demo_db
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Chúng tôi chạy lại phương thức chính và nhận được: Bây giờ chúng tôi cần thêm ít nhất một lần di chuyển. Để soạn thảo di chuyển một cách chính xác, bạn cần lấy mẫu sau: V<VERSION>__<NAME>.sql Sử dụng mẫu này, chúng tôi sẽ tạo một tệp di chuyển có tên V00001__Create_country_table.sql trong thư mục thích hợp: /src/main/resources/ db.migration/ . Hãy tạo một bảng quốc gia trong đó. Hãy lấy đoạn script từ bài viết thứ hai về cơ sở dữ liệu . Trước khi bắt đầu, chúng ta hãy vào và tạo cơ sở dữ liệu cho công việc: flyway_demo_db. Hãy thực hiện việc này thông qua MysqlWorkbench: Bây giờ chúng ta có thể chạy lại phương thức chính: Mọi thứ đã ổn, nhưng vì chúng ta chưa có gì trong dự án nên nó đã hoạt động xong. Tuy nhiên, rõ ràng từ nhật ký ( đọc nhật ký là gì ) rằng:
- Đã kết nối thành công với cơ sở dữ liệu.
- Quá trình di chuyển đã được xác thực và mọi thứ đều ổn.
- Flyway đã tạo một bảng để quản lý việc di chuyển.
- Và cuộc di cư 00001 đã bắt đầu - việc thành lập đất nước đã thành công.
Phần kết luận
Lần này chúng ta đã học cách hiểu và sử dụng công cụ di chuyển cơ sở dữ liệu kết hợp với SpringBoot. Thông tin này là cần thiết để hiểu công cụ kiểm soát phiên bản cơ sở dữ liệu là gì, sử dụng Flyway làm ví dụ. Các bạn ơi, mã nguồn của dự án mà tôi trình chiếu đã được xuất bản trong tổ chức của chúng tôi trên Github . Nếu bạn thích ví dụ này, hãy cho nó một ngôi sao và tôi sẽ hiểu rằng công việc của tôi rất hữu ích và thực sự đáng để tiếp tục. Theo truyền thống, tôi khuyên bạn nên đăng ký tài khoản Github của mình . Thông qua anh ấy, tôi thực hiện tất cả công việc của mình trên nguồn mở và tất cả các dự án demo luôn đi kèm với các bài viết của tôi. Cảm ơn mọi người đã đọc. Lần tới chúng tôi sẽ viết đơn đăng ký của mình. Sẽ có một số lý thuyết cần thiết về Docker trong tương lai, nhưng chúng tôi sẽ pha loãng nó với thực tiễn.Liên kết hữu ích
Ngày nay không có nhiều liên kết hữu ích. Hãy chú ý đến video của Evgeniy, nó thực sự rất đáng giá!- Trang web tạo dự án trên Spring
- Evgeniy Borisov - Người xây dựng mùa xuân
- Tài liệu về Spring for Flyway
GO TO FULL VERSION