Wednesday 29 April 2020

Spring and JPA (Java Persistent API) Integration Application

Spring and JPA (Java Persistent API) Integration Application 



JPA (Java Persistent API) is the sun specification for persisting objects in the enterprise
application. It is currently used as the replacement for complex entity beans. The implementation of JPA specification are provided by many vendors such as:


  • Hibernate
  • Toplink
  • iBatis
  • OpenJPA etc.

Advantage of Spring with JPA

You don't need to write the before and after code for persisting, updating, deleting or searching object such as creating Persistence instance,  creating EntityManagerFactory instance, creating
EntityTransaction instance, creating EntityManager instance,  commiting EntityTransaction instance and closing EntityManager.


Steps:-
Let's see what are the simple steps for Spring 4.0 and JPA integration:

  • First Create a Java Application 
  • create applicationContext.xml file .
  • create User.java file It is the persistent class
  • create UserDao.java file .
  • create SpringHibernateApplication.java  with main method .

For Spring Hibernate application Configuration download jar files by click here 


applicationContext.xml 

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:flow="http://www.springframework.org/schema/webflow-config"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:jms="http://www.springframework.org/schema/jms"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:osgi="http://www.springframework.org/schema/osgi"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
          http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
          http://www.springframework.org/schema/webflow-config http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd
          http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd
          http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-4.0.xsd
          http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-4.0.xsd
          http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi-1.2.xsd
          http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
          http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd
">

<context:annotation-config />
<context:component-scan base-package="in.jk" />
<tx:annotation-driven
transaction-manager="transactionManager" proxy-target-class="true" />

<bean id="postgresDatasource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="url"
value="jdbc:postgresql://localhost:5432/postgres"></property>
<property name="driverClassName"
value="org.postgresql.Driver"></property>
<property name="username" value="postgres"></property>
<property name="password" value="jk123"></property>
</bean>

<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
</bean>

<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:dataSource-ref="postgresDatasource">

<!-- By Using this no need for classpath:persistance.xml file -->
<property name="packagesToScan" value="in.jk" />
        <property name="jpaVendorAdapter">
<bean
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true" />
<property name="generateDdl" value="true"></property>
<property name="databasePlatform"
value="org.hibernate.dialect.PostgreSQLDialect" />
</bean>
</property>
</bean>

     <bean id="userDao" class="in.jk.UserDao">
</bean>


</beans>

User.java

package in.jk;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="user_details")
public class User {
@Id
@Column(name="userId")
private int userId;
@Column(name="name")
private String name;
@Column(name="email")
private String email;
     
      // Getters and Setters
@Override
public String toString() {
return "User [userId=" + userId + ", name=" + name + ", email=" + email + "]";
}
}

UserDao.java

package in.jk;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.transaction.annotation.Transactional;

@Transactional
public class UserDao {

@PersistenceContext
EntityManager entityManager;

public void save(User user) {

               entityManager.persist(user);
}

public User get(int id) {

return entityManager.find(User.class, id);
}


}

SpringJpaApplication.java

package in.jk;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringJpaApplication {

public static void main(String[] args) {

ApplicationContext context = null;
EntityManagerFactory entityManagerFactory =null;
context=new ClassPathXmlApplicationContext("ApplicationContext.xml");
entityManagerFactory = (EntityManagerFactory)context.getBean("entityManagerFactory");
                EntityManager entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();

User user = new User();
user.setUserId(100);
user.setName("JK");
user.setEmail("jk@gmail.com");

// For persist Object
entityManager.persist(user);
System.out.println("User saved in Database ..");

// For find Object
User user1 = entityManager.find(User.class, 100);
System.out.println("User from Database.." + user1);

// For delete Object
entityManager.remove(user1);
System.out.println("User Deleted from Database.." + user1);

entityManager.getTransaction().commit();

                System.out.println();
                System.out.println("Using Second Way :: ");
System.out.println("Persist and find the Object using Dao with Declative Transatcion");

UserDao userDao = (UserDao) context.getBean("userDao");

User userObj = new User();
userObj.setUserId(101);
userObj.setName("JK");
userObj.setEmail("jk@gmail.com");

// For persist Object
userDao.save(userObj);

// For find Object
User userEntity = userDao.get(101);
System.out.println("User from database.." + userEntity);
System.out.println("Completed  Succussfully ....");
}}

Output in Console ....




Spring and Hibernate Integration Application


Spring 4 .0  and Hibernate 4.0  Integration Application 


The Spring framework provides HibernateTemplate class, so you don't need to follow so many steps like create Configuration,
BuildSessionFactory, Session, beginning and committing transaction etc.

We are going to integrate the hibernate application with spring, we don't need to create the hibernate.cfg.xml file.
We can provide all the information in the applicationContext.xml file.

Steps
Let's see what are the simple steps for hibernate and spring integration:

  • First Create a Java Application 
  • create applicationContext.xml file It contains information of DataSource, SessionFactory etc.
  • create User.java file It is the persistent class
  • create UserDao.java file It is the dao class that uses HibernateTemplate.
  • create SpringHibernateApplication.java  with main method .


For Spring Hibernate application Configuration download jar files by click here 


applicationContext.xml 

In this file, we are providing all the informations of the database in the BasicDataSource object.
This object is used in the LocalSessionFactoryBean class object, containing some other informations such as mappingResources and hibernateProperties.
The object of LocalSessionFactoryBean class is used in the HibernateTemplate class.
Let's see the code of applicationContext.xml file.

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:flow="http://www.springframework.org/schema/webflow-config"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:jms="http://www.springframework.org/schema/jms"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:osgi="http://www.springframework.org/schema/osgi"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
          http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
          http://www.springframework.org/schema/webflow-config http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd
          http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd
          http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-4.0.xsd
          http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-4.0.xsd
          http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi-1.2.xsd
          http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
          http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd
">

<context:annotation-config />
<context:component-scan base-package="in.jk" />
<tx:annotation-driven />
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

<bean id="postgresDatasource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="url"
value="jdbc:postgresql://localhost:5432/postgres"></property>
<property name="driverClassName"
value="org.postgresql.Driver"></property>
<property name="username" value="postgres"></property>
<property name="password" value="jk123"></property>
</bean>

<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="postgresDatasource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
  <property name="annotatedClasses">
<list>
<value>in.jk.User</value>
</list>
</property>
</bean>
<bean id="template"
class="org.springframework.orm.hibernate4.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="hibernateTemplate" class="in.jk.UserDao">
<property name="hibernateTemplate" ref="template"></property>
</bean>
</beans>

User.java

package in.jk;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "Users")
public class User {

@Id
@Column(name = "userId")
private int userId;
@Column(name = "name")
private String name;
@Column(name = "email")
private String email;

// Getters and Setters

@Override
public String toString() {
return "User [userId=" + userId + ", name=" + name + ", email=" + email + "]";
}
}


UserDao.java

package in.jk;

import org.springframework.orm.hibernate4.HibernateTemplate;
import org.springframework.transaction.annotation.Transactional;

@Transactional
public class UserDao {

HibernateTemplate hibernateTemplate;

public void save(User user) {

hibernateTemplate.save(user);
}

public User get(int id) {

return hibernateTemplate.get(User.class, id);
}

public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}

public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}

}


SpringHibernateApplication.java

package in.jk;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringHibernateApplication {

public static void main(String[] args) {

ApplicationContext applicationContext = null;
               applicationContext  = ClassPathXmlApplicationContext("ApplicationContext.xml");
UserDao dao = (UserDao) applicationContext.getBean("hibernateTemplate");

User user = new User();
user.setUserId(100);
user.setName("JK");
user.setEmail("jk@gmail.com");

dao.save(user);
System.out.println("User Added ....");
System.out.println();
        User userobj = dao.get(100);
System.out.println("User From Daatabase ...."+userobj);

}

}

Output in Console  ....










Friday 10 April 2020

How To Use Cassandra 3.3.0 with Java Application .

What is Cassandra ?


Cassandra is a NoSQL database which is distributed and scalable. It is provided by Apache. Apache Cassandra is highly scalable, high performance, distributed NoSQL database. Cassandra is designed to handle huge amount of data across many commodity servers,  providing high availability without a single point of failure.

The following points specify the most important happenings in Cassandra history:
Cassandra was developed at Facebook by Avinash Lakshman and Prashant Malik.
It was open sourced by Facebook in July 2008.
It was accepted by Apache Incubator in March 2009.
Cassandra is a top level project of Apache since February 2010.

What is Keyspace?
A keyspace is an object that is used to hold column families, user defined types. A keyspace is like RDBMS database which contains column families, indexes, user defined types, data center awareness, strategy used in keyspace, replication factor, etc.

In Cassandra, "Create Keyspace" command is used to create keyspace.

CQL Synatx for create keysapce :
Create keyspace KeyspaceName with replicaton={'class':strategy name, 
'replication_factor': No of replications on different nodes}

Create table Syantax in CQL

CREATE TABLE student(
   student_id int PRIMARY KEY,
   student_name text,
   student_city text,
   student_fees varint,
   student_phone varint
   );


To Use Cassandra First install the Cassandra Server on your machine After install start Cassandra server
go to bin directory of your Cassandra type following command

E:\jk\software\apache-cassandra-3.0.20-bin\apache-cassandra-3.0.20\bin> cassandra.bat -f

To Use Cassandra with Java Application First Download Cassandra Server Driver jar for Java Apllication

Add following jar file on classpath

cassandra-driver-core-3.0.1.jar
guava-16.0.1.jar
metrics-core-3.1.2.jar
netty-buffer-4.0.33.Final.jar
netty-codec-4.0.33.Final.jar
netty-common-4.0.33.Final.jar
netty-handler-4.0.33.Final.jar
netty-transport-4.0.33.Final.jar
slf4j-api-1.7.7.jar


Java Application With Cassandra 

CassandraConnector.java  :- This Connector class use to connect java application with

Cassandra server and get a session object .

package in.jk.cassandra;

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.SocketOptions;

public class CassandraConnector {

private Cluster cluster;
private Session session;
private String node ="127.0.0.1"; //local host Node IP
private int port =9042; // Default port of Cassandra

public Cluster connect(String node, int port) {

SocketOptions options = new SocketOptions();
        options.setConnectTimeoutMillis(300000);
        options.setReadTimeoutMillis(3000000);
options.setTcpNoDelay(true);

        return this.cluster = Cluster.builder()
                            .addContactPoint(node)
                            .withPort(port)
                            .withSocketOptions(options)
                            .build();

}

public Session openSession() {

String localhostNode = this.node;
int port =this.port;

               // provide cluster IP address and port no for   getting cluster
this.cluster = connect(localhostNode, port);
session = cluster.connect();
return session;

}

public void close() {

session.close();
}

}

CassandraApplication .java :-CassandraApplication  java class responsible for getting session object from connector  class , create keyspace and table  and insert , retrieve and delete data from data from table .

package in.jk.cassandra;

import java.util.List;

import com.datastax.driver.core.ExecutionInfo;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;

public class CassandraApplication {

public static void main(String[] args) {

CassandraConnector cassandraConnector = new CassandraConnector();
Session session = cassandraConnector.openSession();
System.out.println("Session :: " + session);


// CQL Query to create Keyspace
String keyspacequery = "CREATE KEYSPACE google_employee WITH replication "
+ "= {'class':'SimpleStrategy', 'replication_factor':1};";
session.execute(keyspacequery);
               System.out.println("google_employee Keyspace is created  ");
session.execute("USE google_employee");
// CQL Query for creating table
String createquery = "Create table employee ( empId int PRIMARY Key,
                name varchar   , company varchar ,adddress varchar)";
session.execute(createquery);

// CQL Query for adding data in employee table
int empId = 3;
String name = "JK";
String company = "Google";
String address = "India";
String query = "Insert into employee (empId,name,company,adddress) values(" + empId +                   ",'" + name + "','"+ company + "','" + address + "')";

ResultSet resultSet0 = session.execute(query);
Row row0 = resultSet0.one();
System.out.println("Employee Record Added");
System.out.println(row0);
System.out.println();

String selectQuery = "Select * from employee";
String queryWithWhere = "Select * from employee  where empId=?";

ResultSet resultSet = session.execute(selectQuery);
Row row = resultSet.one();

System.out.println("Employee Id   :" + row.getInt("empId"));
System.out.println("Employee Name :" + row.getString("name"));
System.out.println("Company       :" + row.getString("company"));
System.out.println("Address       :" + row.getString("adddress"));

System.out.println();

ResultSet resultSet1 = session.execute(queryWithWhere, empId);
Row row1 = resultSet1.one();

System.out.println("Employee Id   :" + row1.getInt("empId"));
System.out.println("Employee Name :" + row1.getString("name"));
System.out.println("Company       :" + row1.getString("company"));
System.out.println("Address       :" + row1.getString("adddress"));

System.out.println();

String deleteQuery = "Delete from employee  where empId=?";

ResultSet resultSet2 = session.execute(deleteQuery, empId);

List<ExecutionInfo> list = resultSet2.getAllExecutionInfo();
System.out.println("Record Deleted :: " + list.size());
System.out.println("Record Deleted Succussfully ..");
System.out.println("Query Executed Succussfully . ");

session.close();

}

}

Output of Above Code :-










How To Use MongoDB with Java Application .

What is Mongo Database ?


MongoDB is a No SQL database. It is an open-source, cross-platform, document-oriented database written in C++;

What is No SQL ?

It provides a mechanism for storage and retrieval of data other than tabular relations model used in relational databases. NoSQL database doesn't use tables for storing data. It is generally used to store big data and real-time web applications.


MongoDB is an open-source document database that provides high performance, high availability, and automatic scaling.

In simple words, you can say that - Mongo DB is a document-oriented database. It is an open source product, developed  in 2007 and supported by a company named 10gen also known as MongoDB Inc.

Advantages of NoSQL

It supports query language.
It provides fast performance.
It provides horizontal scalability.

Basic Terminology Of MongoDB

Document:- MongoDB is a document database: each record in a MongoDB collection is document. Documents are a structure composed of file and value pairs, similar to JSON objects or other mapping data types.
Example:-
{
  "empId": 1,
  "name": "JK",
  "company";"10gn"
  }

Collection :- A Collection is collection MongoDB documents . 

Database :- A Database is MongoDB collection . 

Mongo DB with Java 

First install MongoDB on your Machine then  go to installation directory of MongoDB 
like on my machine it is .

C:\Program Files\MongoDB\Server\4.2
Then create a folder a name with db in data folder . after that to use mongoDB first start the 
MongoDB Server by following command .

Open Command prompt in bin directory of Server

C:\Program Files\MongoDB\Server\4.2\bin>mongod.exe --dbpath "C:\Program Files\MongoDB\Server\4.2\data\db"

To user MongoDB with Java Application first Download the MongoDB Server Driver jar

mongo-java-driver-3.3.0.jar  and put it on classpath of your java application .


How to create  and use database  and collection in MongoDB



package in.jk.mongo;

import java.util.Iterator;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;

public class MongoCollectionApplication {

public static void main(String[] args) {


  MongoClient mongoClient = new MongoClient("localhost", 27017);
 // create a database or if database with given already exist use it .
MongoDatabase database = mongoClient.getDatabase("employeedata");
database.createCollection("samplecollection"); // create a new collection
MongoIterable<String>collectionNames=database.listCollectionNames();
Iterator<String> iterator=collectionNames.iterator();
System.out.println("All Collection Name ::");
while (iterator.hasNext()) {
String name = (String) iterator.next();
System.out.println(name);
}
System.out.println();
MongoCollection<Document> collections = database.getCollection("samplecollection");                    collections .drop();// drop a collection 
MongoIterable<String>collectionNames1=database.listCollectionNames();
Iterator<String> iterator1=collectionNames1.iterator();
System.out.println("All Collection Name ::");
while (iterator1.hasNext()) {
String name = (String) iterator1.next();
System.out.println(name);
}
mongoClient.close();

}

}

How  to insert a Document in  MongoDB 

package in.jk.mongo;

import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;

public class MongoApplication {

public static void main(String[] args) {

try {

MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("employeedata");
// database.createCollection("empcollection"); // create a collection if not
// exist ..
MongoCollection<Document> collection = database.getCollection("empcollection");
Document document = new Document();
document.put("empId", 4);
document.put("name", "JK");
document.put("company", "10 Gen Inc");
collection.insertOne(document);
System.out.println("Document Save Succussfully .");
System.out.println();
MongoCollection<Document> collection database.getCollection("empcollection");
System.out.println("Size of Collection :: " + collection .count());
FindIterable<Document> findItr = collection .find();
MongoCursor<Document> cursor = findItr.iterator();
while (cursor.hasNext()) {
Document document2 = (Document) cursor.next();
System.out.println(document2);

}

mongoClient.close();

} catch (Exception e) {

System.out.println("Exception ::" + e);
}

}
}













How to update a Document in MongoDB
package in.jk.mongo;

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;

public class UpdateDocumentApplication {

public static void main(String[] args) {

try {

MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("employeedata");
// database.createCollection("empcollection");
MongoCollection<Document> collection = database.getCollection("empcollection");
System.out.println("Size of Collection :: " + collection.count());
                        FindIterable<Document> findItr = collection.find();
                        MongoCursor<Document> cursor = findItr.iterator();
                        while (cursor.hasNext()) {
        Document document2 = (Document) cursor.next();
                        System.out.println(document2);

}
System.out.println();
MongoCollection<Document> collection1 = database.getCollection("empcollection");
collection1 .updateOne(Filters.eq("name", "JK"), Updates.set("name", "johny"));
System.out.println("After Update :: ");
System.out.println("Size of Collection :: " + collection1 .count());
                        FindIterable<Document> findItr1 = collection.find();
                        MongoCursor<Document> cursor1 = findItr1.iterator();
                        while (cursor1.hasNext()) {
Document document2 = (Document) cursor1.next();
                        System.out.println(document2);

}

mongoClient.close();

} catch (Exception e) {

System.out.println("Exception ::" + e);
}

}

}












How to Delete a Document in Mongo DB

package in.jk.mongo;

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;

public class DeleteDocumentApplication {

public static void main(String[] args) {

try {

MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("employeedata");
MongoCollection<Document> collection = database.getCollection("empcollection");
System.out.println("Size of Collection :: " +collection.count());
FindIterable<Document> findItr = collection.find();
MongoCursor<Document> cursor = findItr.iterator();

while (cursor.hasNext()) {
Document document2 = (Document) cursor.next();
System.out.println(document2);

}

System.out.println();
MongoCollection<Document> collection1 = database.getCollection("empcollection");
collection1.deleteOne(Filters.eq("name", "johny"));
System.out.println("After Delete :: ");
System.out.println("Size of Collection :: " + collection.count());
FindIterable<Document> findItr1 = collection.find();
MongoCursor<Document> cursor1 = findItr1.iterator();
while (cursor1.hasNext()) {
Document document2 = (Document) cursor1.next();
System.out.println(document2);

}

mongoClient.close();

} catch (Exception e) {

System.out.println("Exception ::" + e);
}

}

}