Cách kết nối Database và evolution trong Play FrameWork Scala

Mở đầu

Hôm nay chúng ta sẽ cùng cách tạo và tìm hiểu những thứ có trong 1 project MVC sử dụng Play Framework trên IntelliJ nhé. Không nói nhiều nữa bắt đầu luôn nào.

Tạo và tìm hiểu cấu trúc thư mục của 1 project

Đầu tiên, chọn Create new Project -> Scala -> Play 2.x -> Next

Config các thông tin của project về: Name, Location, SDK, Scala Version, Play 2 version như bên dưới, sau đó click Finish

Intellij sẽ tạo cho chúng ta 1 Project có cấu trúc thư mục như sau:

Trong đó:
/build.sbt: Đây là file chứa toàn bộ các Dependencies, Setting của dự án

/conf/application.conf: File này sẽ chứa các thông tin của akka, evolutions, database…

/conf.routes: Define tất cả các URI của hệ thống và match chúng vào với các action tương ứng.

/plugins.sbt: Khai báo các plugins cần dùng cho project như: scalariform, scalastyle…

/app: Thư mục này chứa các files về controllers, service, views…

Để run project ta có thể Run trực tiếp trên Intellij hoặc run command “sbt run“. Sau đó, truy cập http://localhost:9000/ để vào giao xem giao diện default

Kết nối với Database

Đầu tiên, trong file build.sbt cần khai báo các dependencies để kết nối DB. Hãy chú ý chọn version cho phù hợp với MySQL của bạn.

libraryDependencies ++= Seq(jdbc,
  "mysql" % "mysql-connector-java" % "8.0.17"
)

Tiếp theo sẽ khai báo các thông tin kết nối đến DB trong file /conf/application.conf. Ở đây tôi kết nối đến server MySQL:

  • DB name là: BBS
  • username: septech
  • password: UserManagement@123
db {
  default {
    driver=com.mysql.jdbc.Driver
    url="jdbc:mysql://localhost:3306/BBS?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT"
    username=septech
    password="UserManagement@123"
  }
}

Để kiểm tra đã kết nối được DB chưa ta run lại Project và truy cập vào http://localhost:9000. Nếu thấy log console như bên dưới có nghĩa là đã thành chính quả.

[info] p.a.d.DefaultDBApi - Database [default] initialized at jdbc:mysql://localhost:3306/BBS_TTT?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT

Tạo database với Evolution

Khai báo dependency trong file build.sbt

libraryDependencies += evolutions

Bây giờ cần tạo các file .sql để chạy trong thư mục /conf/evolutions/default như hình dưới.

Chú ý: Các file .sql nên đặt tên là 1.sql, 2.sql… Khi cần thêm bảng hoặc thay đổi cấu trúc table thì sẽ tạo các file có number cao hơn và nội dung của nó gồm 2 phần UP để tạo và DOWN để revert.
Ví dụ: file 1.sql

# --- !Ups
CREATE TABLE users (
    id BIGINT(20) NOT NULL AUTO_INCREMENT,
    user_name VARCHAR(100) NOT NULL,
    email VARCHAR(255) NOT NULL,
    password VARCHAR(100) NOT NULL,
    created_at DATETIME NOT NULL,
    modified_at DATETIME NOT NULL,
    PRIMARY KEY (id));

# --- !Downs
DROP TABLE users;

Cuối cùng, ta config trong file /conf/application.conf thông tin để evoluation có thể tự động apply scripts khi run program

play.evolutions {
  autoApply=true
}

Bây giờ các bạn hãy run lại project và check DB sẽ thấy table users đã được tạo ra tự động.

Kết luận

Như vậy, mình đã trình bày về cách build 1 simple project bằng Intellij, kết nối với Database MySQL và có sử dụng evolution. Nếu quan tâm các bạn có thể xem bài tiếp về tái cấu trúc lại project ở phần sau nhé.

Tài liệu tham khảo:

https://www.playframework.com/documentation/2.7.x/Evolutions
https://hoaipt.blogspot.com/2016/05/play-framework-day-3-ket-noi-mysql-db-va-evolution.html

Add a Comment

Scroll Up