Working with Play framework using Scala and MongoDB

Knoldus Inc.
Knoldus - Technical Insights
3 min readAug 2, 2012

Scala : Scala is a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way. More…

Play Framework : Play 2.0 is a high-productivity Scala web application framework that integrates the components and APIs you need for modern web application development.

Play is based on a lightweight, stateless, web-friendly architecture. More…

MongoDB : MongoDB is a scalable, high-performance, open source NoSQL database. More…
Here we’ll have a look to use all these three together with help of small code snippets.
Creating a Play Scala Project using new command like :

[code language=”scala”]
play new Play_Scala_MongoDB_Tutorial
[/code]

Adding Dependecies :

Add the following dependencies in ‘Build.scala’ File in order to use MongoDB (Here we’ll be using SalatDAO).

[code language=”scala”]
“com.mongodb.casbah” %% “casbah” % “2.1.5–1”,
“com.novus” %% “salat-core” % “0.0.8–20120223”,
“commons-codec” % “commons-codec” % “1.6”
[/code]

Preparing Requests (GET and POST) : Here we are taking an example of a simple GET request.

You can define the requests path and the correspondent methods in “routes” file like :

[code language=”scala”]
GET /callMe controllers.Tutorial.testMethodForPlayTutorial
[/code]

Here we are defining that a GET request on this URL “ /callMe” would hit the method testMethodForPlayTutorail in Tutorial Controller.

Writing Controller : Now we are going to write Tutorial controller under “app/controllers”.

[code language=”scala”]
package controllers
import play.api.mvc.Controller
import play.api.mvc.Action

object Tutorial extends Controller {

def testMethodForPlayTutorial = Action { implicit request =>
Ok(“Method Hit is here”)
}

}
[/code]

Now you can run your application using following command & you’ll find your output at http://localhost:9000/callMe

[code language=”scala”]
/Play_Scala_MongoDB_Tutorial$ play run //running the project
[/code]

Connecting to MongoDB :

You’d require mongoDB running locally. We’ll use SalatDAO framwork to store the Data in mongoDB.You’d get an idea from this example of how to interact with MongoDB.

Firstly let us create the MongoDB connection class

Connection Class

[code language=”scala”]
package models
import com.mongodb.casbah.MongoConnection

object MongoDBSetup {
val mongoDB = MongoConnection()(“test_database”)
}
[/code]

Saving data in MongoDB :

Model Class

[code language=”scala”]
package models
import com.novus.salat.dao.SalatDAO
import org.bson.types.ObjectId
import models.MongoDBSetup
import com.novus.salat.global._

case class SaveData(username: String,
Marks: Int,
email: String) // SaveData Model

object SaveData {

def saveTheDataInMongo {
val dataToSave = new SaveData(“Neelkanth”, 87, “neelkanth@knoldus.com”)
SaveDataDAO.insert(dataToSave)
}

}

object SaveDataDAO extends SalatDAO[SaveData, ObjectId](collection = MongoDBSetup.mongoDB(“saved_data”))
[/code]

Now recall & modify the testMethodForPlayTutorial method.

[code language=”scala”]
def testMethodForPlayTutorial = Action { implicit request =>
SaveData.saveTheDataInMongo //calling the method
Ok(“Stored data in database”)
}
[/code]

Now on hitting the URL http://localhost:9000/callMe would generate the GET request that will create a database test_database and stores the data in collection saved_data.

GitHub Repo for this example.
:-)

--

--

Knoldus Inc.
Knoldus - Technical Insights

Group of smart Engineers with a Product mindset who partner with your business to drive competitive advantage | www.knoldus.com