Showing posts with label Spring data. Show all posts
Showing posts with label Spring data. Show all posts

Spring Data Mongodb WriteConcern Example

Spring Data for MongoDB is part of the umbrella Spring Data project which aims to provide a familiar and consistent Spring-based programming model for for new data stores while retaining store-specific features and capabilities. See more about Spring Data

WriteConcern

Write concern describes the guarantee that MongoDB provides when reporting on the success of a write operation. The strength of the write concerns determine the level of guarantee it control the write behavior for with various options, as well as exception raising on error conditions. The available write concerns are..

-1 =No exceptions are raised, even for network issues

0 = Exceptions are raised for network issues, but not server errors

1 = Exceptions are raised for network issues, and server errors; waits on a server for the write operation

2 = Exceptions are raised for network issues, and server errors; waits for at least 2 servers for the write operation*/

In this example we will see how to set WriteConcern while saving mongodb object and its output.

1. Create a Maven Project

Create a Maven project and add below dependencies

<repositories>
		<repository>
			<id>spring-milestone</id>
			<name>Spring Maven MILESTONE Repository</name>
			<url>http://maven.springframework.org/milestone</url>
		</repository>
	</repositories>
	<dependencies>
		
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>3.0.5.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>3.0.5.RELEASE</version>
		</dependency>
		<!-- mongodb java driver -->
		<dependency>
			<groupId>org.mongodb</groupId>
			<artifactId>mongo-java-driver</artifactId>
			<version>2.5.2</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-mongodb</artifactId>
			<version>1.0.0.M2</version>
		</dependency>
		<dependency>
			<groupId>cglib</groupId>
			<artifactId>cglib</artifactId>
			<version>2.2</version>
		</dependency>
	</dependencies>

2. Create a Main class to save objects

package com.pretech;
import org.springframework.data.mongodb.core.MongoTemplate;
import com.mongodb.Mongo;
import com.mongodb.WriteConcern;
public class SpringDataWriteConcern {
	public static void main(String[] args) {
		Mongo mongo;
		try {
			mongo = new Mongo("localhost");
			MongoTemplate mongoTemplate = new MongoTemplate(mongo, "PersonDB");
			mongoTemplate.setWriteConcern(WriteConcern.NONE);
			System.out.println("Person Details Save Transaction Started");
			mongoTemplate.save(new Person("Ramu"));
			System.out.println("Person Details Save Transaction Completed");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
class Person {
	private String name;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Person(String name) {
		super();
		this.name = name;
	}
}

Run it


In this example we are using WriteConcern.NONE ( –1) it means even for network issues also the program will continue. For testing shutdown mongodb and run the above program, we can see the completed message is printing.



Person Details Save Transaction Started
Dec 10, 2013 9:41:57 PM com.mongodb.DBTCPConnector fetchMaxBsonObjectSize
WARNING: null
java.io.IOException: couldn't connect to [vinod-PC/192.168.211.1:27017] bc:java.net.ConnectException: Connection refused: connect
    at com.mongodb.DBPort._open(DBPort.java:205)
    at com.mongodb.DBPort.go(DBPort.java:94)
    at com.mongodb.DBPort.go(DBPort.java:75)
    at com.mongodb.DBPort.findOne(DBPort.java:129)
    at com.mongodb.DBPort.runCommand(DBPort.java:138)
    at com.mongodb.DBTCPConnector.fetchMaxBsonObjectSize(DBTCPConnector.java:422)
    at com.mongodb.Mongo.getMaxBsonObjectSize(Mongo.java:526)
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:236)
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:209)
    at com.mongodb.DBCollection.insert(DBCollection.java:66)
    at com.mongodb.DBCollection.save(DBCollection.java:624)
    at org.springframework.data.mongodb.core.MongoTemplate$10.doInCollection(MongoTemplate.java:876)
    at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:401)
    at org.springframework.data.mongodb.core.MongoTemplate.saveDBObject(MongoTemplate.java:867)
    at org.springframework.data.mongodb.core.MongoTemplate.doSave(MongoTemplate.java:799)
    at org.springframework.data.mongodb.core.MongoTemplate.save(MongoTemplate.java:745)
    at org.springframework.data.mongodb.core.MongoTemplate.save(MongoTemplate.java:736)
    at com.pretech.SpringDataWriteConcern.main(SpringDataWriteConcern.java:17)

Dec 10, 2013 9:41:58 PM com.mongodb.DBTCPConnector fetchMaxBsonObjectSize
WARNING: null
java.io.IOException: couldn't connect to [vinod-PC/192.168.211.1:27017] bc:java.net.ConnectException: Connection refused: connect
    at com.mongodb.DBPort._open(DBPort.java:205)
    at com.mongodb.DBPort.go(DBPort.java:94)
    at com.mongodb.DBPort.go(DBPort.java:75)
    at com.mongodb.DBPort.findOne(DBPort.java:129)
    at com.mongodb.DBPort.runCommand(DBPort.java:138)
    at com.mongodb.DBTCPConnector.fetchMaxBsonObjectSize(DBTCPConnector.java:422)
    at com.mongodb.DBTCPConnector.checkMaster(DBTCPConnector.java:409)
    at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:153)
    at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:146)
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:254)
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:209)
    at com.mongodb.DBCollection.insert(DBCollection.java:66)
    at com.mongodb.DBCollection.save(DBCollection.java:624)
    at org.springframework.data.mongodb.core.MongoTemplate$10.doInCollection(MongoTemplate.java:876)
    at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:401)
    at org.springframework.data.mongodb.core.MongoTemplate.saveDBObject(MongoTemplate.java:867)
    at org.springframework.data.mongodb.core.MongoTemplate.doSave(MongoTemplate.java:799)
    at org.springframework.data.mongodb.core.MongoTemplate.save(MongoTemplate.java:745)
    at org.springframework.data.mongodb.core.MongoTemplate.save(MongoTemplate.java:736)
    at com.pretech.SpringDataWriteConcern.main(SpringDataWriteConcern.java:17)

Dec 10, 2013 9:41:59 PM com.mongodb.DBTCPConnector$MyPort error
SEVERE: MyPort.error called
java.io.IOException: couldn't connect to [vinod-PC/192.168.211.1:27017] bc:java.net.ConnectException: Connection refused: connect
    at com.mongodb.DBPort._open(DBPort.java:205)
    at com.mongodb.DBPort.go(DBPort.java:94)
    at com.mongodb.DBPort.go(DBPort.java:75)
    at com.mongodb.DBPort.say(DBPort.java:70)
    at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:160)
    at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:146)
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:254)
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:209)
    at com.mongodb.DBCollection.insert(DBCollection.java:66)
    at com.mongodb.DBCollection.save(DBCollection.java:624)
    at org.springframework.data.mongodb.core.MongoTemplate$10.doInCollection(MongoTemplate.java:876)
    at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:401)
    at org.springframework.data.mongodb.core.MongoTemplate.saveDBObject(MongoTemplate.java:867)
    at org.springframework.data.mongodb.core.MongoTemplate.doSave(MongoTemplate.java:799)
    at org.springframework.data.mongodb.core.MongoTemplate.save(MongoTemplate.java:745)
    at org.springframework.data.mongodb.core.MongoTemplate.save(MongoTemplate.java:736)
    at com.pretech.SpringDataWriteConcern.main(SpringDataWriteConcern.java:17)

Person Details Save Transaction Completed


Spring Data Mongodb : How to make readonly database

In java Mongodb driver package com.mongodb.DB setReadOnly(boolean ) method provides options to make mongodb database as readonly. In this example we will see how to use this.

Example

package com.pretech;
import org.springframework.data.mongodb.core.MongoTemplate;
import com.mongodb.Mongo;
public class SpringDataReadOnly {
	public static void main(String[] args) {
		Mongo mongo;
		try {
			mongo = new Mongo("localhost");
			MongoTemplate mongoTemplate = new MongoTemplate(mongo, "SampleDb");
			mongoTemplate.getDb().setReadOnly(true);
			// Insert customer details
			mongoTemplate.save(new Customer("Ramu"));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
class Customer {
	private String name;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Customer(String name) {
		super();
		this.name = name;
	}
}

Output



java.lang.IllegalStateException: db is read only
    at com.mongodb.DBCollection.checkReadOnly(DBCollection.java:1143)
    at com.mongodb.DBCollection.save(DBCollection.java:611)
    at com.mongodb.DBCollection.save(DBCollection.java:599)
    at org.springframework.data.mongodb.core.MongoTemplate$10.doInCollection(MongoTemplate.java:874)
    at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:401)


Spring Data Mongodb CRUD operation using MongoTemplate

Spring Data for MongoDB is part of the umbrella Spring Data project which aims to provide a familiar and consistent Spring-based programming model for for new datastores while retaining store-specific features and capabilities. See more about SpringData

In this example we will see simple CRUD operation using SpringData MongoTemplate.

Prerequisites: Mongodb should up and running

1. Create a Maven Project

Create a Maven project and add below dependencies

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.pretech</groupId>
	<artifactId>spring-data-fs-example</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<repositories>
		<repository>
			<id>spring-milestone</id>
			<name>Spring Maven MILESTONE Repository</name>
			<url>http://maven.springframework.org/milestone</url>
		</repository>
	</repositories>
	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>3.0.7.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>3.0.5.RELEASE</version>
		</dependency>
		<!-- mongodb java driver -->
		<dependency>
			<groupId>org.mongodb</groupId>
			<artifactId>mongo-java-driver</artifactId>
			<version>2.5.2</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-mongodb</artifactId>
			<version>1.1.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>cglib</groupId>
			<artifactId>cglib</artifactId>
			<version>2.2</version>
		</dependency>
	</dependencies>
</project>   

2. Create a Main class for CRUD operations

package com.pretech;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import com.mongodb.Mongo;
public class SpringDataMongoTemplate {
	public static void main(String[] args) {
		Mongo mongo;
		try {
			mongo = new Mongo("localhost");
			MongoTemplate mongoTemplate = new MongoTemplate(mongo,
					"StudentDocuments");
			// Create Collections
			if (!mongoTemplate.collectionExists("Students")) {
				mongoTemplate.createCollection("Students");
			}
			System.out.println("Collection created "+mongoTemplate.getCollectionNames());
			// Insert Student details
			mongoTemplate.save(new Student("Santhosh", "Bangalore"));
			// Select student details
			System.out.println("Student details after insert"
					+ mongoTemplate.findAll(Student.class));
			// Update Student Details
			mongoTemplate.updateMulti(
					new Query(Criteria.where("name").is("Santhosh")),
					Update.update("address", "New Bangalore"), Student.class);
			System.out.println("Student details after update"
					+ mongoTemplate.findAll(Student.class));
			// Delete Student details
			mongoTemplate.remove(new Query(Criteria.where("name")
					.is("Santhosh")),Student.class);
			System.out.println("Student details after Delete"
					+ mongoTemplate.findAll(Student.class));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
class Student {
	String name;
	String address;
	public Student(String name, String address) {
		super();
		this.name = name;
		this.address = address;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", address=" + address + "]";
	}
}

Run it



Console output


Collection created [Students, system.indexes]
Student details after insert[Student [name=Santhosh, address=Bangalore]]
Student details after update[Student [name=Santhosh, address=New Bangalore]]
Student details after Delete[]

Spring Data Mongodb: How to save files in Mongodb

Spring Data for MongoDB is part of the umbrella Spring Data project which aims to provide a familiar and consistent Spring-based programming model for for new datastores while retaining store-specific features and capabilities. See more about SpringData

In this example we will see how to insert a file in mongodb using SpringData GridFSTemplate.

Prerequisites: Mongodb should up and running

1. Create a Maven Project

Create a Maven project and add below dependencies

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.pretech</groupId>
	<artifactId>spring-data-fs-example</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<repositories>
		<repository>
			<id>spring-milestone</id>
			<name>Spring Maven MILESTONE Repository</name>
			<url>http://maven.springframework.org/milestone</url>
		</repository>
	</repositories>
	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>3.0.7.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>3.0.5.RELEASE</version>
		</dependency>
		<!-- mongodb java driver -->
		<dependency>
			<groupId>org.mongodb</groupId>
			<artifactId>mongo-java-driver</artifactId>
			<version>2.5.2</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-mongodb</artifactId>
			<version>1.1.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>cglib</groupId>
			<artifactId>cglib</artifactId>
			<version>2.2</version>
		</dependency>
	</dependencies>
</project>   

2. Create a Main class to create GridFSTemplate and insert files

package com.pretech;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;
import org.springframework.context.annotation.Bean;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.gridfs.GridFsCriteria;
import org.springframework.data.mongodb.gridfs.GridFsTemplate;
import com.mongodb.Mongo;
import com.mongodb.gridfs.GridFSDBFile;
public class SpringDataGridFSTamplate {
	@Bean
	public static MongoDbFactory mongoDbFactory() throws Exception {
		Mongo mongo = new Mongo("localhost");
		String databaseName = "myfiles";
		MongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(mongo,
				databaseName);
		return mongoDbFactory;
	}
	@Bean
	public static GridFsTemplate gridFsTemplate() throws Exception {
		MongoDbFactory dbFactory = mongoDbFactory();
		MongoConverter converter = mongoConverter();
		GridFsTemplate gridFsTemplate = new GridFsTemplate(dbFactory, converter);
		return gridFsTemplate;
	}
	@Bean
	public static MongoConverter mongoConverter() throws Exception {
		MongoMappingContext mappingContext = new MongoMappingContext();
		MappingMongoConverter mappingMongoConverter = new MappingMongoConverter(
				mongoDbFactory(), mappingContext);
		return mappingMongoConverter;
	}
	public static void main(String[] args) {
		try {
			InputStream is = new FileInputStream("customer.xlsx");
				gridFsTemplate().store(is, "customer.xlsx");
				List<GridFSDBFile> result = gridFsTemplate().find(
						new Query().addCriteria(GridFsCriteria.whereFilename().is(
								"customer.xlsx")));
				for (GridFSDBFile file : result) {
						file.writeTo("newcustomer.xlsx");
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
			System.out.println("Completed");
	}
}

Run it



In MongoDB


image


New customer file created in project folder


image


 


 


 

Confusion Matrix + Precision/Recall (Super Simple, With Examples)

  Confusion Matrix + Precision/Recall (Super Simple, With Examples) 1) Binary Classification Setup Binary classification means the model p...

Featured Posts