Java MongoDB с чего начать? – Devcolibri – Android для начинающих

Java MongoDB с чего начать?

В данном уроке я бы хотел показать как работать с MongoDB и что вам для этого нужно.

Как установить MongoDB вы найдете тут ‘Как установить и настроить MongoDB на Windows 7?‘.

Шаг 0

Ну первое что стоит сделать это создать новый Maven project и добавить в pom.xml зависимость:

<dependency>
     <groupId>org.mongodb</groupId>
     <artifactId>mongo-java-driver</artifactId>
      <version>2.11.2</version>
</dependency>

После этого мы можем приступать к работе с MongoDB базой.

Шаг 1

Теперь предлагаю поставить UI клиент для MongoDB, советую этот Robomongo.

После того как вы поставите клиент вам нужно создать нового пользователя в MongoDB для уже существующей БД – ‘admin’.

Для этого в cmd или терминале коннектимся в MongoDB и добавляем нового пользователя для схемы ‘admin’.

mongo.exe connect
use admin
db.addUser('root', 'root');

У вас должно получится следующее:

Пользователя мы создали, имя схемы в БД знаем это – admin, можно переходить к коннекту.

Шаг 2 – Подключение к MongoDB

Теперь давайте подключимся к БД.

Создаем класс WorkWithMongo.java и в конструкторе этого класса создаем подключение к БД:

// это клиент который обеспечит подключение к БД
private MongoClient mongoClient;

// В нашем случае, этот класс дает 
// возможность аутентифицироваться в MongoDB
private DB db;

// тут мы будем хранить состояние подключения к БД
private boolean authenticate;

// И класс который обеспечит возможность работать 
// с коллекциями / таблицами MongoDB
private DBCollection table;

public WorkWithMongo(Properties prop) {
    try {
        // Создаем подключение
        mongoClient = new MongoClient( prop.getProperty("host"), Integer.valueOf(prop.getProperty("port")) );

        // Выбираем БД для дальнейшей работы
        db = mongoClient.getDB(prop.getProperty("dbname"));

        // Входим под созданным логином и паролем
        authenticate = db.authenticate(prop.getProperty("login"), prop.getProperty("password").toCharArray());

        // Выбираем коллекцию/таблицу для дальнейшей работы
        table = db.getCollection(prop.getProperty("table"));
    } catch (UnknownHostException e) {
        // Если возникли проблемы при подключении сообщаем об этом
        System.err.println("Don't connect!");
    }
}

Properties prop – это параметры которые будут передаваться при создании new WorkWithMongo(props); это мы рассмотрим чуть позже.

Шаг 3 – Создадим сущность

Создадим сущность и назовем её User.java:

public class User {

    private String id;
    private String login;

    public User(String login) {
        this.login = login;
    }

    public User() {
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    @Override
    public String toString() {
        return "User{" +
                "id='" + id + '\'' +
                ", login='" + login + '\'' +
                '}';
    }
}

Шаг 4 – Записать в MongoDB

Для того чтобы добавить запись в коллекцию нам нужно создать метод add(User user) в классе WorkWithMongo:

public void add(User user){
    BasicDBObject document = new BasicDBObject();

    // указываем поле с объекта User
    // это поле будет записываться в коллекцию/таблицу
    document.put("login", user.getLogin());

    // записываем данные в коллекцию/таблицу
    table.insert(document);
}

Шаг 5 – Получение записи с коллекции

public User getByLogin(String login){
    BasicDBObject query = new BasicDBObject();
    
    // задаем поле и значение поля по которому будем искать
    query.put("login", login);

    // осуществляем поиск
    DBObject result = table.findOne(query);
   
    // Заполняем сущность полученными данными с коллекции
    User user = new User();
    user.setLogin(String.valueOf(result.get("login")));
    user.setId(String.valueOf(result.get("_id")));
 
    // возвращаем полученного пользователя
    return user;
}

Получать мы будем по логину пользователя.

Шаг 6 – Обновление данных

// login - это старый логин пользователя
// newLogin - это новый логин который мы хотим задать
public void updateByLogin(String login, String newLogin){
    BasicDBObject newData = new BasicDBObject();

    // задаем новый логин
    newData.put("login", newLogin);

    // указываем обновляемое поле и текущее его значение
    BasicDBObject searchQuery = new BasicDBObject().append("login", login);

    // обновляем запись
    table.update(searchQuery, newData);
}

В данном примере мы обновляем только login, но можно обновлять любые поля коллекции таким способом.

Шаг 7 – Удаление данных

Удалять мы также будем по логину пользователя:

public void deleteByLogin(String login){
    BasicDBObject query = new BasicDBObject();

    // указываем какую запись будем удалять с коллекции 
    // задав поле и его текущее значение
    query.put("login", login);

    // удаляем запись с коллекции/таблицы
    table.remove(query);
}

Шаг 8

Теперь проверим все это дело с помощью тестов.

Для тестирования я использовал Framework TestNG информацию о нем вы можете почитать в уроке ‘Тестирование с помощью TestNG в Java‘.

Сразу покажу вам полный листинг тестового файла который называется WorkWithMongoTest.java:

import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import java.util.Properties;

public class WorkWithMongoTest {

    WorkWithMongo mongo;

    @BeforeMethod
    public void setUp() throws Exception {
        Properties prop = new Properties();
        prop.setProperty("host", "localhost");
        prop.setProperty("port", "27017");
        prop.setProperty("dbname", "admin");
        prop.setProperty("login", "root");
        prop.setProperty("password", "root");
        prop.setProperty("table", "users");

        mongo = new WorkWithMongo(prop);
    }

    @AfterMethod
    public void tearDown() throws Exception {
        mongo.close();
    }

    @Test
    public void testConnection() throws Exception {
        boolean authenticate = mongo.isAuthenticate();
        Assert.assertEquals(true, authenticate);
    }

    @Test
    public void testAddUser() throws Exception {
        mongo.add(new User("test"));
    }

    @Test
    public void testGet() throws Exception {
        User user = mongo.getByLogin("test");
        System.out.println(user);
    }

    @Test
    public void testDelete() throws Exception {
        mongo.deleteByLogin("test");
    }

    @Test
    public void testUpdate() throws Exception {
        mongo.updateByLogin("test", "DevColibri");
    }

}

p.s. На этом все, задавайте вопросы в комментариях если что-то не понятно или предлагайте свои способы решение.

ПОХОЖИЕ ПУБЛИКАЦИИ

    None Found

60928
02/07/2013

7 комментариев к статье "Java MongoDB с чего начать?"

Добавить комментарий

Сайт использует cookie-файлы для того, чтобы вам было удобнее им пользоваться. Для продолжения работы с сайтом, вам необходимо принять использование cookie-файлов.

Я ознакомлен(а)