Playframework에 MariaDB를 연결해보기

전회의 계속입니다. > CentOS7에서 Playframework 소개

이번에는 CentOS에 MariaDB를 설치하고 Playframework에서 데이터를 가져오고 싶습니다.

MariaDB 도입


# yum install mariadb mariadb-server

여기는 문제 없게 된다고 생각합니다. 다음은 대화형식으로 MariaDB의 초기설정을 합니다.
비밀번호 설정 이외에는 우선 Enter를 누르세요!
# mysql_secure_installation

이제 MariaDB에 액세스할 수 있어야 합니다.
액세스하면 적당히 데이터베이스를 만들어 버리자!
# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 74
Server version: 5.5.50-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
MariaDB [(none)]> create database sample_db

프로젝트 설정



데이터베이스를 만들면 마지막으로 만든 프로젝트의 설정 파일 유형을 조금 만나게됩니다.

build.sbt



build.sbt 다음을 추가합니다.
  • PlayEbean
  • "org.mariadb.jdbc"% "mariadb-java-client"% "1.4.4"

  • build.sbt
    "build.sbt" 13L, 200C
    name := """sample"""
    
    version := "1.0-SNAPSHOT"
    
    lazy val root = (project in file(".")).enablePlugins(PlayJava,PlayEbean)
    
    scalaVersion := "2.11.7"
    
    libraryDependencies ++= Seq(
      javaJdbc,
      cache,
      javaWs,
      "org.mariadb.jdbc" % "mariadb-java-client" % "1.4.4"
    )
    

    conf/application.conf



    application.conf에 다음을 추가합니다.

    default.driver = org.mariadb.jdbc.Driver
    default.url = "jdbc:mariadb://localhost:3306/sample_db"
    default.username=USER_NAME
    default.password = PASSWORD

    dafault.url은 방금 만든 db를 작성합니다.
    또한 username과 password 설정한 것입니다. (이번에는 user 설정은 하지 않으므로 root입니다.)

    ebean {
    default = ["models.entity.*"]
    }
    위가 없으면 추가입니다.

    application.conf
    db {
      # You can declare as many datasources as you want.
      # By convention, the default datasource is named `default`
    
      # https://www.playframework.com/documentation/latest/Developing-with-the-H2-Database
      default.driver = org.mariadb.jdbc.Driver
      default.url = "jdbc:mariadb://localhost:3306/sample_db"
      default.username = USER_NAME
      default.password = PASSWORD
    
      # You can turn on SQL logging for any datasource
      # https://www.playframework.com/documentation/latest/Highlights25#Logging-SQL-statements
      #default.logSql=true
    }
    
    ebean {
      default = ["models.entity.*"]
    }
    

    project/plugins.sbt



    plugins.sbt에 다음을 추가합니다. (댓글 아웃)

    plugins.sbt
     addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "3.0.2")
    

    여기까지 오면, 한 번 activator를 시작해 보자.
    모두 반영되어야합니다. . .

    사용자를 얻기위한 앱 만들기 ...



    먼저 이름과 이메일 주소만 보유하는 User 클래스를 만듭니다.
    app 아래에 models.entity 패키지를 만들고 User 클래스를 만듭니다.

    app/models/entity/User.java 만들기



    User.java
    package models.entity;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.Table;
    
    import com.avaje.ebean.Model;
    
    @Entity
    @Table(name = "users")
    public class User extends Model {
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        public Long id;
    
        @Column(name = "name")
        public String name; // 名前
    
        @Column(name = "mail_address", nullable = false)
        public String mailAddress; // メールアドレス
    
        public static Find<Long, User> find = new Find<Long, User>() {
        };
    }
    

    세세한 설명은 다음 번이라고 하는 것으로. . .
    우선 앞으로 나아갑니다.

    User 클래스를 만든 후에는 한 번 activator를 시작합시다!


    (순간 에러라고 생각합니다...)

    "Apply this script now!"를 선택하면 User 클래스에서 정의한 테이블을 작성합니다.

    이번에는 작성된 테이블에 적절한 사용자를 추가합시다!



    app/controllers/HomeController.java에 추가



    앱 만들기로 돌아갑니다.
    이미 HomeController라는 클래스가 있다고 생각하기 때문에 거기에 다음을 추가합니다.

    HomeController.java
    import models.entity.User;
    import java.util.List;
    
    
    public Result showUser(){
            List<User> user  = User.find.findList();
            return ok(userList.render(user));
    }
    
    

    여기서는 User 클래스에서 사용자 목록을 가져 와서 view로 전달합니다.

    app/views/userList.scala.html 만들기



    이어서 view를 작성합니다.

    userList.scala.html
    @(users: List[models.entity.User])
    
    @main("UserList") {
        <ul>
        @for(user <- users){
            <li>@user.name : @user.mailAddress</li>
        }
        </ul>
    }
    

    여기에서는 HomeController로 건네받은 List형의 User를 for문으로 돌려 이름과 주소를 표시하고 있습니다.

    conf/routes 설정



    마지막으로 라우팅
    다음 추가
    GET     /users                           controllers.HomeController.showUser
    

    application 시작



    이 작업이 완료되면 activator를 시작하고 실행을 실행하고,
    http://192.168.33.10:9000/우세 rs
    방문하십시오.

    와 간단하게 영웅들이 표시되었습니다.


    이번은 이런 느낌으로 끝입니다.
    또 다음에 이제 조금 DB로부터의 출납을 해 가고 싶습니다.

    좋은 웹페이지 즐겨찾기