[java] Play 프레임 워크 2.0에서 MySQL 데이터베이스를 사용하는 데 필요한 단계

저는 Play 프레임 워크를 처음 사용합니다. MySQL 데이터베이스를 Play Ebeans와 함께 사용할 데이터 소스로 구성하려고합니다.

Play 2.0 프레임 워크로 MySQL을 구성하는 데 필요한 단계 (드라이버 다운로드, 종속성 추가 등)를 설명해 주시겠습니까?



답변

Play 문서 에서이 페이지 를 보십시오 . 그것은 말한다 :

주로 개발 모드에서 유용한 h2 인 메모리 데이터베이스를 제외하고 Play 2.0은 데이터베이스 드라이버를 제공하지 않습니다. 따라서 프로덕션에 배포하려면 데이터베이스 드라이버를 응용 프로그램 종속성으로 추가해야합니다.

예를 들어 MySQL5를 사용하는 경우 커넥터에 대한 종속성을 추가해야합니다.

val appDependencies = Seq(
    // Add your project dependencies here,
    ...
    "mysql" % "mysql-connector-java" % "5.1.18"
    ...
)

SBT가 드라이버를 다운로드합니다. 종속성 관리에 대한 섹션 도 확인해야합니다 .

MySQL에 연결하려면 다음에서 일부 설정도 변경해야합니다 application.conf.

db.default.driver=com.mysql.jdbc.Driver
db.default.url="mysql://root:secret@localhost/myDatabase"


답변

Carsten이 작성한 것처럼 문서에서 가져올 수 있지만 요약은 다음과 같습니다.

종속성이 구성되어 있는지 확인하십시오. /project/Build.scala

val appDependencies = Seq(
    // Add your project dependencies here,
    "mysql" % "mysql-connector-java" % "5.1.18"
)

다음에서 DB의 적절한 구성을 추가하십시오 (기본 H2 구성 대체) /conf/application.conf.

(URL에서 인코딩을 제거하지 마십시오) :

db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost/your_db_name?characterEncoding=UTF-8"
db.default.user=your_login
db.default.password=your_pass

동일한 파일에서이 줄이 주석 처리되지 않았는지 확인하십시오.

ebean.default="models.*"

그게 전부입니다. 앱을 다시 시작 (또는 개발 모드에서 실행)하면 DDL이 생성되고 적용을 요청합니다.


답변

play 2.2.0을 사용하고 있으며 프로젝트의 루트 폴더에 build.sbt에 다음 줄을 추가해야했습니다.

  "mysql" % "mysql-connector-java" % "5.1.27"

그리고 play는 자동으로 드라이버를 다운로드합니다. Build.scala가 더 이상 필요하지 않은 것 같습니다. 위의 주석가가 언급 한대로 application.conf에 대한 변경 사항을 적용해야합니다.


답변

내가 본 mysql 데이터베이스에 액세스하는 대부분의 방법은 연결을 설정하고 모델 내에서 데이터를 검색하는 방법을 설명하지 않습니다. 내 응용 프로그램에서 mongoDB와 외부 mysql 데이터베이스를 모두 사용하고 있습니다. 그래서 여기에 내가 (mysql 쪽) 일을 한 방법이 있습니다.

  1. Play 2.3.3의 경우 build.sbt 파일에서 libraryDependencies에 mysql 특정 행을 추가하십시오.

    libraryDependencies ++= Seq(
        "mysql" % "mysql-connector-java" % "5.1.27"
    )
  2. /conf/application.conf 파일에서 다음을 추가하십시오.

    db.myotherdb.driver = com.mysql.jdbc.Driver
    db.myotherdb.url = "jdbc:mysql://xxx.xxx.xxx.xxx/NameOfOtherDB?characterEncoding=UTF-8"
    db.myotherdb.user = MyOtherDbUSername
    db.myotherdb.password = MyOtherDbPass

    기본 데이터베이스를 사용하려는 경우 또는 사용하려는 다른 이름으로 “myotherdb”를 “default”로 바꿀 수 있습니다. “xxx.xxx.xxx.xxx”를 데이터베이스가있는 서버 (외부 데이터베이스의 경우) 또는 로컬 데이터베이스의 경우 localhost (또는 127.0.0.1)의 IP 주소로 바꿉니다. “NameOfOtherDB”를 사용하려는 데이터베이스 이름으로 바꾸고, “MyOtherDbUSername”을 데이터베이스 사용자 이름으로, “MyOtherDbPass”를 데이터베이스 암호로 바꿉니다.

  3. 모델 (/app/models/MyModel.scala) 안에 다음을 추가하십시오.

    val connection = DB.getConnection("myotherdb")
  4. 문, 쿼리를 생성하고 실행합니다.

    val statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)
    val query = "SELECT * FROM myTableName"
    val resultset = statement.executeQuery(query)
  5. 그런 다음 검색된 데이터로 원하는 작업을 계속할 수 있습니다. 예를 들면 :

    while (resultset.next()) {
        resultset.getString("columnName")
    }

    여기서 “columnName”은 검색하려는 DB 테이블 열 / 필드의 이름입니다.

마지막으로 close () 를 호출하여 연결을 닫고 싶을 수도 있습니다.


답변

이것을 찾을 때까지 내 MySQL 구성을 고수했습니다.

@biesior 답변에서 가져온 가장 중요한 것 :

  • 프로젝트의 종속성 (내부에 있음 /project/Build.scala)에 MySQL 커넥터 / J 추가
  • 종속성을 추가 한 후 실행 play dependencies하여 새로 추가 된 MySQL 커넥터 / J 종속성을 해결하십시오.
  • 기본 ebean 구성 줄의 주석 처리 제거 ebean.default="models.*"
  • 적절한 문자 인코딩으로 MySQL 데이터베이스를 올바르게 구성하십시오. db.default.driver=com.mysql.jdbc.Driver
    db.default.url="jdbc:mysql://www.sample.com:3306/test?characterEncoding=UTF-8"
    db.default.user=playuser
    db.default.pass=playuser

그것은 내 하루를 구했습니다.


답변

2.3.1 플레이의 경우 다음 단계를 따르십시오.

1) 프로젝트의 종속성 (/project/build.sbt 내에 있음)에 MySQL 커넥터 / J 추가

libraryDependencies ++= Seq( javaJdbc, javaEbean, "mysql" % "mysql-connector-java" % "5.1.29"

2) 기본 ebean 구성 줄 ebean.default = “models. *”의 주석 처리를 제거합니다.

3) 적절한 문자 인코딩으로 MySQL 데이터베이스를 올바르게 구성하십시오.

db.default.driver=com.mysql.jdbc.Driver    //this is com. and not org.
db.default.url="jdbc:mysql://127.0.0.1/test?characterEncoding=UTF-8"
db.default.user=playuser
db.default.pass=playuser

4) 대부분의 임프. 콘솔에서 다시로드 명령을 실행하십시오 .


답변

2.4.3 및 MYSQL 5.7.9 플레이

나는 이전의 모든 답변에서 얻은 정보를 모아서 이것을 작동시킬 수있었습니다. 그래서 여기에 또 다른 것이 있는데, 이것은 비슷한 환경을 가진 사람들에게 더 최신이거나 유용하기를 바랍니다.

환경 세부 정보 : ( 이것은 내가 사용하고있는 것입니다 )

  • Play 2.4.3은 activator-1.3.7- 최소 와 함께 제공됩니다.
  • JDK8,이 버전의 플레이가 JDK7에서 작동하지 않는다고 생각하므로 이미 가지고 있어야합니다.
  • MYSQL 5.7.9

appication.conf

db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost:3306/testSchema?characterEncoding=UTF-8"
db.default.user=yourDBUserName
db.default.password=yourDBUserPass

노트 :

  • URL의 testSchema는 데이터베이스 이름이며, MYSQL 워크 벤치 와 같은 것을 사용 하는 경우 SCHEMAS 섹션 아래에 나열됩니다. 내 testSchema를 호출했습니다. 다른 사람들은 이것을 “myDatabase”와 같이 부를 수 있습니다.
  • 포트는 MYSQL 포트 여야합니다. 애플리케이션 포트가 아닙니다. 나는 넣어3306일반적으로 MYSQL의 기본값이기 때문에 예제를 .

build.sbt

아래의이 줄을 build.sbt 파일에 추가하십시오. 이것은 libraryDependencies ++= Seq()선언 후에 진행되어야합니다 .

libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.36"

드디어

  • 프로젝트 루트에서이 명령을 실행하십시오-> activator reload
  • 응용 프로그램을 다시 시작하십시오