База данных

Связи
  • jandcode.core.dbm.mdb.Mdb (class)

Каждая модель имеет связанную с ней базу данных. Связанная база данных только одна.

Для работы с базой данных предназначен интерфейс jandcode.core.dbm.mdb.Mdb. Он содержит методы для работы с конкретным соединением с базой данных.

Пример:

// создаем экземпляр Mdb
Mdb mdb = getModel().createMdb()

// устанавливаем соединение
mdb.connect()
try {
    // выполняем запросы
    Store store = mdb.loadQuery("select * from tab1 where a>:param1", [param1: 100])
    mdb.execQuery("update tab1 set a=1 where id=:id", [id: 100])

} finally {
    // разрываем соединение
    mdb.disconnect()
}

Классы-утилиты для базы данных

Классы-утилиты для базы данных являются обертками вокруг экземпляра jandcode.core.dbm.mdb.Mdb и предназначены для реализации конкретных запросов к базе данных.

Пример:

import jandcode.core.dbm.mdb.*
import jandcode.core.store.*

class MdbUtils1 extends BaseMdbUtils {

    MdbUtils1(Mdb mdb) {
        super(mdb)
    }

    Store load1(int param1) {
        return mdb.loadQuery("select * from tab1 where a>:param1", [param1: param1])
    }

}

Особенность таких классов:

  • они должны принимать в конструкторе экземпляр jandcode.core.dbm.mdb.Mdb и сохранить его во внутренней структуре
  • экземпляр mdb передается с уже установленным и настроенным соединением, т.е. не нужно вызывать методы connect, disconnect. За соединение отвечает кто-то вне этих классов
  • классы-утилиты легкие и одноразовые: создали, попользовались, забыли. Их экземляры нельзя где-то хранить