RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Глава 4. MySQL NDB Cluster Connector for Java

В этой главе рассматриваются использование NDB Cluster с MySQL NDB Cluster Connector for Java, также известном как ClusterJ.

ClusterJ это API высокого уровня, который подобен в стиле и понятиях структурам вроде Hibernate и JPA. Поскольку ClusterJ не использует MySQL Server, чтобы получить доступ к данным в кластере NDB, это может выполнить некоторые операции намного более быстро, чем можно сделать, используя JDBC. ClusterJ поддерживает первичный ключ и операции по уникальному ключу, это не поддерживает операции мультитаблиц, включая соединения.

4.1. MySQL NDB Cluster Connector for Java: обзор

Эта секция предоставляет концептуальный обзор архитектуры API для использования MySQL NDB Cluster Connector for Java.

4.1.1 MySQL NDB Cluster Connector for Java Architecture

MySQL NDB Cluster Connector for Java, он же ClusterJ, это Java API для написания приложений для NDB Cluster. Это один среди различных путей доступа и стилей доступа к данным в NDB Cluster. раздел 4.1.2 описывает каждый API более подробно.

MySQL NDB Cluster Connector for Java включен во все исходные тексты и двоичные пакеты NDB Cluster. Сборка MySQL NDB Cluster Connector for Java из исходных текстов может быть сделана как часть сборки NDB Cluster, однако, это может также быть построено с Maven.

4.1.2. Java и NDB Cluster

NDB Cluster определяется как один или несколько MySQL Server, обеспечивающих доступ к механизму хранения NDBCLUSTER то есть, к ряду узлов данных NDB Cluster (процесс ndbd). Есть три главных пути доступа из Java к NDBCLUSTER:

  • JDBC и mysqld. JDBC работает, посылая SQL-операторы в MySQL Server и возвращая наборы результатов. Используя JDBC, необходимо написать SQL, справиться со связью и скопировать любые данные из набора результатов, которые вы хотите использовать в вашей программе в качестве объектов. Внедрение JDBC, чаще всего используемое с MySQL Server, это MySQL Connector/J.

  • Java Persistence API (JPA) и JDBC. JPA использует JDBC, чтобы соединиться с MySQL Server. В отличие от JDBC, JPA обеспечивает представление объекта данных в базе данных.

  • ClusterJ. ClusterJ использует мост JNI NDB API для прямого доступа к NDBCLUSTER. Это использует стиль доступа к данным, который основан на модели объекта области, подобной во многих отношениях используемому JPA. ClusterJ не зависит от MySQL Server для доступа к данным.

Эти пути показывают в следующей диаграмме стека API:

Рис. 4.1. Пути доступа Java к NDB

Java access paths to NDB

JDBC и mysqld. Connector/J обеспечивает стандартный доступ через драйвер MySQL JDBC. Используя Connector/J, приложения JDBC могут быть написаны, чтобы работать с сервером MySQL, действующим как узел SQL кластера NDB, почти таким же способом, как другие приложения Connector/J работают с любым другим случаем MySQL Server.

См. раздел 4.2.3.

ClusterJ. ClusterJ это обычный Java Connector для NDBCLUSTER (или NDB), механизма хранения для NDB Cluster, в стиле Hibernate, JPA и JDO. Как другие структуры, ClusterJ использует Data Mapper pattern, в котором данные представляются как объекты области, отдельные от бизнес-логики, отображая классы Java к таблицам базы данных, сохраненным в NDBCLUSTER.

NDBCLUSTER часто упоминается (в документации MySQL и в других местах) просто как as NDB. Термины NDB и NDBCLUSTER синонимичны и можно использовать также ENGINE=NDB или ENGINE=NDBCLUSTER в запросе CREATE TABLE.

ClusterJ не должен соединяться с процессом mysqld, имея прямой доступ к NDBCLUSTER с использованием моста JNI, который включен в динамическую библиотеку libnbdclient. Однако в отличие от JDBC, ClusterJ не поддерживает создание таблицы и другие операции по определению данных, они должны быть выполнены некоторыми другими средствами, такими как JDBC или клиент mysql. Кроме того, ClusterJ ограничивается запросами на единственной таблице и не поддерживает отношения или наследование, необходимо использовать другой вид путей доступа, если вы нуждаетесь в поддержке для тех особенностей в ваших запросах.

4.1.3. ClusterJ API и Data Object Model

Эта секция обсуждает ClusterJ API и объектную модель представления данных, обработанных приложением.

Application Programming Interface. ClusterJ API зависит от 4 главных интерфейсов: Session, SessionFactory, Transaction и QueryBuilder.

Иентрфейс Session. Весь доступ к данным в кластере NDB сделан в контексте сессии. Иентрфейс Session представляет отдельную связь пользователя с NDB Cluster. Это содержит методы для следующих операций:

  • Нахождение постоянных экземпляров первичным ключом.

  • Создание, обновление и удаление постоянных экземпляров.

  • Получение конструктора запросов (см. com.mysql.clusterj.query.QueryBuilder).

  • Получение текущей транзакции (см. com.mysql.clusterj.Transaction).

Интерфейс SessionFactory. Сессии получены из SessionFactory, где, как правило, есть единственный экземпляр для каждого NDB Cluster, где вы хотите получить доступ из Java VM. SessionFactory хранит конфигурационную информацию о кластере, такую как имя хоста и номер порта сервера управления кластером NDB. Это также хранит параметры относительно того, как соединиться с кластером, включая задержки связи. Для получения дополнительной информации о SessionFactory и его использовании в ClusterJ см. здесь.

Интерфейс Transaction. Транзакциями не управляет интерфейс Session, как другие современные среды разработки приложения, ClusterJ отделяет управление транзакциями от других методов. Операционное установление границ могло бы быть сделано автоматически контейнером или в фильтре сервлета веб-сервера. Удаление операционных методов завершения из Session облегчает это разделение проблем.

Интерфейс Transaction поддерживает стандартные начало, передачу и отмену, требуемые транзакционной базой данных. Кроме того, это позволяет пользователю отметить транзакцию, как "для обратной перемотки", что позволяет компоненту, который не ответственен за завершение транзакции, указать, что из-за приложения или ошибки базы данных транзакцию нельзя заканчивать как обычно.

Интерфейс QueryBuilder. Интерфейс QueryBuilder позволяет построить запросы критериев динамично, используя свойства модели объекта области в качестве элементов моделирования запроса. Сравнения между параметрами и значениями столбцов базы данных могут быть определены в операциях и отношениях. Эти сравнения могут быть объединены, используя методы, соответствующие булевым операторам AND, OR и NOT. Сравнение с NULL также поддерживается.

Модель данных. ClusterJ обеспечивает доступ к данным в кластере NDB, используя объекты области, подобные во многих отношениях модели данных JPA.

В ClusterJ у отображения объекта области есть следующие особенности:

  • Все таблицы отображают к постоянным интерфейсам. Для каждой таблицы NDB в кластере ClusterJ использует один или несколько интерфейсов. Во многих случаях единственный интерфейс используется, но для случаев, где различные колонки необходимы различным частям приложения, многократные интерфейсы могут быть отображены к той же самой таблице.

    Однако сами классы не постоянные.

  • Пользователи отображают подмножество колонок к постоянным свойствам в интерфейсах. Таким образом все свойства отображаются к колонкам, однако, не все колонки обязательно отображают к свойствам.

    Все имена свойств ClusterJ по умолчанию имена столбцов. Интерфейс обеспечивает методы получателя и методы установщика для каждого значения с предсказуемыми соответствующими именами методов.

  • Аннотации на интерфейсы определяют отображения.

Пользовательская точка зрения на среду приложения и объекты области иллюстрирована в следующей диаграмме, которая показывает логические отношения среди элементов моделирования интерфейсов ClusterJ:

Рис. 4.2. Пользовательская точка зрения ClusterJ на приложение и окружающую среду

ClusterJ user view of application and environment

SessionFactory формируется объектом, который, возможно, был загружен из файла или построен динамично приложением, используя некоторые другие средства (см. раздел 4.2.2.1).

Приложение получает экземпляры Session из SessionFactory с самое большее одним потоком, работающим с Session за один раз. Поток может управлять многими экземплярами Session, если есть требование многократных связей с базой данных.

У каждой сессии есть своя собственная коллекция объектов области, каждый из которых представляет данные из одной строки в базе данных. Объекты области могут представлять данные в любом из следующих статусов:

  • Новая, еще не сохранена в базе данных.

  • Получена из от базы данных, доступна приложению.

  • Обновлена, сохранена назад в базу данных.

  • Удалена из базы данных.

4.2. Использование MySQL NDB Cluster Connector for Java

Эта секция предоставляет основную информацию о сборке и управлении JAVA-приложениями, используя MySQL NDB Cluster Connector for Java (ClusterJ).

4.2.1. Получение, установка и настройка MySQL NDB Cluster Connector for Java

Эта секция обсуждает, как получить ClusterJ.

Получение и установка MySQL NDB Cluster Connector for Java. Можно получить новый выпуск NDB Cluster, который включает ClusterJ, с downloads.mysql.com. Инструкции по установке, данные в NDB Cluster Installation также устанавливают ClusterJ.

Сборка и установка MySQL NDB Cluster Connector for Java. Можно собрать и установить ClusterJ как часть сборки NDB Cluster, которая всегда требует, чтобы вы настроили сборку, используя опции CMake WITH_NDBCLUSTER_STORAGE_ENGINE (или псевдоним WITH_NDBCLUSTER).

Типичная команда CMake для формирования NDB Cluster с поддержкой ClusterJ:

cmake .. -DWITH_BOOST=/usr/local/boost_1_59_0 -DWITH_NDBCLUSTER=ON

Опция WITH_NDB_JAVA позволена по умолчанию, что означает, что ClusterJ будет построен вместе с кластером NDB вышеупомянутой командой. Однако, если CMake не может найти местоположение Java на вашей системе, процесс конфигурации собирается потерпеть неудачу, используйте опцию WITH_CLASSPATH, чтобы обеспечить путь к классу Java в случае необходимости. Кроме того, потому что ClusterJ использует набор символов ucs2 для внутренней памяти и ClusterJ не может быть построен без него, если вы когда-нибудь используете опцию CMake WITH_EXTRA_CHARSETS и измените значение от настройки по умолчанию all, необходимо удостовериться, что ucs2 определяется в списке наборов символов, переданном опции. Для получения информации о других опциях CMake, которые могут использоваться, см. option_cmake_with_ndbcluster.

После формирования сборки с CMake выполните make и make install как вы обычно сделали бы, чтобы собрать и установить программное обеспечение NDB Cluster.

Файлы jar MySQL NDB Cluster Connector for Java. После установки эти файлы jar ClusterJ могут быть найдены в папке share/java в каталоге установки MySQL (/usr/local/mysql по умолчанию для Linux):

  • clusterj-api- version.jar: Это файл времени компиляции, требуемый для компилирования кода приложения ClusterJ.

  • clusterj- version.jar: Это библиотека времени выполнения, требуемая для выполнения приложений ClusterJ.

  • clusterj-test- version.jar: Это набор тестов ClusterJ, требуемый для тестирования вашей установки ClusterJ.

Сборка ClusterJ с Maven

Исходные файлы для ClusterJ формируются как проекты Maven, позволяя легкую компиляцию и установку, используя Maven. Предположим, что вы уже собрали и поставили NDB Cluster и ClusterJ, согласно инструкциям выше. Тогда надо:

  1. Добавьте путь к файлу для папки, которая содержит библиотеку клиента NDB (libndbclient.so) как свойство ndbclient.lib к вашему местному файлу Maven settings.xml (находится в местном хранилище Maven, которое обычно является /home/username/.m2 в Linux). Библиотека клиента должна быть найдена в каталоге lib каталога установки NDB Cluster. Если файла settings.xml не существует в вашем местном хранилище Maven, создайте его. Это простой файл settings.xml, содержащий свойство ndbclient.lib:

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
       http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <profiles>
        <profile>
          <id>jni-library</id>
          <activation>
            <activeByDefault>true</activeByDefault>
          </activation>
          <properties>
            <ndbclient.lib>/NDB_Cluster_installation_directory/lib/</ndbclient.lib>
          </properties>
        </profile>
      </profiles>
    </settings>
    
  2. Пойдите в каталог сборки, который вы создали, собирая кластер NDB (bld в образце здесь) и затем в подкаталог storage/ndb/clusterj в нем. Выполните скрипт mvn_install_ndbjtie.sh:

    ./mvn_install_ndbjtie.sh
    

    Это устанавливает ndbjtie.jar, который предоставляет слой JNI ClusterJ и требуется для сборки CluterJ.

  3. Установите ClusterJ с Maven выполнением mvn install в каталоге storage/ndb/clusterj:

    mvn install
    

    Это заставляет ClusterJ быть построенным с файлами .jar, установленными в местном хранилище Maven.

    Можно пропустить тесты, которые происходят в конце процесса установки, добавляя опцию skipTests:

    mvn install -DskipTests
    

    Это препятствует тому, чтобы ваша установка терпела неудачу, потому что вы еще не настроили тестовую среду.

Сборка ClusterJ с Maven в IDE

Поскольку исходные файлы для ClusterJ формируются как проекты Maven, можно легко импортировать их в любимые позволенные Maven IDE, настроить их и восстановить их по мере необходимости, выполнив эти шаги:

  1. Удостоверьтесь, что ваша поддержка IDE для Maven включена. Вы, возможно, должны были бы установить плагин Maven для цели.

  2. Следуйте за шагами 1 и 2 здесь, которые делают источник ClusterJ готовым использоваться с Maven.

  3. Импортируйте ClusterJ как проект Maven.

    В NetBeans:

    • В главном меню выберите File > Open Project. Диалоговое окно Open Project появляется.

    • В окне Open Project перейдите к папке storage/ndb под каталогом сборки (см. шаг 2 здесь), выберите каталог clusterj, который имеет символ Maven (Maven icon) и нажмите Open Project. Проект ClusterJ Aggregate импортируется с ClusterJ API, ClusterJ Core, ClusterJ Test Suite, ClusterJ Tie и ClusterJ Unit Test Framework как подпроекты в Modules.

    • Работайте с проектами ClusterJ как с любыми другими проектами Maven в NetBeans. Любые изменения исходного кода входят в исходное дерево, из которого вы собрали кластер NDB, чтобы создать каталог сборки.

    В Eclipse:

    • В главном меню выберите File > Import. Откроется окно Import.

    • В окне Import выберите Maven > Existing Maven Projects для импорта и нажмите Next. Появится окно Import Maven Projects.

    • В окне Import Maven Projects перейдите в каталог storage/ndb под каталогом сборки (шаг 2 здесь), выберите каталог clusterj и нажмите Select Folder. Проект clusterj-aggregate, а также его подпроекты its subprojects clusterj-api, clusterj-core, clusterj-test, clusterj-tie и clusterj-unit появятся в диалоговом окне Maven Projects. Нажмите Select All и Finish. Все проекты ClusterJ импортируются.

    • Работайте с проектами ClusterJ как с любыми другими проектами Maven в Eclipse.

4.2.2. Применение ClusterJ

Эта секция предоставляет основную информацию для написания, компилирования и выполнения приложений с ClusterJ. Для документации API ClusterJ см. раздел 4.3.

Требования. ClusterJ требует Java 1.7 или 1.8. NDB Cluster должен быть собран с поддержкой ClusterJ ; модули NDB Cluster, поставляемые Oracle, включают поддержку ClusterJ. Если вы строите кластер NDB сами, см. здесь для получения информации о настройке, чтобы позволить поддержку ClusterJ.

Чтобы собрать приложения, которые используют ClusterJ, вы должны иметь файл clusterj-api jar в вашем classpath или использовать менеджер по зависимости Maven, чтобы установить и формировать библиотеку ClusterJ в вашем проекте.

Чтобы запустить приложения, которые используют ClusterJ, вам нужен файл jar clusterj, кроме того, libndbclient должен быть в каталоге, определенном by java.library.path. Раздел 4.2.2.1 предоставляет больше информации об этих требованиях.

4.2.2.1. Выполнение приложений ClusterJ и сессий

В этой секции мы обсуждаем, как запустить приложения ClusterJ и среду приложения ClusterJ.

Выполнение приложения ClusterJ. Все файлы ClusterJ jar обычно находятся в share/mysql/java/ в каталоге установки MySQL. Выполняя приложение ClusterJ, необходимо установить classpath на эти файлы. Кроме того, необходимо установить переменную java.library.path, чтобы указать на каталог, содержащий библиотеку ndbclient, обычно это lib/mysql в каталоге установки MySQL. Таким образом вы могли бы выполнить программу ClusterJ MyClusterJApp способом, подобным тому, что показан здесь:

shell> java -classpath /usr/local/mysql/share/mysql/java/clusterj.jar \
               -Djava.library.path=/usr/local/mysql/lib MyClusterJApp

Точные местоположения файлов ClusterJ jar и libndbclient зависят от того, как программное обеспечение NDB Cluster было установлено. Посмотрите Installation Layouts.

ClusterJ поощряет вас использовать различные файлы jar во время компиляции и во время выполнения. Это должно удалить способность запросов получить доступ к экспонатам внедрения экземплярно. ClusterJ предназначается, чтобы быть независимым от версии программного обеспечения NDB Cluster, тогда как слой ndbclient определен для версии. Это позволяет поддержать стабильный API, так, чтобы запросы, написанные для него, используя данную версию NDB, продолжили работать после модернизации кластера к новой версии.

Получение SessionFactory и Session. SessionFactory это источник всех сессий ClusterJ, которые используют данный NDB Cluster. Обычно есть только одна SessionFactory на NDB Cluster на Java Virtual Machine.

SessionFactory может формироваться, устанавливая одно или более свойств. Предпочтительный способ сделать это, поместить их в файл:

com.mysql.clusterj.connectstring=localhost:1186
com.mysql.clusterj.database=mydb

Название файла произвольно, однако, в соответствии с соглашением, такие файлы называют с расширением .properties. Для приложений ClusterJ обычно файл называют clusterj.properties.

После редактирования и сохранения файл, можно загрузить его содержание в экземпляр Properties:

File propsFile = new File("clusterj.properties");
InputStream inStream = new FileInputStream(propsFile);
Properties props = new Properties();
props.load(inStream);

Также возможно установить эти свойства непосредственно без использования файла:

Properties props = new Properties();
props.put("com.mysql.clusterj.connectstring", "localhost:1186");
props.put("com.mysql.clusterj.database", "mydb");

Как только свойства были установлены и загружены (используя любой из методов), можно получить SessionFactory и затем от этого экземпляр Session . Для этого вы используете метод SessionFactory getSession():

SessionFactory factory = ClusterJHelper.getSessionFactory(props);
Session session = factory.getSession();

Обычно достаточно установить и загрузить свойства com.mysql.clusterj.connectstring и com.mysql.clusterj.database (и эти свойства, наряду с com.mysql.clusterj.max.transactions, не могут быть изменены после старта SessionFactory). Для полного списка доступных свойств SessionFactory и значений см. com.mysql.clusterj.Constants.

Экземпляры Session не должны быть разделены среди потоков. Каждый поток в вашем запросе должен использовать свой собственный экземпляр Session .

Для com.mysql.clusterj.connectstring мы используем по умолчанию строку подключения NDB Cluster localhost:1186 (см. NDB Cluster Connection Strings). Для значения com.mysql.clusterj.database мы используем mydb в этом примере, но это значение может быть названием любой базы данных, содержащей таблицы NDB. Для листинга всех свойств SessionFactory, которые могут быть установлены этим способом, см. com.mysql.clusterj.Constants.

Обработка ошибок и повторное соединение. Ошибки, которые происходят, используя ClusterJ, должны быть обработаны приложением с обработчиком ошибки. Он должен быть в состоянии обнаружить и различать три типа ошибок и обращаться с ними соответственно:

  • Normal errors: Это ошибки на уровне приложения (например, двойной ключ, ограничение внешнего ключа или тайм-аут). Они должны быть обработаны специализированными способами, и, если решено, приложение может продолжить транзакцию.

  • Unexpected errors: Это отказы работать с кластером, которые не могут составляться условиями приложения, но неокончательны. Приложение должно закрыть сессию ClusterJ и вновь открыть новую.

  • Connectivity errors: Это такие ошибки как 4009 и 4010, которые указывают на сетевой сбой. Есть два возможных сценария, в зависимости от того, была ли автоматическая опция повторного соединения (доступно для NDB Cluster 7.5.7, 7.6.3 и для более поздних выпусков в сериях 7.5 и 7.6) включена:

    • Automatic reconnection is enabled: опция активирована, когда свойство связи com.mysql.clusterj.connection.reconnect.timeout было установлено в положительное число, которое определяет тайм-аут повторного соединения в секундах.

      Когда ClusterJ обнаруживает разъединение с кластером NDB, он изменяет State в SessionFactory с OPEN на RECONNECTING, SessionFactory тогда ждет от приложения закрытия всех сессий, а затем пытается повторно подключить приложение к кластеру NDB, закрывая все связи в пуле связи и воссоздавая пул, используя его оригинальные свойства. После восстановления всех связей, State в SessionFactory снова OPEN и приложение может теперь получить сессии.

      Метод SessionFactory.getState() вернет State из SessionFactory, который OPEN, RECONNECTING или CLOSED. Попытка получить сессию, когда State не OPEN приведет к ClusterJUserException с сообщением Session factory is not open.

      Если приложение не закрывает все сессии к концу периода тайм-аута, определенного com.mysql.clusterj.connection.reconnect.timeout, SessionFactory завершает любые открытые сессии насильственно (что могло бы привести к потере ресурсов), затем делает попытку повторного соединения.

    • Автоматическое повторное соединение не позволено: Это когда свойство связи com.mysql.clusterj.connection.reconnect.timeout не было установлено или установлено в ноль (это также имеет место для более старых выпусков NDB Cluster, которые не поддерживают автоматическую функцию повторного соединения).

      ClusterJ не пытается снова соединиться с кластером NDB, как только связь потеряна. Приложение должно закрыть все сессии и затем перезапустить SessionFactory. Рестарт SessionFactory может быть автоматической функцией или ручным вмешательством. В любом случае код должен ждать, пока все сессии не были закрыты (то есть, метод getConnectionPoolSessionCounts() в интерфейсе SessionFactory вернет нули для всех объединенных связей). Тогда SessionFactory может быть закрыт и вновь открыт, и приложение сможет получить сессии снова.

    Вместо того, чтобы активировать опцию и ждать ClusterJ, чтобы обнаружить разъединение и делать попытку повторного соединения, у вас это может также сделать само приложение, начиная процесс повторного соединения после обнаружения ошибки связи, вызывая метод SessionFactory.reconnect(int timeout), это вызывает процесс повторного соединения, описанный выше, но использует параметр timeout метода reconnect() как ограничение по времени для того, чтобы закрыть все открытые сессии.

Журналирование. ClusterJ использует Java logging. Вот некоторые настройки по умолчанию для регистрации ClusterJ, которые определяются в файле logging.properties и могут быть изменены там:

  • Регистрация уровня установлена в INFO для всех классов.

  • Используется обработчик java.util.logging.FileHandler.

  • Уровень по умолчанию для java.util.logging.FileHandler = FINEST

  • Используется java.util.logging.SimpleFormatter для обработчика.

  • Файлы журнала хранятся в каталоге target в соответствии с текущим рабочим каталогом и имена файлов находятся, обычно, в образце logNum, где Num это уникальное число для решения конфликтов имени файла (см. документацию Java на java.util.logging.FileHandler).

Файл logging.properties расположен по умолчанию в текущем рабочем каталоге, но местоположение может быть изменено, определив системное свойство java.util.logging.config.file, когда вы запускаете Java.

4.2.2.2. Создание таблиц

Главная цель ClusterJ состоит в том, чтобы читать, писать и обновлять данные о строке в существующей базе данных, вместо того, чтобы выполнять DDL. Можно создать таблицу employee, которая соответствует этому интерфейсу, используя следующий CREATE TABLE, в клиентском приложении MySQL, таком как mysql.

CREATE TABLE employee (id INT NOT NULL PRIMARY KEY,
                       first VARCHAR(64) DEFAULT NULL,
                       last VARCHAR(64) DEFAULT NULL,
                       municipality VARCHAR(64) DEFAULT NULL,
                       started DATE DEFAULT NULL,
                       ended DATE DEFAULT NULL,
                       department INT NOT NULL DEFAULT 1,
                       UNIQUE KEY idx_u_hash (last,first USING HASH),
                       KEY idx_municipality (municipality)) ENGINE=NDBCLUSTER;

Теперь, когда таблица была составлена в кластере NDB, можно отобразить интерфейс ClusterJ к ней, используя аннотации. Мы показываем вам, как сделать это в следующей секции.

4.2.2.3. Аннотации

В ClusterJ (как в JPA) аннотации используются, чтобы описать, как интерфейс отображен к таблицам в базе данных. Аннотируемый интерфейс похож на это:

@PersistenceCapable(table="employee")
@Index(name="idx_uhash")
public interface Employee {
  @PrimaryKey
  int getId();
  void setId(int id);
  String getFirst();
  void setFirst(String first);
  String getLast();
  void setLast(String last);
  @Column(name="municipality")
  @Index(name="idx_municipality")
  String getCity();
  void setCity(String city);
  Date getStarted();
  void setStarted(Date date);
  Date getEnded();
  void setEnded(Date date);
  Integer getDepartment();
  void setDepartment(Integer department);
}

Этот интерфейс отображает семь столбцов: id, first, last, municipality, started, ended и department. Аннотация @PersistenceCapable(table="employee") используется, чтобы позволить ClusterJ знать, которую таблицу базы данных Employee отобразить (в этом случае таблицу employee). Аннотация @Column используется потому, что имя свойства city, подразумеваемое методами getCity() и setCity(), отличается от отображенного имени столбца municipality. Аннотации @PrimaryKey и @Index сообщают ClusterJ об индексах в таблице базы данных.

Внедрение этого интерфейса создается динамично ClusterJ во время выполнения. Когда вызван метод newInstance(), ClusterJ создает класс реализации для интерфейса Employee, этот класс хранит значения во внутреннем множестве объекта.

ClusterJ не требует аннотации для каждого признака. ClusterJ автоматически обнаруживает первичные ключи таблиц, в то время как есть аннотация в ClusterJ, чтобы разрешить пользователю описывать первичные ключи таблицы (см. предыдущий пример), когда определено, это в настоящее время игнорируется. Надлежащее использование этой аннотации для генерации схем от интерфейсов модели объекта области, но это еще не поддерживается.

Сами аннотации должны быть импортированы из ClusterJ API. Они могут быть найдены в пакете com.mysql.clusterj.annotation и импортированы примерно так:

import com.mysql.clusterj.annotation.Column;
import com.mysql.clusterj.annotation.Index;
import com.mysql.clusterj.annotation.PersistenceCapable;
import com.mysql.clusterj.annotation.PrimaryKey;

4.2.2.4. Основные операции ClusterJ

В этой секции мы описываем, как выполнить операции, основные для приложений ClusterJ, включая следующие:

  • Создание новых экземпляров, урегулирование их свойств и сохранение их в базе данных.

  • Выполнение поисков первичного ключа.

  • Обновление существующих строк и сохранение изменений базы данных.

  • Удаление строк из базы данных.

  • Построение и выполнение запросов, чтобы принести набор строк, соответствующих определенным критериям от базы данных.

Создание новых строк. Чтобы вставить новую строку в таблицу, сначала создайте новый экземпляр Employee. Это может быть достигнуто, вызывая метод Session newInstance():

Employee newEmployee = session.newInstance(Employee.class);

Установите свойства экземпляра Employee соответствующие желаемым столбцам таблицы employee. Например, следующее задаст свойства id, firstName, lastName и started.

emp.setId(988);
newEmployee.setFirstName("John");
newEmployee.setLastName("Jones");
newEmployee.setStarted(new Date());

Как только вы удовлетворены изменениями, можно сохрангить экземпляр Employee, вставляя новую строку, содержащую требуемые значения, которые будут вставлены в таблицу employee:

session.persist(newEmployee);

Если autocommit=on и строка с тем же самым id уже есть в базе данных, метод persist() терпит неудачу. Если autocommit=off и строка с тем же самым id уже есть в базе данных, метод persist() достигает цели, но последующий commit() терпит неудачу.

Если вы хотите, чтобы данные были сохранены даже при том, что строка уже существует, используйте метод savePersistent() вместо persist(). Метод savePersistent() обновляет существующий экземпляр или создает новый экземпляр по мере необходимости, не бросая исключение.

Сначения, которые вы не определили, снабжены их значениями по умолчанию (0 для целочисленных типов, 0.0 для числовых типов и null для ссылочных типов).

Поиски первичного ключа. Можно найти существующую строку в таблице NDB, используя метод Session find():

Employee theEmployee = session.find(Employee.class, 988);

Это эквивалентно запросу на поиск первичного ключа SELECT * FROM employee WHERE id = 988.

ClusterJ также поддерживает составные первичные ключи. Метод find() может взять объектный массив в качестве ключа, где компоненты массива используются, чтобы представлять столбцы первичного ключа в том порядке, в каком они были объявлены. Кроме того, запросы оптимизированы, чтобы обнаружить, определяются ли столбцы первичного ключа как часть условий запроса, и если это так, поиск первичного ключа или просмотр выполняются как стратегия осуществления запроса.

ClusterJ также поддерживает btree и уникальные hash-индексы. Как с первичными ключами, если запрос определяет значения для областей упорядоченного или уникального индекса, ClusterJ оптимизирует запрос, чтобы использовать индекс для просмотра таблицы.

NDB Cluster автоматически размазывает данные таблицы на многократные узлы данных. Для некоторых операций более эффективно сказать кластеру, на котором узле данных физически расположены данные и выполнять транзакцию на том узле данных. ClusterJ автоматически обнаруживает ключ разделения, если операция может быть оптимизирована для определенного узла данных, ClusterJ автоматически начинает транзакцию на том узле.

Обновите и сохраните строку. Чтобы обновить значение данного столбца в строке, которую мы просто получили как theEmployee, используйте метод set*(), имя которого соответствует названию того столбца. Например, чтобы обновить дату started для Employee, используйте метод Employee setStarted():

theEmployee.setStarted(new Date(getMillisFor(2010, 01, 04)));

Для удобства мы используем в этом примере метод getMillisFor(), который определяется как показано здесь в файле AbstractClusterJModelTest.java (лежит в каталоге storage/ndb/clusterj/clusterj-test/src/main/java/testsuite/clusterj исходного дерева NDB Cluster):

/** Convert year, month, day into milliseconds after the Epoch, UTC.
* Set hours, minutes, seconds, and milliseconds to zero.
* @param year the year
* @param month the month (0 for January)
* @param day the day of the month
* @return
*/

protected static long getMillisFor(int year, int month, int day) {
  Calendar calendar = Calendar.getInstance();
  calendar.clear();
  calendar.set(Calendar.YEAR, year);
  calendar.set(Calendar.MONTH, month);
  calendar.set(Calendar.DATE, day);
  calendar.set(Calendar.HOUR, 0);
  calendar.set(Calendar.MINUTE, 0);
  calendar.set(Calendar.SECOND, 0);
  calendar.set(Calendar.MILLISECOND, 0);
  long result = calendar.getTimeInMillis();
  return result;
}

Посмотрите обозначенный файл для получения дополнительной информации.

Можно обновить дополнительные столбцы, призвав другие методы установщики Employee:

theEmployee.setDepartment(3);

Чтобы сохранить измененную строку назад в базу данных NDB Cluster, используйте метод Session updatePersistent():

session.updatePersistent(theEmployee);

Удаление строк. Можно удалить единственную строку, используя метод deletePersistent() из Session. В этом примере мы находим сотрудника, ID которого равняется 13, затем удаляем эту строку из таблицы employee:

Employee exEmployee = session.find(Employee.class, 13);
session.deletePersistent(exEmployee);'
System.out.println("Deleted employee named " + exEmployee.getFirst()
                   + " " + exEmployee.getLast() + ".");

Там также существует метод для удаления многократных строк, который предоставляет две возможности:

  1. Удалите все строки из таблицы.

  2. Удалите произвольную коллекцию строк.

Оба вида многострочных удалений могут быть выполнены, используя метод deletePersistentAll(). Первый вариант этого метода действует на Class. Например, следующий запрос удаляет все строки из таблицы employee и вернет количество удаленных строк, как показано здесь:

int numberDeleted = session.deletePersistentAll(Employee);
System.out.println("There used to be "+ numberDeleted +
                   " employees, but now there are none.");

Вызов deletePersistentAll() эквивалентно SQL-оператору DELETE FROM employee в клиенте mysql.

deletePersistentAll() может также использоваться, чтобы удалить коллекцию строк, как показано в этом примере:

// Assemble the collection of rows to be deleted...
List<Employee> redundancies = new ArrayList<Employee> ();
for (int i = 1000; i < 2000; i += 100) {
  Employee redundant = session.newInstance(Employee.class);
  redundant.setId(i);
  redundancies.add(redundant);
}
numberDeleted = session.deletePersistentAll(redundancies);
System.out.println("Deleted " + numberDeleted + " rows.");

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

Написание запросов. Интерфейс ClusterJ QueryBuilder используется, чтобы создавать запросы. Процесс начинается с получения экземпляра QueryBuilder, который поставляется текущим Session, мы можем тогда получить QueryDefinition:

QueryBuilder builder = session.getQueryBuilder();
QueryDomainType<Employee> domain = builder.createQueryDefinition(Employee.class);

Это используется, чтобы установить столбец для сравнения запросом. Здесь мы показываем, как подготовить запрос, который сравнивает значение столбца department с постоянной величиной 8.

domain.where(domain.get("department").equal(domain.param("department"));
Query<Employee> query = session.createQuery(domain);
query.setParameter("department", 8);

Чтобы получить следствия запроса, вызовите метод Query getResultList();

List<Employee> results = query.getResultList();

Возвращаемое значение это List, который можно повторить, чтобы восстановить и обработать строки обычным способом.

Транзакции. Интерфейс Transaction может произвольно использоваться для связанных транзакций с помощью следующих методов:

  • begin(): Начните транзакцию.

  • commit(): Передайте транзакцию.

  • rollback(): Отмените транзакцию.

Также возможно использование Transaction чтобы проверять, активна ли транзакция (через метод isActive()), работа с флагом rollback-only (через методы getRollbackOnly() и setRollbackOnly()).

Если вы не используете интерфейс Transaction, методы в Session, влияющие на базу данных (например, persist(), deletePersistent(), updatePersistent()), автоматически приложены в транзакции базы данных.

4.2.2.5. Отображение типов данных между MySQL и Java

ClusterJ обеспечивает отображения для всех общих типов БД MySQL к типам Java. Объекты типов Java-примитивов должны быть отображены к nullable столбцам базы данных.

Так как у Явы нет родных unsigned типов данных, столбцов UNSIGNED нужно избежать в схемах таблицы, если это возможно.

Совместимость с отображениями JDBC. ClusterJ осуществляется, чтобы быть совместимым с драйвером JDBC с точки зрения отображения от типов Java до базы данных. Таким образом, если вы используете ClusterJ, чтобы сохранить или восстановить данные, вы получаете то же самую значение, как будто вы использовали драйвер JDBC непосредственно или через JPA.

Следующие таблицы показывают отображения, используемые ClusterJ между общими типами данных Java и типами столбца MySQL. Отдельные таблицы предусмотрены для числовых типов и для типов переменной ширины с плавающей запятой.

Числовые типы. Эта таблица показывает отображения типов в ClusterJ между Java и MySQL:

Таблица 4.1.

Тип данных Java Тип данных MySQL
boolean, Boolean BIT(1)
byte, Byte BIT(1) to BIT(8), TINYINT
short, Short BIT(1) to BIT(16), SMALLINT, YEAR
int, Integer BIT(1) to BIT(32), INT
long, Long BIT(1) to BIT(64), BIGINT, BIGINT UNSIGNED
float, Float FLOAT
double, Double DOUBLE
java.math.BigDecimal NUMERIC, DECIMAL
java.math.BigInteger NUMERIC (precision = 0), DECIMAL (precision = 0)

Типы даты и времени. Следующая таблица показывает отображения типов данных даты и времени между Java и MySQL:

Таблица 4.2.

Тип данных Java Тип данных MySQL
Java.util.Date DATETIME, TIMESTAMP, TIME, DATE
Java.sql.Date DATE
Java.sql.Time TIME
Java.sql.Timestamp DATETIME, TIMESTAMP

ClusterJ отображает MySQL YEAR в Java-тип short (или java.lang.Short) как показано в первой таблице в этой секции.

java.util.Date представляет дату и время, подобно пути, которым Unix делает это, но с большей точностью и большим диапазоном. Где Unix представляет момент времени как 32-битное число со знаком секунд, начиная с Unix Epoch (01 January 1970), Java использует 64-битное число со знаком миллисекунд, начиная с Epoch.

Типы переменной ширины. Следующая таблица показывает отображения ClusterJ между типами Java и MySQL:

Таблица 4.3.

Тип данных Java Тип данных MySQL
String CHAR, VARCHAR, TEXT
byte[] BINARY, VARBINARY, BLOB

Никакие двоичные данные не отображаются при переходе от MySQL BINARY, VARBINARY или BLOB к байтовым массивам Java. Данные представлены приложению точно как это сохранено.

4.2.3. Применение Connector/J с NDB Cluster

Клиенты JDBC источника данных NDB Cluster, использующие Connector/J 5.0.6 (и выше), понимают jdbc:mysql:loadbalance:// URL (см. Configuration Properties for Connector/J), с которым можно использовать в своих интересах способность соедиениться с многократными серверами MySQL, чтобы достигнуть выравнивания нагрузки и отказоустойчивости.

Однако, в то время как Connector/J не зависит от библиотек клиента MySQL, он действительно требует связи с сервером MySQL, что не делает ClusterJ. JDBC также не обеспечивает отображений объекта для объектов базы данных, свойств, операций или любого способа сохранить объекты.

См. MySQL Connector/J 5.1 Developer Guide.

4.3. ClusterJ API

Следующие разделы содержат технические требования для пакетов ClusterJ, интерфейсов, классов и методов.

4.3.1. com.mysql.clusterj

Обеспечивает классы и интерфейсы для использования NDB Cluster непосредственно из Java.

  • Класс для самонастройки.

  • Интерфейсы для использования в прикладных программах.

  • Классы, чтобы определить исключения.

Этот пакет содержит три главных группы классов и интерфейсов.

4.3.1.1. Главные интерфейсы

ClusterJ обеспечивает эти главные интерфейсы для использования прикладными программами: com.mysql.clusterj.SessionFactory, com.mysql.clusterj.Session, com.mysql.clusterj.Transaction, com.mysql.clusterj.query.QueryBuilder и com.mysql.clusterj.Query. Bootstrapping класс-помощник com.mysql.clusterj.ClusterJHelper содержит методы для создания com.mysql.clusterj.SessionFactory. Bootstrapping это процесс идентификации NDB Cluster и получения SessionFactory для использования с кластером. Есть один SessionFactory на кластер на Java VM.

4.3.1.1.1. SessionFactory

com.mysql.clusterj.SessionFactory формируется через свойства, которые определяют кластер NDB, с которым соединяется приложение:

  • com.mysql.clusterj.connectstring определяет имя хоста и порт ndb_mgmd.

  • com.mysql.clusterj.connect.retries количество повторений соединений.

  • com.mysql.clusterj.connect.delay задержка в секундах между повторениями связи.

  • com.mysql.clusterj.connect.verbose показать ли сообщение в System.out, соединяясь.

  • com.mysql.clusterj.connect.timeout.before число секунд, чтобы ждать, пока первый узел не отвечает на запрос связи.

  • com.mysql.clusterj.connect.timeout.after число секунд, чтобы ждать, пока последний узел не отвечает на запрос связи.

  • com.mysql.clusterj.connect.database название базы данных, чтобы использовать.

File propsFile = new File("clusterj.properties");
InputStream inStream = new FileInputStream(propsFile);
Properties props = new Properties();
props.load(inStream);
SessionFactory sessionFactory = ClusterJHelper.getSessionFactory(props);

Session com.mysql.clusterj.Session представляет отдельную связь пользователя с кластером. Это содержит методы для:

  • Нахождение постоянных экземпляров первичным ключом.

  • Постоянная фабрика экземпляров (newInstance).

  • Постоянное управление жизненным циклом экземпляра (сохранение, удаление).

  • Получение QueryBuilder.

  • Получение Transaction (currentTransaction).

Session session = sessionFactory.getSession();
Employee existing = session.find(Employee.class, 1);
if (existing != null) {
   session.remove(existing);
}
Employee newemp = session.newInstance(Employee.class);
newemp.initialize(2, "Craig", 15, 146000.00);
session.persist(newemp);

Transaction com.mysql.clusterj.Transaction позволяет пользователям объединять многократные операции в единую транзакцию базы данных. Это содержит методы:

  • Начать блок действий.

  • Передайте изменения от блока действий.

  • Отменить все изменения от блока действий.

  • Отметить блок действий как rollback only.

  • Получить статус обратной перемотки текущего блока действий.

Transaction tx = session.currentTransaction();
tx.begin();
Employee existing = session.find(Employee.class, 1);
Employee newemp = session.newInstance(Employee.class);
newemp.initialize(2, "Craig", 146000.00);
session.persist(newemp);
tx.commit();

QueryBuilder com.mysql.clusterj.query.QueryBuilder позволяет пользователям строить запросы. Это содержит методы:

  • Определите модель объекта области, чтобы запросить.

  • Сравните свойства с использованием параметров:

    • equal

    • lessThan

    • greaterThan

    • lessEqual

    • greaterEqual

    • between

    • in

  • Объедините использование сравнений "and", "or" и "not".

QueryBuilder builder = session.getQueryBuilder();
QueryDomainType<Employee> qemp = builder.createQueryDefinition(Employee.class);
Predicate service = qemp.get("yearsOfService").greaterThan(qemp.param("service"));
Predicate salary = qemp.get("salary").lessEqual(qemp.param("salaryCap"));
qemp.where(service.and(salary));
Query<Employee> query = session.createQuery(qemp);
query.setParameter("service", 10);
query.setParameter("salaryCap", 180000.00);
List<Employee> results = query.getResultList();

4.3.1.2. ClusterJDatastoreException

ClusterJUserException представляет ошибку базы данных. Первопричина исключения содержится в "cause".

4.3.1.2.1. Резюме
public class ClusterJDatastoreException
 extends, ClusterJException {
// Public Constructorspublic ClusterJDatastoreException(String message);
public ClusterJDatastoreException(String msg ,
int code,
int mysqlCode,
int status,
int classification);

public ClusterJDatastoreException(String message ,
Throwable t);

public ClusterJDatastoreException(Throwable t );
// Public Methodspublic int getClassification();
public int getCode();
public int getMysqlCode();
public int getStatus ();
}

Унаследовано от com.mysql.clusterj.ClusterJException: printStackTrace

Унаследовано от java.lang.Throwable: addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , setStackTrace , toString

Унаследовано от java.lang.Object: equals , getClass , hashCode , notify , notifyAll , wait

4.3.1.2.2. getClassification()
public int getClassification();

Получите классификацию.

4.3.1.2.3. getCode()
public int getCode();

Получите код.

Введено в

7.3.15, 7.4.13, 7.5.4

4.3.1.2.4. getMysqlCode()
public int getMysqlCode();

Получите код mysql.

Введено в

7.3.15, 7.4.13, 7.5.4

4.3.1.2.5 getStatus()
public int getStatus();

Получите статус.

4.3.1.3. ClusterJDatastoreException.Classification

Вспомогательный класс для getClassification(). import com.mysql.clusterj.ClusterJDatastoreException.Classification; Classification c = Classification.lookup(datastoreException.getClassification()); System.out.println("exceptionClassification " + c + " with value " + c.value);

4.3.1.3.1 Резюме
public static final 
class ClusterJDatastoreException.Classification
 extends, Enum<Classification> {
// Public Static Fieldspublic static final Classification ApplicationError ;
public static final Classification ConstraintViolation ;
public static final Classification FunctionNotImplemented ;
public static final Classification InsufficientSpace ;
public static final Classification InternalError ;
public static final Classification InternalTemporary ;
public static final Classification NoDataFound ;
public static final Classification NoError ;
public static final Classification NodeRecoveryError ;
public static final Classification NodeShutdown ;
public static final Classification OverloadError ;
public static final Classification SchemaError ;
public static final Classification SchemaObjectExists ;
public static final Classification TemporaryResourceError ;
public static final Classification TimeoutExpired ;
public static final Classification UnknownErrorCode ;
public static final Classification UnknownResultError ;
public static final Classification UserDefinedError ;
// Public Static Methodspublic static Classification lookup(int value );
public static Classification valueOf(String name);
public static Classification[] values();
}

Унаследовано от java.lang.Enum: compareTo , equals , getDeclaringClass , hashCode , Имя , ordinal , toString , valueOf

Унаследовано от java.lang.Object: getClass , notify , notifyAll , wait

Введено в

7.3.15, 7.4.13, 7.5.4

4.3.1.3.2. lookup(int)
public static Classification lookup(int value);

Получите классификацию для значения, возвращенного ClusterJDatastoreException.getClassification().

Таблица 4.4. lookup(int)

Параметр Описание
value Классификация возвращена getClassification().
return Классификация для ошибки.

4.3.1.4. ClusterJException

ClusterJException основа для всех исключений ClusterJ. Приложения могут поймать ClusterJException, который будет зарегистрирован относительно всего ClusterJ.

  • Пользовательские исключения вызываются пользовательской ошибкой, например обеспечивая строку соединения, которая относится к недоступному хосту или порту.

    • Если пользовательское исключение обнаружено во время самонастройки (приобретая SessionFactory), это брошено как критическое исключение com.mysql.clusterj.ClusterJFatalUserException.

    • Если исключение обнаружено во время инициализации постоянного интерфейса, например аннотировав столбец, который не существует в таблице, об этом сообщают как пользовательское исключение com.mysql.clusterj.ClusterJUserException.

  • Исключения хранилища данных сообщают об условиях, которые следуют из операций по хранилищу данных после самонастройки. Например, дубликаты ключа на вставке или несуществующая запись при удалении выдадут com.mysql.clusterj.ClusterJDatastoreException.

  • Внутренние исключительные ситуации сообщают об условиях, которые вызываются ошибками во внедрении. Об этих исключениях нужно сообщить как об ошибках исключением com.mysql.clusterj.ClusterJFatalInternalException.

Исключения находятся в трех общих категориях: User exceptions, Datastore exceptions и Internal exceptions.

4.3.1.4.1. Резюме
public class ClusterJException
 extends, RuntimeException {
// Public Constructorspublic ClusterJException(String message );
public ClusterJException (String message,
Throwable t);

public ClusterJException(Throwable t);
// Public Methodspublic synchronized void printStackTrace( PrintStream s);
}

Прямые известные подклассы: com.mysql.clusterj.ClusterJDatastoreException , com.mysql.clusterj.ClusterJFatalException, com.mysql.clusterj.ClusterJUserException .

Унаследовано от java.lang.Throwable: addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , setStackTrace , toString

Унаследовано от java.lang.Object: equals , getClass , hashCode , notify , notifyAll , wait

4.3.1.5. ClusterJFatalException

ClusterJFatalException представляет исключение, которое не восстанавливаемо.

4.3.1.5.1. Резюме
public class ClusterJFatalException
 extends, ClusterJException {
// Public Constructorspublic ClusterJFatalException(String string );
public ClusterJFatalException(String string,
Throwable t);

public ClusterJFatalException(Throwable t );
}

Известные прямые подклассы: com.mysql.clusterj.ClusterJFatalInternalException , com.mysql.clusterj.ClusterJFatalUserException

Унаследовано от com.mysql.clusterj.ClusterJException: printStackTrace

Унаследовано от java.lang.Throwable: addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , setStackTrace , toString

Унаследовано от java.lang.Object: equals , getClass , hashCode , notify , notifyAll , wait

4.3.1.6. ClusterJFatalInternalException

ClusterJFatalInternalException представляет ошибку внедрения, после которой не может восстановиться пользователь.

4.3.1.6.1. Резюме
public class 
ClusterJFatalInternalException extends,
ClusterJFatalException
 {
// Public Constructors public ClusterJFatalInternalException( String string );
public ClusterJFatalInternalException( String string,
Throwable t);

public ClusterJFatalInternalException(Throwable t);
}

Унаследовано от com.mysql.clusterj.ClusterJException: printStackTrace

Унаследовано от java.lang.Throwable: addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , setStackTrace , toString

Унаследовано от java.lang.Object: equals , getClass , hashCode , notify , notifyAll , wait/p>

4.3.1.7. ClusterJFatalUserException

ClusterJFatalUserException представляет пользовательскую ошибку, которая является невосстанавливаемой, такой как программные ошибки в постоянных классах или недостающие ресурсы в среде выполнения.

4.3.1.7.1. Резюме
public class 
ClusterJFatalUserException extends, 
ClusterJFatalException {
// Public Constructors public ClusterJFatalUserException( String string );
public ClusterJFatalUserException( String string,
Throwable t);

public ClusterJFatalUserException( Throwable t);
}

Унаследовано от com.mysql.clusterj.ClusterJException: printStackTrace

Унаследовано от java.lang.Throwable: addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , setStackTrace , toString

Унаследовано от java.lang.Object: equals , getClass , hashCode , notify , notifyAll , wait

4.3.1.8. ClusterJHelper

ClusterJHelper предоставляет вспомогательные методы взаимодействия между API и внедрением.

4.3.1.8.1. Резюме
public class ClusterJHelper
 {
// Public Constructorspublic ClusterJHelper();
// Public Static Methodspublic static boolean getBooleanProperty(String propertyName,
String def);

public static T getServiceInstance(Class<T> cls );
public static T getServiceInstance(Class<T> cls ,
ClassLoader loader);

public static T getServiceInstance(Class<T> cls ,
String implementationClassName );

public static T getServiceInstance(Class<T> cls ,
String implementationClassName,
ClassLoader loader);

public static List<T> getServiceInstances(Class<T> cls,
ClassLoader loader,
StringBuffer errorMessages);

public static SessionFactory getSessionFactory(Map props );
public static SessionFactory getSessionFactory(Map props ,
ClassLoader loader);

public static String getStringProperty(String propertyName ,
String def);

public static Dbug newDbug ();
}

Унаследовано от java.lang.Object: equals , getClass , hashCode , notify , notifyAll , toString , wait

4.3.1.8.2. getBooleanProperty(String, String)
public static boolean getBooleanProperty(String propertyName ,
String def);

Получите названное булевого свойства от окружающей среды или от системных свойств. Если свойство не 'true', тогда возвращаются false.

Таблица 4.5. getBooleanProperty(String, String)

Параметр Описание
propertyName Название значения
def По умолчанию, если свойство не установлено
return Системное свойство, если это установлено через -D или системную окружающую среду

4.3.1.8.3. getServiceInstance(Class<T>)
public static T getServiceInstance(Class<T> cls );

Определите местонахождение реализации услуги сервисным поиском загрузчика класса контекста.

Таблица 4.6. getServiceInstance(Class<T>)

Параметр Описание
cls Класс фабрики
return Сервисный экземпляр

4.3.1.8.4. getServiceInstance(Class<T>, ClassLoader)
public static T getServiceInstance(Class<T> cls ,
ClassLoader loader);

Определите местонахождение реализации услуги для обслуживания сервисным поиском определенного загрузчика класса. Первый найденный сервисный экземпляр возвращен.

Таблица 4.7. getServiceInstance(Class<T>, ClassLoader)

Параметр Описание
cls Класс фабрики
loader Загрузчик класса для фабричного внедрения
return Сервисный экземпляр

4.3.1.8.5. getServiceInstance(Class<T>, String)
public static T getServiceInstance(Class<T> cls ,
String implementationClassName);

Определите местонахождение реализации услуги для обслуживания. Если имя внедрения не пустое, используйте его вместо поиска. Если класс реализации не загружаемый или не осуществляет интерфейс, бросает исключение. Используйте загрузчик класса ClusterJHelper, чтобы найти обслуживание.

Таблица 4.8. getServiceInstance(Class<T>, String)

Параметр Описание
cls

implementationClassName

return Экземпляр внедрения для обслуживания

4.3.1.8.6. getServiceInstance(Class<T>, String, ClassLoader)
public static T getServiceInstance(Class<T> cls ,
String implementationClassName,
ClassLoader loader);

Определите местонахождение реализации услуги для обслуживания. Если имя внедрения не пустое, используйте его вместо поиска. Если класс реализации не загружаемый или не осуществляет интерфейс, бросает исключение.

Таблица 4.9. getServiceInstance(Class<T>, String, ClassLoader)

Параметр Описание
cls

implementationClassName Название класса реализации, чтобы загрузить
loader ClassLoader, чтобы найти обслуживание
return Экземпляр внедрения для обслуживания

4.3.1.8.7. getServiceInstances(Class<T>, ClassLoader, StringBuffer)
public static List<T> getServiceInstances(Class<T> cls ,
ClassLoader loader,
StringBuffer errorMessages);

Определите местонахождение всех реализаций услуги сервисным поиском определенного загрузчика класса. Внедрения в сервисном файле возвращаются. Неудавшиеся экземпляры остаются в буфере errorMessages.

Таблица 4.10. getServiceInstances(Class<T>, ClassLoader, StringBuffer)

Параметр Описание
cls Класс фабрики
loader Загрузчик класса для фабричного внедрения
errorMessages Буфер для сообщений об ошибках
return Сервисный экземпляр

4.3.1.8.8. getSessionFactory(Map)
public static SessionFactory getSessionFactory(Map props );

Определите местонахождение внедрения SessionFactory сервисным поиском. Используемый загрузчик класса является загрузчиком класса контекста потока.

Таблица 4.11. getSessionFactory(Map)

Параметр Описание
props Свойства фабрики сессии
return Фабрика сессии

Исключения

ClusterFatalUserException

Если связь с кластером не может быть установлена

4.3.1.8.9. getSessionFactory(Map, ClassLoader)
public static SessionFactory getSessionFactory(Map props ,
ClassLoader loader);

Определите местонахождение внедрения SessionFactory сервисным поиском определенного загрузчика класса. Свойства это карта, которая может содержать определенные для внедрения свойства плюс стандартные свойства.

Таблица 4.12. getSessionFactory(Map, ClassLoader)

Параметр Описание
props свойства для фабрики
loader загрузчик класса для фабричного внедрения
return фабрика сессии

Исключения

ClusterFatalUserException

Если связь с кластером не может быть установлена

4.3.1.8.10. getStringProperty(String, String)
public static String getStringProperty(String propertyName ,
String def);

Получите названное строкой свойство от окружающей среды или от системных свойств.

Таблица 4.13. getStringProperty(String, String)

Параметр Описание
propertyName название значения
def по умолчанию, если свойство не установлено
return системное свойство, если это установлено через -D или системную окружающую среду

4.3.1.8.11. newDbug()
public static Dbug newDbug();

Возвратите новый экземпляр Dbug.

Таблица 4.14. newDbug()

Параметр Описание
return новый экземпляр Dbug

4.3.1.9. ClusterJUserException

ClusterJUserException представляет пользовательскую программную ошибку.

4.3.1.9.1. Резюме
 
public class 
ClusterJUserException extends, 
ClusterJException
{
// Public Constructors public ClusterJUserException( String message);
public ClusterJUserException(String message ,
Throwable t);

public ClusterJUserException(Throwable t);
}

Унаследовано от com.mysql.clusterj.ClusterJException: printStackTrace

Унаследовано от java.lang.Throwable: addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , setStackTrace , toString

Унаследовано от java.lang.Object: equals , getClass , hashCode , notify , notifyAll , wait

4.3.1.10. ColumnMetadata

public interface ColumnMetadata
 {
// Public Methodspublic abstract String charsetName();
public abstract ColumnType columnType();
public abstract boolean isPartitionKey();
public abstract boolean isPrimaryKey();
public abstract Class<?> javaType();
public abstract int maximumLength();
public abstract String name();
public abstract boolean nullable();
public abstract int number ();
public abstract int precision();
public abstract int scale();
}
4.3.1.10.1. charsetName()
public abstract String charsetName();

Возвратите имя набора символов.

Таблица 4.15. charsetName()

Параметр Описание
return имя набора символов

4.3.1.10.2. columnType()
public abstract ColumnType columnType();

Возвратите тип столбца.

Таблица 4.16. columnType()

Параметр Описание
return тип столбца

4.3.1.10.3. isPartitionKey()
public abstract boolean isPartitionKey();

Возвратит, является ли этот столбец столбцом ключа разделения.

Таблица 4.17. isPartitionKey()

Параметр Описание
return true, если это столбец ключа разделения

4.3.1.10.4. isPrimaryKey()
public abstract boolean isPrimaryKey();

Возвратит, является ли этот столбец столбцом первичного ключа.

Таблица 4.18. isPrimaryKey()

Параметр Описание
return true, если это столбец первичного ключа

4.3.1.10.5. javaType()
public abstract Class<?> javaType();

Возвратите java-тип столбца.

Таблица 4.19. javaType()

Параметр Описание
return java-тип столбца.

4.3.1.10.6. maximumLength()
public abstract int maximumLength();

Возвратите максимальное количество байтов, которые могут быть сохранены в колонке после трансляции знаков, используя набор символов.

Таблица 4.20. maximumLength()

Параметр Описание
return максимальное количество байтов, которые могут быть сохранены в столбце

4.3.1.10.7. name()
public abstract String name();

Возвратите название столбца.

Таблица 4.21. name()

Параметр Описание
return название столбца.

4.3.1.10.8. nullable()
public abstract boolean nullable();

Возвратит nullable ли столбец.

Таблица 4.22. nullable()

Параметр Описание
return nullable ли этот столбец

4.3.1.10.9. number()
public abstract int number();

Возвратите номер столбца. Это число используется в качестве первого параметра в методах get и set DynamicColumn.

Таблица 4.23. number()

Параметр Описание
return номер столбца.

4.3.1.10.10. precision()
public abstract int precision();

Возвратите точность столбца.

Таблица 4.24. precision()

Параметр Описание
return точность столбца.

4.3.1.10.11. scale()
public abstract int scale();

Возвратите масштаб столбца.

Таблица 4.25. scale()

Параметр Описание
return масштаб столбца

4.3.1.11. ColumnType

Этот класс перечисляет типы столбца для столбцов в ndb.

4.3.1.11.1 Резюме
public final class 
ColumnType extends,
Enum<ColumnType>
 {
// Public Static Fields public static final ColumnType Bigint ;
public static final ColumnType Bigunsigned ;
public static final ColumnType Binary ;
public static final ColumnType Bit ;
public static final ColumnType Blob ;
public static final ColumnType Char ;
public static final ColumnType Date ;
public static final ColumnType Datetime ;
public static final ColumnType Datetime2 ;
public static final ColumnType Decimal ;
public static final ColumnType Decimalunsigned ;
public static final ColumnType Double ;
public static final ColumnType Float ;
public static final ColumnType Int ;
public static final ColumnType Longvarbinary ;
public static final ColumnType Longvarchar ;
public static final ColumnType Mediumint ;
public static final ColumnType Mediumunsigned ;
public static final ColumnType Olddecimal ;
public static final ColumnType Olddecimalunsigned ;
public static final ColumnType Smallint ;
public static final ColumnType Smallunsigned ;
public static final ColumnType Text ;
public static final ColumnType Time ;
public static final ColumnType Time2 ;
public static final ColumnType Timestamp ;
public static final ColumnType Timestamp2 ;
public static final ColumnType Tinyint ;
public static final ColumnType Tinyunsigned ;
public static final ColumnType Undefined ;
public static final ColumnType Unsigned ;
public static final ColumnType Varbinary ;
public static final ColumnType Varchar ;
public static final ColumnType Year ;
// Public Static Methodspublic static ColumnType valueOf( String name);
public static ColumnType[] values();
}

Унаследовано от java.lang.Enum: compareTo , equals , getDeclaringClass , hashCode , Имя , ordinal , toString , valueOf

Унаследовано от java.lang.Object: getClass , notify , notifyAll , wait

4.3.1.12. Constants

Константы используются в ClusterJ.

4.3.1.12.1. Резюме
public interface
Constants
{
// Public Static Fields public static final String DEFAULT_PROPERTY_CLUSTER_BYTE_BUFFER_POOL_SIZES = "256, 10240, 102400, 1048576";
public static final int DEFAULT_PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_BATCH_SIZE = 10;
public static final long DEFAULT_PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_START = 1L;
public static final long DEFAULT_PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_STEP = 1L;
public static final int DEFAULT_PROPERTY_CLUSTER_CONNECT_DELAY = 5;
public static final int DEFAULT_PROPERTY_CLUSTER_CONNECT_RETRIES = 4;
public static final int DEFAULT_PROPERTY_CLUSTER_CONNECT_TIMEOUT_AFTER = 20;
public static final < span>int DEFAULT_PROPERTY_CLUSTER_CONNECT_TIMEOUT_BEFORE = 30;
public static final int DEFAULT_PROPERTY_CLUSTER_CONNECT_TIMEOUT_MGM = 30000;
public static final int DEFAULT_PROPERTY_CLUSTER_CONNECT_VERBOSE = 0;
public static final String DEFAULT_PROPERTY_CLUSTER_DATABASE = "test";
public static final int DEFAULT_PROPERTY_CLUSTER_MAX_TRANSACTIONS = 4;
public static final int DEFAULT_PROPERTY_CONNECTION_POOL_RECV_THREAD_ACTIVATION_THRESHOLD = 8;
public static final int DEFAULT_PROPERTY_CONNECTION_POOL_SIZE = 1 ;
public static final int DEFAULT_PROPERTY_CONNECTION_RECONNECT_TIMEOUT = 0;
public static final String ENV_CLUSTERJ_LOGGER_FACTORY_NAME = "CLUSTERJ_LOGGER_FACTORY";
public static final String PROPERTY_CLUSTER_BYTE_BUFFER_POOL_SIZES = "com.mysql.clusterj.byte.buffer.pool.sizes" ;
public static final String PROPERTY_CLUSTER_CONNECTION_SERVICE = "com.mysql.clusterj.connection.service";
public static final String PROPERTY_CLUSTER_CONNECTSTRING = "com.mysql.clusterj.connectstring";
public static final String PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_BATCH_SIZE = "com.mysql.clusterj.connect.autoincrement.batchsize";
public static final String PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_START = "com.mysql.clusterj.connect.autoincrement.offset" ;
public static final String PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_STEP = "com.mysql.clusterj.connect.autoincrement.increment";
public static final String PROPERTY_CLUSTER_CONNECT_DELAY = "com.mysql.clusterj.connect.delay";
public static final String PROPERTY_CLUSTER_CONNECT_RETRIES = "com.mysql.clusterj.connect.retries";
public static final String PROPERTY_CLUSTER_CONNECT_TIMEOUT_AFTER = "com.mysql.clusterj.connect.timeout.after" ;
public static final String PROPERTY_CLUSTER_CONNECT_TIMEOUT_BEFORE = "com.mysql.clusterj.connect.timeout.before";
public static final String PROPERTY_CLUSTER_CONNECT_TIMEOUT_MGM = "com.mysql.clusterj.connect.timeout.mgm";
public static final String PROPERTY_CLUSTER_CONNECT_VERBOSE = "com.mysql.clusterj.connect.verbose";
public static final String PROPERTY_CLUSTER_DATABASE = "com.mysql.clusterj.database";
public static final String PROPERTY_CLUSTER_MAX_TRANSACTIONS = "com.mysql.clusterj.max.transactions";
public static final String PROPERTY_CONNECTION_POOL_NODEIDS = "com.mysql.clusterj.connection.pool.nodeids";
public static final String PROPERTY_CONNECTION_POOL_RECV_THREAD_ACTIVATION_THRESHOLD = "com.mysql.clusterj.connection.pool.recv.thread.activation.threshold" ;
public static final String PROPERTY_CONNECTION_POOL_RECV_THREAD_CPUIDS = "com.mysql.clusterj.connection.pool.recv.thread.cpuids";
public static final String PROPERTY_CONNECTION_POOL_SIZE = "com.mysql.clusterj.connection.pool.size";
public static final String PROPERTY_CONNECTION_RECONNECT_TIMEOUT = "com.mysql.clusterj.connection.reconnect.timeout";
public static final String PROPERTY_DEFER_CHANGES = "com.mysql.clusterj.defer.changes";
public static final String PROPERTY_JDBC_DRIVER_NAME = "com.mysql.clusterj.jdbc.driver";
public static final String PROPERTY_JDBC_PASSWORD = "com.mysql.clusterj.jdbc.password";
public static final String PROPERTY_JDBC_URL = "com.mysql.clusterj.jdbc.url";
public static final String PROPERTY_JDBC_USERNAME = "com.mysql.clusterj.jdbc.username";
public static final String SESSION_FACTORY_SERVICE_CLASS_NAME = "com.mysql.clusterj.SessionFactoryService";
public static final String SESSION_FACTORY_SERVICE_FILE_NAME = "META-INF/services/com.mysql.clusterj.SessionFactoryService" ;
}
4.3.1.12.2. DEFAULT_PROPERTY_CLUSTER_BYTE_BUFFER_POOL_SIZES
public static final String DEFAULT_PROPERTY_CLUSTER_BYTE_BUFFER_POOL_SIZES = "256, 10240, 102400, 1048576";

Значение по умолчанию размеров пула буферов в байтах: 256, 10K, 100K, 1M.

4.3.1.12.3. DEFAULT_PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_BATCH_SIZE
public static final int DEFAULT_PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_BATCH_SIZE = 10;

Значение по умолчанию автоувеличения пакетного размера связи.

4.3.1.12.4. DEFAULT_PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_START
public static final long DEFAULT_PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_START = 1L;

Значение по умолчанию начального автоувеличения связи.

4.3.1.12.5. DEFAULT_PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_STEP
public static final long DEFAULT_PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_STEP = 1L;

начение по умолчанию связи шага автоувеличения связи.

4.3.1.12.6. DEFAULT_PROPERTY_CLUSTER_CONNECT_DELAY
public static final int DEFAULT_PROPERTY_CLUSTER_CONNECT_DELAY = 5;

Значение по умолчанию задержки связи.

4.3.1.12.7. DEFAULT_PROPERTY_CLUSTER_CONNECT_RETRIES
public static final int DEFAULT_PROPERTY_CLUSTER_CONNECT_RETRIES = 4 ;

Значение по умолчанию повторов связи.

4.3.1.12.8. DEFAULT_PROPERTY_CLUSTER_CONNECT_TIMEOUT_AFTER
public static final int DEFAULT_PROPERTY_CLUSTER_CONNECT_TIMEOUT_AFTER = 20;

Значение по умолчанию тайм-аута после связи.

4.3.1.12.9. DEFAULT_PROPERTY_CLUSTER_CONNECT_TIMEOUT_BEFORE
public static final int DEFAULT_PROPERTY_CLUSTER_CONNECT_TIMEOUT_BEFORE = 30;

Значение по умолчанию тайм-аута перед связью.

4.3.1.12.10. DEFAULT_PROPERTY_CLUSTER_CONNECT_TIMEOUT_MGM
public static final int DEFAULT_PROPERTY_CLUSTER_CONNECT_TIMEOUT_MGM = 30000;

Значение по умолчанию тайм-аута связи mgm.

4.3.1.12.11. DEFAULT_PROPERTY_CLUSTER_CONNECT_VERBOSE
public static final int DEFAULT_PROPERTY_CLUSTER_CONNECT_VERBOSE = 0;

Значение по умолчанию подробности связи.

4.3.1.12.12. DEFAULT_PROPERTY_CLUSTER_DATABASE
public static final String DEFAULT_PROPERTY_CLUSTER_DATABASE = "test";

Значение по умолчанию базы данных.

4.3.1.12.13. DEFAULT_PROPERTY_CLUSTER_MAX_TRANSACTIONS
public static final int DEFAULT_PROPERTY_CLUSTER_MAX_TRANSACTIONS = 4;

Значение по умолчанию максимального количества транзакций.

4.3.1.12.14. DEFAULT_PROPERTY_CONNECTION_POOL_RECV_THREAD_ACTIVATION_THRESHOLD
public static final int DEFAULT_PROPERTY_CONNECTION_POOL_RECV_THREAD_ACTIVATION_THRESHOLD = 8;

Значение по умолчанию порога активации потока.

4.3.1.12.15. DEFAULT_PROPERTY_CONNECTION_POOL_SIZE
public static final int DEFAULT_PROPERTY_CONNECTION_POOL_SIZE = 1;

Значение по умолчанию размера пула связи.

4.3.1.12.16. DEFAULT_PROPERTY_CONNECTION_RECONNECT_TIMEOUT
public static final int DEFAULT_PROPERTY_CONNECTION_RECONNECT_TIMEOUT = 0;
Введено в

7.5.7

Значение по умолчанию тайм-аута повторного соединения связи. Автоматическое повторное соединение из-за отказов сети отключено.

4.3.1.12.17. ENV_CLUSTERJ_LOGGER_FACTORY_NAME
public static final String ENV_CLUSTERJ_LOGGER_FACTORY_NAME = "CLUSTERJ_LOGGER_FACTORY";

Название переменной окружения, чтобы установить обработчик журналов.

4.3.1.12.18. PROPERTY_CLUSTER_BYTE_BUFFER_POOL_SIZES
public static final String PROPERTY_CLUSTER_BYTE_BUFFER_POOL_SIZES = "com.mysql.clusterj.byte.buffer.pool.sizes";

Название свойства размера пула байтового буфера. Чтобы отключить буферный пул для объектов blob, установите значение этого свойства в "1". С этим значением буфера будут выделены, освобождены и убраны, если возможно, немедленно после использования для передачи данных blob.

4.3.1.12.19. PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_BATCH_SIZE
public static final String PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_BATCH_SIZE = "com.mysql.clusterj.connect.autoincrement.batchsize";

Имя свойства автоувеличения пакетного размера связи.

4.3.1.12.20. PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_START
public static final String PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_START = "com.mysql.clusterj.connect.autoincrement.offset";

Название свойства начального автоувеличения связи.

4.3.1.12.21. PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_STEP
public static final String PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_STEP = "com.mysql.clusterj.connect.autoincrement.increment";

Название свойства шага автоувеличения связи.

4.3.1.12.22. PROPERTY_CLUSTER_CONNECT_DELAY
public static final String PROPERTY_CLUSTER_CONNECT_DELAY = "com.mysql.clusterj.connect.delay";

Название свойства тайм-аута связи. Для получения дополнительной информации см. Ndb_cluster_connection::connect().

4.3.1.12.23. PROPERTY_CLUSTER_CONNECT_RETRIES
public static final String PROPERTY_CLUSTER_CONNECT_RETRIES = "com.mysql.clusterj.connect.retries";

Название свойства повторов связи. Для получения дополнительной информации см. Ndb_cluster_connection::connect().

4.3.1.12.24. PROPERTY_CLUSTER_CONNECT_TIMEOUT_AFTER
public static final String PROPERTY_CLUSTER_CONNECT_TIMEOUT_AFTER = "com.mysql.clusterj.connect.timeout.after";

Название свойства тайм-аута после связи. Для получения дополнительной информации см. Ndb_cluster_connection::wait_until_ready().

4.3.1.12.25. PROPERTY_CLUSTER_CONNECT_TIMEOUT_BEFORE
public static final String PROPERTY_CLUSTER_CONNECT_TIMEOUT_BEFORE = "com.mysql.clusterj.connect.timeout.before";

Название свойства тайм-аута перед связью. Для получения дополнительной информации см. Ndb_cluster_connection::wait_until_ready().

4.3.1.12.26. PROPERTY_CLUSTER_CONNECT_TIMEOUT_MGM
public static final String PROPERTY_CLUSTER_CONNECT_TIMEOUT_MGM = "com.mysql.clusterj.connect.timeout.mgm";

Название начального тайм-аута для связи кластера, чтобы соединиться с MGM прежде, чем соединить с узлами данных Ndb_cluster_connection::set_timeout().

4.3.1.12.27. PROPERTY_CLUSTER_CONNECT_VERBOSE
public static final String PROPERTY_CLUSTER_CONNECT_VERBOSE = "com.mysql.clusterj.connect.verbose";

Название свойства подробности связи. Для получения дополнительной информации см. Ndb_cluster_connection::connect().

4.3.1.12.28. PROPERTY_CLUSTER_CONNECTION_SERVICE
public static final String PROPERTY_CLUSTER_CONNECTION_SERVICE = "com.mysql.clusterj.connection.service";

Название свойства сервиса связи.

4.3.1.12.29. PROPERTY_CLUSTER_CONNECTSTRING
public static final String PROPERTY_CLUSTER_CONNECTSTRING = "com.mysql.clusterj.connectstring";

Название значения строки подключения. Для получения дополнительной информации см. Ndb_cluster_connection constructor.

4.3.1.12.30. PROPERTY_CLUSTER_DATABASE
public static final String PROPERTY_CLUSTER_DATABASE = "com.mysql.clusterj.database";

Название значения базы данных. Для получения дополнительной информации посмотрите параметр catalogName конструктора Ndb Ndb constructor.

4.3.1.12.31. PROPERTY_CLUSTER_MAX_TRANSACTIONS
public static final String PROPERTY_CLUSTER_MAX_TRANSACTIONS = "com.mysql.clusterj.max.transactions";

Название максимального количества транзакций. Для получения дополнительной информации посмотрите Ndb::init().

4.3.1.12.32. PROPERTY_CONNECTION_POOL_NODEIDS
public static final String PROPERTY_CONNECTION_POOL_NODEIDS = "com.mysql.clusterj.connection.pool.nodeids";

Название пула связи id узлов. Нет никакого значения по умолчанию. Это список id узлов, чтобы вынудить связи быть назначенными на определенные id узла. Если это свойство определяется и размер пула связи не по умолчанию, количество id узлов списка должно соответствовать размеру пула связи или количество id узлов должно быть 1, и id узла будут назначены на связи, начинающиеся с указанного id узла.

4.3.1.12.33. PROPERTY_CONNECTION_POOL_RECV_THREAD_ACTIVATION_THRESHOLD
public static final String PROPERTY_CONNECTION_POOL_RECV_THREAD_ACTIVATION_THRESHOLD = "com.mysql.clusterj.connection.pool.recv.thread.activation.threshold";

Порог активации потока для всех связей в пуле связи. По умолчанию нет порога активации.

4.3.1.12.34. PROPERTY_CONNECTION_POOL_RECV_THREAD_CPUIDS
public static final String PROPERTY_CONNECTION_POOL_RECV_THREAD_CPUIDS = "com.mysql.clusterj.connection.pool.recv.thread.cpuids";

Закрепление CPU получения потоков для связей в пуле связи. По умолчанию нет закрепления CPU. Если это свойство определяется и размер пула связи не по умолчанию (1), количество cpuids в списке должно соответствовать размеру пула связи.

4.3.1.12.35. PROPERTY_CONNECTION_POOL_SIZE
public static final String PROPERTY_CONNECTION_POOL_SIZE = "com.mysql.clusterj.connection.pool.size";

Название свойства размера пула связи. Это количество связей, чтобы создать в пуле связи. По умолчанию равняется 1 (все сессии разделяют ту же самую связь, все запросы SessionFactory с той же строкой подключения и базой данных разделят единственную SessionFactory). Установка 0 отключает объединение, каждый запрос SessionFactory получит свой собственный уникальный SessionFactory.

4.3.1.12.36. PROPERTY_CONNECTION_RECONNECT_TIMEOUT
public static final String PROPERTY_CONNECTION_RECONNECT_TIMEOUT = "com.mysql.clusterj.connection.reconnect.timeout";
Введено в

7.5.7

Число секунд, чтобы ждать всех сессий, которые будут закрыты, повторно подключая SessionFactory из-за отказов сети. По умолчанию 0 указывает, что автоматическое повторное соединение к кластеру из-за отказов сети отключено. Повторное соединение может быть позволено при помощи метода SessionFactory.reconnect(int timeout) и определением нового тайм-аута.

4.3.1.12.37. PROPERTY_DEFER_CHANGES
public static final String PROPERTY_DEFER_CHANGES = "com.mysql.clusterj.defer.changes";

Флаг для отсроченных вставок, удалений и обновлений.

4.3.1.12.38. PROPERTY_JDBC_DRIVER_NAME
public static final String PROPERTY_JDBC_DRIVER_NAME = "com.mysql.clusterj.jdbc.driver";

Имя драйвера jdbc.

4.3.1.12.39. PROPERTY_JDBC_PASSWORD
public static final String PROPERTY_JDBC_PASSWORD = "com.mysql.clusterj.jdbc.password";

Пароль для jdbc.

4.3.1.12.40. PROPERTY_JDBC_URL
public static final String PROPERTY_JDBC_URL = "com.mysql.clusterj.jdbc.url";

url для jdbc.

4.3.1.12.41. PROPERTY_JDBC_USERNAME
public static final String PROPERTY_JDBC_USERNAME = "com.mysql.clusterj.jdbc.username";

Имя пользователя jdbc.

4.3.1.12.42. SESSION_FACTORY_SERVICE_CLASS_NAME
public static final String SESSION_FACTORY_SERVICE_CLASS_NAME = "com.mysql.clusterj.SessionFactoryService";

Название сервисного интерфейса сессии.

4.3.1.12.43. SESSION_FACTORY_SERVICE_FILE_NAME
public static final String SESSION_FACTORY_SERVICE_FILE_NAME = "META-INF/services/com.mysql.clusterj.SessionFactoryService";

Названия файлов с именами классов реализации для сервиса сессии.

4.3.1.13. Dbug

Dbug позволяет приложениям clusterj включить функциональность DBUG в библиотеке кластера ndbapi. Статус dbug это управляющая строка, которая состоит из флагов, отделенных двоеточиями. Флаги:

  • d устанавливают флаг отладки.

  • a[,filename] добавляет вывод отладки к файлу.

  • A[,filename] аналогично a[,filename], сбрасывает вывод после каждой операции.

  • d[,keyword[,keyword...]] позволяет вывод из макроса с указанными ключевыми словами.

  • D[,tenths] ждет в течение указанных десятых частей секунды после каждой операции.

  • f[,function[,function...]] ограничивает вывод указанным списком функций.

  • F отмечает каждый вывод именем исходного файла.

  • i отмечает каждый вывод process id текущего процесса.

  • g[,function[,function...]] профиль определенного списка функций.

  • L отмечает каждый вывод номером строки исходного файла.

  • n отмечает каждый вывод текущей глубиной вложения функции.

  • N отмечает каждый вывод порядковаым номером.

  • o[,filename] переписывает вывод оталдки в файле.

  • O[,filename] аналогично o[,filename], но сбрасывает вывод после каждой операции.

  • p[,pid[,pid...]] ограничивает вывод указанным списком process ids.

  • P отмечает каждый вывод именем процесса.

  • r перезагружает уровень отступа к нолю.

  • t[,depth] ограничивает вложение функции указанной глубиной.

  • T отмечает каждый вывод текущей меткой времени.

Например, чтобы проследить вызовы и выводимую отладочную информацию только для "jointx" и переписать содержание файла "/tmp/dbug/jointx", используйте "t:d,jointx:o,/tmp/dbug/jointx". Вышеупомянутое может быть написано как ClusterJHelper.newDbug().trace().debug("jointx").output("/tmp/dbug/jointx").set();

4.3.1.13.1. Резюме
public interface Dbug {
// Public Methodspublic abstract Dbug append(String fileName);
public abstract Dbug debug(String string );
public abstract Dbug debug( String[] strings );
public abstract Dbug flush();
public abstract String get();
public abstract Dbug output(String fileName );
public abstract void pop();
public abstract void print(String keyword ,
String message);

public abstract void push();
public abstract void push(String state );
public abstract void set();
public abstract void set(String state );
public abstract Dbug trace();
}
4.3.1.13.2. append(String)
public abstract Dbug append(String fileName);

Определите имя файла для вывода отладки (добавление).

Таблица 4.26. append(String)

Параметр Описание
fileName название файла
return this

4.3.1.13.3. debug(String)
public abstract Dbug debug (String string);

Установите список ключевых слов отладки.

Таблица 4.27. debug(String)

Параметр Описание
string Разделенные запятой ключевые слова отладки
return this

4.3.1.13.4. debug(String[])
public abstract Dbug debug (String[] strings);

Установите список ключевых слов отладки.

Таблица 4.28. debug(String[])

Параметр Описание
strings ключевые слова отладки
return this

4.3.1.13.5. flush()
public abstract Dbug flush();

Принудительный сброс после каждой операции по выводу.

Таблица 4.29. flush()

Параметр Описание
return this

4.3.1.13.6. get()
public abstract String get();

Возвратите текущее состояние.

Таблица 4.30. get()

Параметр Описание
return текущее состояние

4.3.1.13.7. output(String)
public abstract Dbug output(String fileName);

Определите имя файла для вывода отладки (перезапись).

Таблица 4.31. output(String)

Параметр Описание
fileName название файла
return this

4.3.1.13.8. pop()
public abstract void pop();

Вернуть текущее состояние. Новый статус будет ранее сохраненным статусом.

4.3.1.13.9. print(String, String)
public abstract void print (String keyword,
String message);

Напечатайте сообщение отладки.

4.3.1.13.10. push()
public abstract void push();

Сохраните текущее состояние, как определено методами.

4.3.1.13.11. push(String)
public abstract void push (String state);

Сохраните текущее состояние и установите параметр как новый статус.

Таблица 4.32. push(String)

Параметр Описание
state новый статус

4.3.1.13.12. set()
public abstract void set();

Установите текущее состояние, как определено методами.

4.3.1.13.13. set(String)
public abstract void set(String state);

Установите текущее состояние от параметра.

Таблица 4.33. set(String)

Параметр Описание
state новый статус

4.3.1.13.14. trace()
public abstract Dbug trace();

Установите флаг трассировки.

Таблица 4.34. trace()

Параметр Описание
return this

4.3.1.14. DynamicObject

public abstract class 
DynamicObject {
// Public Constructorspublic DynamicObject();
// Public Methodspublic final ColumnMetadata[] columnMetadata();
public final DynamicObjectDelegate delegate();
public final void delegate(DynamicObjectDelegate delegate );
public Boolean found();
public final Object get (int columnNumber);
public final void set (int columnNumber,
Object value);

public String table();
}

Унаследовано от java.lang.Object: equals , getClass , hashCode , notify , notifyAll , toString , wait

4.3.1.15. DynamicObjectDelegate

public interface DynamicObjectDelegate
 {
// Public Methodspublic abstract ColumnMetadata[] columnMetadata();
public abstract Boolean found();
public abstract void found (Boolean found);
public abstract Object get(int columnNumber);
public abstract void release();
public abstract void set (int columnNumber,
Object value);

public abstract boolean wasReleased();
}

4.3.1.16. LockMode

Способы блокировки для операций чтения.

  • SHARED: Установите коллективную блокировку на строках.

  • EXCLUSIVE: Установите монопольную блокировку на строках.

  • READ_COMMITTED: Не устанавливайте блокировку, но прочитайте новые переданные значения.

4.3.1.16.1. Резюме
public final class 
LockMode extends, Enum<LockMode>
 {
// Public Static Fieldspublic static final LockMode EXCLUSIVE ;
public static final LockMode READ_COMMITTED ;
public static final LockMode SHARED ;
// Public Static Methodspublic static LockMode valueOf(String name );
public static LockMode[] values();
}

Унаследовано от java.lang.Enum: compareTo , equals , getDeclaringClass , hashCode , Имя , ordinal , toString , valueOf

Унаследовано от java.lang.Object: getClass , notify , notifyAll , wait

4.3.1.17. Query

Экземпляр запроса представляет определенный запрос со связанными параметрами. Экземпляр создается методом com.mysql.clusterj.Session.<T>createQuery(com.mysql.clusterj.query.QueryDefinition<T>) .

4.3.1.17.1. Резюме
public interface 
Query<E> {
// Public Static Fields public static final String INDEX_USED = "IndexUsed";
public static final String SCAN_TYPE = "ScanType";
public static final String SCAN_TYPE_INDEX_SCAN = "INDEX_SCAN";
public static final String SCAN_TYPE_PRIMARY_KEY = "PRIMARY_KEY";
public static final String SCAN_TYPE_TABLE_SCAN = "TABLE_SCAN";
public static final String SCAN_TYPE_UNIQUE_KEY = "UNIQUE_KEY";
// Public Methodspublic abstract int deletePersistentAll();
public abstract Results<E> execute(Object parameter );
public abstract Results<E> execute(Object[] parameters );
public abstract Results<E> execute(Map<String, ?> parameters);
public abstract Map<String, Object> explain();
public abstract List<E> getResultList();
public abstract void setLimits(long skip,
long limit);

public abstract void setOrdering(Ordering ordering,
String[] orderingFields);

public abstract void setParameter(String parameterName ,
Object value);

}
4.3.1.17.2. INDEX_USED
public static final String INDEX_USED = "IndexUsed";

Запрос объясняет использование ключа индекс.

4.3.1.17.3. SCAN_TYPE
public static final String SCAN_TYPE = "ScanType";

Запрос объясняет ключ типа просмотра.

4.3.1.17.4. SCAN_TYPE_INDEX_SCAN
public static final String SCAN_TYPE_INDEX_SCAN = "INDEX_SCAN";

Запрос объясняет значение типа просмотра для просмотра индекса.

4.3.1.17.5. SCAN_TYPE_PRIMARY_KEY
public static final String SCAN_TYPE_PRIMARY_KEY = "PRIMARY_KEY";

Запрос объясняет значение типа просмотра для первичного ключа.

4.3.1.17.6. SCAN_TYPE_TABLE_SCAN
public static final String SCAN_TYPE_TABLE_SCAN = "TABLE_SCAN";

Запрос объясняет значение типа просмотра для сканирования таблицы.

4.3.1.17.7. SCAN_TYPE_UNIQUE_KEY
public static final String SCAN_TYPE_UNIQUE_KEY = "UNIQUE_KEY";

Запрос объясняет значение типа просмотра для уникального ключа.

4.3.1.17.8. deletePersistentAll()
public abstract int deletePersistentAll();

Удалите экземпляры, которые удовлетворяют условиям запроса.

Таблица 4.35. deletePersistentAll()

Параметр Описание
return количество удаленных экземпляров

4.3.1.17.9. execute(Map<String, ?>)
public abstract Results<E> execute(Map<String, ?> parameters);

Выполните запрос с одним или несколькими названными параметрами. Параметры найдены по имени.

Таблица 4.36. execute(Map<String, ?>)

Параметр Описание
parameters Параметры для запроса
return результат запроса

4.3.1.17.10. execute(Object...)
public abstract Results<E> execute(Object[] parameters);

Выполните запрос с одним или несколькими названными параметрами. Параметры найдены по порядку, в котором они были объявлены в запросе.

Таблица 4.37. execute(Object...)

Параметр Описание
parameters Параметр для запроса
return Результат запроса

4.3.1.17.11. execute(Object)
public abstract Results<E> execute(Object parameter );

Выполните запрос точно с одним параметром.

Таблица 4.38. execute(Object)

Параметр Описание
parameter Параметр для запроса
return Результат запроса

4.3.1.17.12. explain()
public abstract Map<String, Object> explain();

Объясните, как этот запрос будет или был выполнен. Если вызван прежде, чем все параметры связаны, бросит ClusterJUserException. Возвратит карту пар key:value, которые объясняют, как запрос будет или был выполнен. Детали могут быть получены, вызывая toString на значении. Следующие ключи возвращены:

  • ScanType: тип просмотра:

    • PRIMARY_KEY: запрос использует ключевой поиск с первичным ключом.

    • UNIQUE_KEY: запрос используемый ключевой поиск с уникальным ключом.

    • INDEX_SCAN: запрос использовал просмотр диапазона с неуникальным ключом.

    • TABLE_SCAN: запрос использовал сканирование таблицы.

  • IndexUsed: название используемого индекса, если есть.

Таблица 4.39. explain()

Параметр Описание
return данные о выполнении этого запроса

Исключения

ClusterJUserException

если не все параметры связаны

4.3.1.17.13. getResultList()
public abstract List<E> getResultList();

Получите результаты как список.

Таблица 4.40. getResultList()

Параметр Описание
return Результат

Исключения

ClusterJUserException

если не все параметры связаны

ClusterJDatastoreException

если об исключении сообщает хранилище данных

4.3.1.17.14. setLimits(long, long)
public abstract void setLimits(long skip,
long limit);

Установите пределы для результатов возврата. Выполнение запроса изменяется, чтобы возвратить только подмножество результатов. Если фильтр обычно возвращал бы 100 случаев, skip установлен в 50, а limit в 40, то первые 50 результатов, которые были бы возвращены, пропускаются, следующие 40 результатов возвращены, а остальные 10 проигнорированы.

Skip должен быть больше или равным 0. Limit должен быть больше или равным 0. Пределы не могут использоваться с deletePersistentAll.

Таблица 4.41. setLimits(long, long)

Параметр Описание
skip сколько результатов пропустить
limit сколько результатов возвратить после пропуска, используйте Long.MAX_VALUE, если нет ограничения.

4.3.1.17.15. setOrdering(Query.Ordering, String...)
public abstract void setOrdering(Ordering ordering,
String[] orderingFields);

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

  • Должен быть индекс, определенный на столбцах, отображенных к указанным полям в нужном порядке.

  • Не должно быть никаких промежутков в полях относительно индекса.

  • Все области должны быть в индексе, но не все области в индексе должны быть в порядке полей.

  • Если применен предикат "in" в фильтре на области в порядке, это может использоваться только с первой областью.

  • Если какое-либо из этих условий нарушено, ClusterJUserException брошен, когда запрос выполняется.

Если применен предикат "in", каждый элемент в параметре определяет отдельный диапазон, и упорядочивание выполняется в том диапазоне. Может быть лучший (более эффективный) индекс на основе фильтра, но определение порядка вынудит запрос использовать индекс, который содержит заданные области.

Таблица 4.42. setOrdering(Query.Ordering, String...)

Параметр Описание
ordering Ordering.ASCENDING или Ordering.DESCENDING
orderingFields поля для сортировки

4.3.1.17.16. setParameter(String, Object)
public abstract void setParameter(String parameterName ,
Object value);

Установите значение параметра. Если вызвано многократно для того же самого параметра, тихо заменит значение.

Таблица 4.43. setParameter(String, Object)

Параметр Описание
parameterName название параметра
value значение для параметра

4.3.1.18. Query.Ordering

Упорядочивание

4.3.1.18.1. Резюме
public static final 
class Query.Ordering extends, 
Enum<Ordering> {
// Public Static Fieldspublic static final Ordering ASCENDING ;
public static final Ordering DESCENDING ;
// Public Static Methodspublic static Ordering valueOf(String name );
public static Ordering[] values();
}

Унаследовано от java.lang.Enum: compareTo , equals , getDeclaringClass , hashCode , Имя , ordinal , toString , valueOf

Унаследовано от java.lang.Object: getClass , notify , notifyAll , wait

4.3.1.19. Results

Результаты запроса.

4.3.1.19.1. Резюме
public interface 
Results<E> extends,
Iterable<E> {
// Public Methodspublic abstract Iterator<E> iterator();
}
4.3.1.19.2. iterator()
public abstract Iterator<E> iterator();

Определен: метод iterator в интерфейсе Iterable.

Получите итератор по результатам запроса.

Таблица 4.44. iterator()

Параметр Описание
return итератор

4.3.1.20. Session

Сессия это основной пользовательский интерфейс к кластеру. Сессия расширяет AutoCloseable, таким образом, это может использоваться в шаблоне try-with-resources. Этот шаблон позволяет приложению создать сессию в декларации try и независимо от результата блока try/catch/finally clusterj очистит и закроет сессию. Если блок try выходит с открытой транзакцией, транзакция будет отменена, прежде чем сессия закрывается.

4.3.1.20.1. Резюме
public interface 
Session extends, AutoCloseable {
// Public Methodspublic abstract void close();
public abstract Query<T> createQuery(QueryDefinition<T> qd);
public abstract Transaction currentTransaction();
public abstract void deletePersistent( Class<T> cls ,
Object key);

public abstract void deletePersistent(Object instance );
public abstract int deletePersistentAll(Class<T> cls);
public abstract void deletePersistentAll(Iterable<?> instances);
public abstract T find(Class<T> cls ,
Object key);

public abstract void flush();
public abstract Boolean found(Object instance );
public abstract QueryBuilder getQueryBuilder();
public abstract boolean isClosed();
public abstract T load(T instance );
public abstract T makePersistent(T instance);
public abstract Iterable<?> makePersistentAll( Iterable<?> instances);
public abstract void markModified(Object instance ,
String fieldName);

public abstract T newInstance(Class<T> cls );
public abstract T newInstance(Class<T> cls,
Object key);

public abstract void persist(Object instance );
public abstract T release(T obj);
public abstract void remove(Object instance );
public abstract T savePersistent(T instance);
public abstract Iterable<?> savePersistentAll( Iterable<?> instances);
public abstract void setLockMode(LockMode lockmode );
public abstract void setPartitionKey(Class<?> cls,
Object key);

public abstract String unloadSchema(Class<?> cls );
public abstract void updatePersistent(Object instance);
public abstract void updatePersistentAll(Iterable<?> instances);
}
4.3.1.20.2. close()
public abstract void close();

Определен: метод close в интерфейсе AutoCloseable.

Закройте эту сессию.

4.3.1.20.3. createQuery(QueryDefinition<T>)
public abstract Query<T> createQuery(QueryDefinition<T> qd);

Создайте запрос из QueryDefinition.

Таблица 4.45. createQuery(QueryDefinition<T>)

Параметр Описание
qd определение запроса
return экземпляр запроса

4.3.1.20.4. currentTransaction()
public abstract Transaction currentTransaction();

Получите текущий com.mysql.clusterj.Transaction.

Таблица 4.46. currentTransaction()

Параметр Описание
return транзакция

4.3.1.20.5. deletePersistent(Class<T>, Object)
public abstract void deletePersistent(Class<T> cls ,
Object key);

Удалите экземпляр класса из базы данных, данной ее первичным ключом. Для ключей отдельного столбца основной параметр это обертка (например, Integer). Для многостолбцовых ключей основной параметр Object[], в котором элементы соответствуют первичным ключам в порядке их определения в схеме.

Таблица 4.47. deletePersistent(Class<T>, Object)

Параметр Описание
cls интерфейс или динамический класс
key primary key

4.3.1.20.6. deletePersistent(Object)
public abstract void deletePersistent(Object instance );

Удалите экземпляр из базы данных. Только идентификационная область используется, чтобы определить, какой экземпляр должен быть удален. Если экземпляр не существует в базе данных, исключение брошено.

Таблица 4.48. deletePersistent(Object)

Параметр Описание
instance экземпляр, чтобы удалить

4.3.1.20.7. deletePersistentAll(Class<T>)
public abstract int deletePersistentAll(Class<T> cls );

Удалите все экземпляры этого класса из базы данных. Никакое исключение не брошено, даже при отсутствии экземпляров в базе данных.

Таблица 4.49. deletePersistentAll(Class<T>)

Параметр Описание
cls интерфейс или динамический класс
return сколько удалено экземпляров

4.3.1.20.8. deletePersistentAll(Iterable<?>)
public abstract void deletePersistentAll(Iterable<?> instances);

Удалите все экземпляры параметра из базы данных.

Таблица 4.50. deletePersistentAll(Iterable<?>)

Параметр Описание
instances экземпляры, чтобы удалить

4.3.1.20.9. find(Class<T>, Object)
public abstract T find (Class<T> cls,
Object key);

Найдите определенный экземпляр его первичным ключом. Ключ должен иметь тот же самый тип как первичный ключ, определенный соответствующим параметром cls. Основной параметр это обернутая версия типа примитива ключа, например, Integer для типов ключа INT, Long для BIGINT или String для типов char и varchar. Для многостолбцовых первичных ключей основной параметр Object[], каждый элемент которого является компонентом первичного ключа. Элементы должны быть в порядке декларации столбцов (не обязательно порядок, определенный в CONSTRAINT ... PRIMARY KEY) в CREATE TABLE.

Таблица 4.51. find(Class<T>, Object)

Параметр Описание
cls интерфейс или динамический класс, чтобы найти экземпляр
key ключ экземпляра, чтобы найти
return экземпляр интерфейса или динамического класса с указанным ключом

4.3.1.20.10. flush()
public abstract void flush();

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

4.3.1.20.11. found(Object)
public abstract Boolean found(Object instance);

Строка соответствовала этому экземпляру, найденному в базе данных?

Таблица 4.52. found(Object)

Параметр Описание
instance экземпляр, соответствующий строке в базе данных
return
  • пустой указатель, если экземпляр пустой или был создан через newInstance и никогда не загружался

  • true, если экземпляр был возвращен из поиска или запроса или создан через newInstance и успешно загружен

  • false, если экземпляр был создан через newInstance и не найден


См. также
load(T) , newInstance(java.lang.Class<T>, java.lang.Object).
4.3.1.20.12. getQueryBuilder()
public abstract QueryBuilder getQueryBuilder();

Получите QueryBuilder.

Таблица 4.53. getQueryBuilder()

Параметр Описание
return конструктор запросов

4.3.1.20.13. isClosed()
public abstract boolean isClosed();

Эта сессия закрывается?

Таблица 4.54. isClosed()

Параметр Описание
return true, если сессия закрывается

4.3.1.20.14. load(T)
public abstract T load (T instance);

Загрузите экземпляр из базы данных в память. Загрузка асинхронная и будет выполнена, когда операционный доступ к базе данных требования выполняется: find, flush или query. Экземпляр должен быть возвращен из поиска или запроса или создан через session.newInstance, и его первичный ключ инициализируется.

Таблица 4.55. load(T)

Параметр Описание
instance экземпляр, чтобы загрузить
return экземпляр

См. также
found(java.lang.Object).
4.3.1.20.15. makePersistent(T)
public abstract T makePersistent(T instance );

Вставьте экземпляр в базу данных. Если экземпляр уже существует в базе данных, исключение брошено.

Таблица 4.56. makePersistent(T)

Параметр Описание
instance экземпляр, чтобы вставить
return экземпляр

См. также
savePersistent(T)
4.3.1.20.16. makePersistentAll(Iterable<?>)
public abstract Iterable<?> makePersistentAll(Iterable<?> instances);

Вставьте экземпляры в базу данных.

Таблица 4.57. makePersistentAll(Iterable<?>)

Параметр Описание
instances экземпляры, чтобы вставить.
return экземпляры

4.3.1.20.17. markModified(Object, String)
public abstract void markModified(Object instance,
String fieldName);

Отметьте область в объекте, как измененную, таким образом, это сбрасывается.

Таблица 4.58. markModified(Object, String)

Параметр Описание
instance постоянный экземпляр
fieldName область, чтобы отметить, как измененную

4.3.1.20.18. newInstance(Class<T>)
public abstract T newInstance(Class<T> cls );

Создайте экземпляр интерфейса или динамического класса, который отображается к таблице.

Таблица 4.59. newInstance(Class<T>)

Параметр Описание
cls интерфейс, для которого можно создать экземпляр
return экземпляр, который осуществляет интерфейс

4.3.1.20.19. newInstance(Class<T>, Object)
public abstract T newInstance(Class<T> cls,
Object key);

Создайте экземпляр интерфейса или динамического класса, который отображается к таблице и устанавливает первичный ключ нового экземпляра. Новый экземпляр может использоваться, чтобы создать, удалить или обновить запись в базе данных.

Таблица 4.60. newInstance(Class<T>, Object)

Параметр Описание
cls интерфейс, для которого можно создать экземпляр
return экземпляр, который осуществляет интерфейс

4.3.1.20.20. persist(Object)
public abstract void persist(Object instance );

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

Таблица 4.61. persist(Object)

Параметр Описание
instance экземпляр, чтобы вставить

4.3.1.20.21. release(T)
public abstract T release (T obj);

Высвободите ресурсы, связанные с экземпляром. Экземпляр должен быть запросом или объектом области, полученным через session.newInstance(T.class), find(T.class), множеством T[] или итератором. Высвобожденные ресурсы могут включать прямые буфера, используемые, чтобы содержать данные экземпляра. Высвобожденные ресурсы могут быть возвращены в пул.

Таблица 4.62. release(T)

Параметр Описание
obj объект области типа T, итератор или множество T[]
return входной параметр

Исключения

ClusterJUserException

если экземпляр не объект области T, итератор или множество T[], или если объект используется после вызова этого метода.

4.3.1.20.22. remove(Object)
public abstract void remove(Object instance);

Удалите экземпляр из базы данных. У этого метода есть идентичная семантика с deletePersistent.

Таблица 4.63. remove(Object)

Параметр Описание
instance экземпляр, чтобы удалить

4.3.1.20.23. savePersistent(T)
public abstract T savePersistent(T instance );

Сохраните экземпляр в базе данных, не проверяя на существование. Идентификационная область используется, чтобы определить, какой экземпляр должен быть сохранен. Если экземпляр будет существовать в базе данных, то это будет обновлено. Если экземпляр не будет существовать, он будет создан.

Таблица 4.64. savePersistent(T)

Параметр Описание
instance экземпляр, чтобы обновить

4.3.1.20.24. savePersistentAll(Iterable<?>)
public abstract Iterable<?> savePersistentAll(Iterable<?> instances);

Обновите все экземпляры параметра в базе данных.

Таблица 4.65. savePersistentAll(Iterable<?>)

Параметр Описание
instances экземпляры, чтобы обновить

4.3.1.20.25. setLockMode(LockMode)
public abstract void setLockMode(LockMode lockmode );

Установите режим блокировки для операций чтения. Это немедленно вступит в силу и останется в силе, пока эта сессия не закрывается, или этот метод не вызовут снова.

Таблица 4.66. setLockMode(LockMode)

Параметр Описание
lockmode Режим LockMode

4.3.1.20.26. setPartitionKey(Class<?>, Object)
public abstract void setPartitionKey(Class<?> cls ,
Object key);

Установите ключ разделения для следующей транзакции. Ключ должен иметь тот же самый тип как первичный ключ, определенный таблицей, соответствующей параметру cls. Основной параметр это обернутая версия типа примитива ключа, например, Integer для типов ключа INT, Long для BIGINT или String для char и varchar. Для многостолбцовых первичных ключей основной параметр это Object[], каждый элемент которого является компонентом первичного ключа. Элементы должны быть в порядке декларации столбцов (не обязательно это порядок, определенный в CONSTRAINT ... PRIMARY KEY) в CREATE TABLE.

Таблица 4.67. setPartitionKey(Class<?>, Object)

Параметр Описание
key первичный ключ отображенной таблицы

Исключения

ClusterJUserException

если транзакция включается в список

ClusterJUserException

если ключ разделения пустой

ClusterJUserException

если вызвано дважды в той же самой транзакции

ClusterJUserException

если ключ разделения имеет неправильный тип

4.3.1.20.27. unloadSchema(Class<?>)
public abstract String unloadSchema(Class<?> cls );

Выгрузите определение схемы для класса. Это должно быть сделано после того, как определение схемы изменилось в базе данных из-за изменения таблицы командой alter. В следующий раз, когда класс используется, схема будет перезагружена.

Таблица 4.68. unloadSchema(Class<?>)

Параметр Описание
cls класс, для которого выгружена схема
return название схемы, которая была выгружена

4.3.1.20.28. updatePersistent(Object)
public abstract void updatePersistent(Object instance );

Обновите экземпляр в базе данных, не обязательно получая его. Идентификационная область используется, чтобы определить, какой экземпляр должен быть обновлен. Если экземпляр не существует в базе данных, исключение брошено. Этот метод не может использоваться, чтобы изменить первичный ключ.

Таблица 4.69. updatePersistent(Object)

Параметр Описание
instance экземпляр, чтобы обновить

4.3.1.20.29. updatePersistentAll(Iterable<?>)
public abstract void updatePersistentAll(Iterable<?> instances);

Обновите все экземпляры параметра в базе данных.

Таблица 4.70. updatePersistentAll(Iterable<?>)

Параметр Описание
instances экземпляры, чтобы обновить

4.3.1.21. SessionFactory

SessionFactory представляет кластер.

4.3.1.21.1. Резюме
public interface SessionFactory
 {
// Public Methodspublic abstract void close();
public abstract State currentState();
public abstract List<Integer> getConnectionPoolSessionCounts();
public abstract int getRecvThreadActivationThreshold();
public abstract short[] getRecvThreadCPUids();
public abstract Session getSession();
public abstract Session getSession(Map properties );
public abstract void reconnect();
public abstract void reconnect(int timeout);
public abstract void setRecvThreadActivationThreshold(int threshold);
public abstract void setRecvThreadCPUids(short[] cpuids );
}
4.3.1.21.2. close()
public abstract void close();

Закройте эту фабрику сессии. Высвободите все ресурсы. Установите текущее состояние в Closed. Когда закрыто, вызовы getSession бросят ClusterJUserException.

4.3.1.21.3. currentState()
public abstract State currentState();

Получите текущее состояние этой фабрики сессии.

Введено в

7.5.7

См. также
com.mysql.clusterj.SessionFactory.State
4.3.1.21.4. getConnectionPoolSessionCounts()
public abstract List<Integer> getConnectionPoolSessionCounts();

Получите список, содержащий количество открытых сессий для каждой связи в пуле связи.

Введено в

7.3.14, 7.4.12, 7.5.2

4.3.1.21.5. getRecvThreadActivationThreshold()
public abstract int getRecvThreadActivationThreshold();

Получите порог активации потока для всех связей в пуле связи. 16 или более значит, что потоки никогда не используются в качестве приемников. 0 значит, что поток всегда активен, и это сохраняет пул для его собственного исключительного использования, эффективно блокируя все пользовательские потоки от становления приемниками. В таких экземплярах нужно соблюдать осторожность, чтобы гарантировать, что поток получения не конкурирует с пользовательской потоком за ресурсы CPU, предпочтительно для него быть привязанным к CPU для его собственного исключительного использования. По умолчанию равняется 8.

Введено в

7.5.7

4.3.1.21.6. getRecvThreadCPUids()
public abstract short[] getRecvThreadCPUids();

Получить привязку потока к cpu для всех связей в пуле связи. Если поток получения не будет связан с CPU, соответствующее значение будет -1.

Введено в

7.5.7

4.3.1.21.7. getSession()
public abstract Session getSession();

Создайте Session, чтобы использовать с кластером, используя все свойства SessionFactory.

Таблица 4.71. getSession()

Параметр Описание
return session

4.3.1.21.8. getSession(Map)
public abstract Session getSession(Map properties );

Создайте сессию, чтобы использовать с кластером, отвергнув некоторые свойства. Свойства PROPERTY_CLUSTER_CONNECTSTRING, PROPERTY_CLUSTER_DATABASE и PROPERTY_CLUSTER_MAX_TRANSACTIONS не могут быть перекрыты.

Таблица 4.72. getSession(Map)

Параметр Описание
properties перекрытие некоторых свойств для этой сессии
return session

4.3.1.21.9. reconnect()
public abstract void reconnect();

Повторно подключите эту фабрику сессии, используя новое определенное значение тайм-аута. Оно, возможно, было определено в оригинальных свойствах сессии или, возможно, было изменено прикладным вызовом reconnect(int timeout).

См. также
reconnect(int)
Введено в

7.5.7

4.3.1.21.10. reconnect(int)
public abstract void reconnect(int timeout);

Разъедините и снова соедините эту фабрику сессии, используя указанный тайм-аут и измените сохраненное значение тайм-аута. Это тяжелый метод и должен редко использоваться. Это предназначается для случаев, где процесс, в котором работает clusterj, потерял возможность соединения с кластером и обычно не в состоянии функционировать. Повторное соединение сделано в нескольких фазах. Во-первых, фабрика сессии устанавливает статус в Reconnecting и начинает повторно подключать поток, чтобы управлять процедурой повторного соединения. В статусе Reconnecting методы getSession бросают ClusterJUserException и пул связи недоступен, пока все сессии не закрылись. Если сессии не закрываются обычно после тайм-аута, сессии будут вынуждены закрыться. Затем все связи в пуле связи закрываются, что освобождает их слоты связи в кластере. Наконец, пул связи воссоздается, используя оригинальные свойства пула связи, и статус устанавливается в Open. Процедура повторного соединения асинхронная. Чтобы наблюдать прогресс процедуры, используйте методы currentState и getConnectionPoolSessionCounts. Если значение тайм-аута отлично от нуля, автоматическое повторное соединение будет сделано clusterj после нахождения сбоя сети. Если значение тайм-аута 0, автоматическое повторное соединение отключено. Если текущее состояние этой фабрики сессии Reconnecting, этот метод тихо ничего не делает.

Таблица 4.73. reconnect(int)

Параметр Описание
timeout Значение тайм-аута в секундах, 0, чтобы отключить автоматическое повторное соединение

Введено в

7.5.7

4.3.1.21.11. setRecvThreadActivationThreshold(int)
public abstract void setRecvThreadActivationThreshold(int threshold);

Установите порог активации потока получения для всех связей в пуле связи. 16 или выше значит, что поток никогда не используется в качестве приемника. 0 значит, что поток всегда активен и это сохраняет пул для его собственного исключительного использования, эффективно блокируя все пользовательские потоки от становления приемниками. В таких экземплярах нужно соблюдать осторожность, чтобы гарантировать, что поток получения не конкурирует с пользовательским потоком за ресурсы CPU, предпочтительно для него быть привязанным к CPU для его собственного исключительного использования. По умолчанию равняется 8.

Исключения

ClusterJUserException

если значение отрицательно

ClusterJFatalInternalException

если метод терпит неудачу из-за некоторой внутренней причины

Введено в

7.5.7

4.3.1.21.12. setRecvThreadCPUids(short[])
public abstract void setRecvThreadCPUids(short[] cpuids );

Свяжите потоки получения с cpuid для всех связей в пуле связи. Определите -1, чтобы сбросить привязку. cpuid должен быть между 0 и количеством CPU в машине.

Исключения

ClusterJUserException

если cpuid неправильный или если число элементов в cpuids не равно количеству связей в пуле связи.

ClusterJFatalInternalException

если привязка терпит неудачу из-за некоторой внутренней причины

Введено в

7.5.7

4.3.1.22. SessionFactory.State

Статус этой фабрики сессии.

4.3.1.22.1. Резюме
public static final 
class SessionFactory.State extends, 
Enum<State> {
// Public Static Fieldspublic static final State Closed ;
public static final State Open ;
public static final State Reconnecting ;
// Public Static Methodspublic static State valueOf(String name );
public static State[] values();
}

Унаследовано от java.lang.Enum: compareTo , equals , getDeclaringClass , hashCode , Имя , ordinal , toString , valueOf

Унаследовано от java.lang.Object: getClass , notify , notifyAll , wait

Введено в

7.5.7

4.3.1.23. SessionFactoryService

Этот интерфейс определяет сервис для создлания SessionFactory из свойств Map<String, String>.

4.3.1.23.1. Резюме
 public interface 
SessionFactoryService {
// Public Methodspublic abstract SessionFactory getSessionFactory( Map<String, String> props);
}
4.3.1.23.2. getSessionFactory(Map<String, String>)
public abstract SessionFactory getSessionFactory(Map<String, String> props);

Создайте или получите фабрику сессии. Если фабрика сессии с тем же самым значением PROPERTY_CLUSTER_CONNECTSTRING уже создана в VM, существующая фабрика возвращена, независимо от того, совпадают ли другие свойства фабрики с определенными в Map.

Таблица 4.74. getSessionFactory(Map<String, String>)

Параметр Описание
props свойства для фабрики сессии, в которых ключи определяются в Constants и значения описывают окружающую среду
return session factory

См. также
com.mysql.clusterj.Constants

4.3.1.24. Transaction

Транзакция представляет пользовательскую транзакцию, активную в кластере.

4.3.1.24.1. Резюме
public interface Transaction
 {
// Public Methodspublic abstract void begin();
public abstract void commit();
public abstract boolean getRollbackOnly();
public abstract boolean isActive();
public abstract void rollback();
public abstract void setRollbackOnly();
}
4.3.1.24.2. begin()
public abstract void begin ();

Начать транзакцию.

4.3.1.24.3. commit()
public abstract void commit();

Передать транзакцию.

4.3.1.24.4. getRollbackOnly()
public abstract boolean getRollbackOnly();

Эта транзакция была отмечена как rollback only?

Таблица 4.75. getRollbackOnly()

Параметр Описание
return true, если транзакция была отмечена как rollback only

4.3.1.24.5. isActive()
public abstract boolean isActive();

Есть ли в настоящее время активная транзакция?

Таблица 4.76. isActive()

Параметр Описание
return true, если транзакция активна

4.3.1.24.6. rollback()
public abstract void rollback();

Отменить транзакцию.

4.3.1.24.7. setRollbackOnly()
public abstract void setRollbackOnly();

Отметьте эту транзакцию как rollback only. После того, как этот метод вызывают, commit() отменит транзакцию и бросит исключение, rollback() отменит транзакцию и не бросит исключение.

4.3.2. com.mysql.clusterj.annotation

Этот пакет предоставляет аннотации для интерфейсов модели объекта области, отображенных к таблицам базы данных.

4.3.2.1. Column

Аннотация для столбца в базе данных.

4.3.2.1.1. Резюме
@Target(value={java.lang.annotation.ElementType.FIELD,
java.lang.annotation.ElementType.METHOD}) 
@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) 
public @interface Column {
public String Имя ;
public String allowsNull ;
public String defaultValue ;
}
4.3.2.1.2. allowsNull

Позволяет ли столбец нулевым значениям быть вставленными. Это отвергает определение базы данных и требует, чтобы приложение обеспечило ненулевые значения для столбцы базы данных.

Таблица 4.77. allowsNull

Параметр Описание
return позволяет ли столбец нулевым значениям быть вставленными

4.3.2.1.3. defaultValue

Значение по умолчанию для этой столбца.

Таблица 4.78. defaultValue

Параметр Описание
return значение по умолчанию для этой столбца

4.3.2.1.4. name

Название столбца.

Таблица 4.79. name

Параметр Описание
return Название столбца

4.3.2.2. Columns

Аннотация для групп столбцов. Эта аннотация используется для многостолбцовых структур, таких как индексы и ключи.

4.3.2.2.1. Резюме
@Target(value={java.lang.annotation.ElementType.FIELD,
java.lang.annotation.ElementType.METHOD,
java.lang.annotation.ElementType.TYPE}) 
@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) 
public @interface Columns {
public Column[] value ;
}
4.3.2.2.2. value

Информация об аннотации столбцов.

Таблица 4.80. value

Параметр Описание
return собственно столбцы

4.3.2.3. Extension

Аннотация для нестандартного расширения.

4.3.2.3.1. Резюме
 
@Target(value={java.lang.annotation.ElementType.TYPE,
java.lang.annotation.ElementType.FIELD,
java.lang.annotation.ElementType.METHOD})
@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME)
public @interface Extension
 {
public String vendorName ;
public String key ;
public String value ;
}
4.3.2.3.2. key

Ключ для расширения (требуется).

Таблица 4.81. key

Параметр Описание
return Собственно ключ

4.3.2.3.3. value

Значение для расширения (требуется).

Таблица 4.82. value

Параметр Описание
return Значение

4.3.2.3.4. vendorName

Продавец, к которому расширение относится (требуется, чтобы сделать ключ уникальным).

Таблица 4.83. vendorName

Параметр Описание
return vendor

4.3.2.4. Extensions

Аннотация для группы расширений.

4.3.2.4.1. Резюме
@Target(value={java.lang.annotation.ElementType.TYPE,
java.lang.annotation.ElementType.FIELD,
java.lang.annotation.ElementType.METHOD})
@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME)
public @interface Extensions
 {
public Extension[] value ;
}
4.3.2.4.2. value

Расширения.

Таблица 4.84. value

Параметр Описание
return Расширения

4.3.2.5. Index

Аннотация для индекса базы данных.

4.3.2.5.1. Резюме
@Target(value={java.lang.annotation.ElementType.TYPE,
java.lang.annotation.ElementType.FIELD,
java.lang.annotation.ElementType.METHOD})
@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME)
public @interface Index{
public String Имя ;
public String unique ;
public Column[] columns ;
}
4.3.2.5.2. columns

Столбцы, которые составляют этот индекс.

Таблица 4.85. columns

Параметр Описание
return Столбцы, которые составляют этот индекс

4.3.2.5.3. name

Название индекса.

Таблица 4.86. name

Параметр Описание
return Название индекса

4.3.2.5.4. unique

Уникален ли этот индекс.

Таблица 4.87 unique

Параметр Описание
return Уникален ли этот индекс

4.3.2.6. Indices

Аннотация для группы индексов. Это используется на классе, где есть многократные определенные индексы.

4.3.2.6.1. Резюме
@Target(value=java.lang.annotation.ElementType.TYPE) 
@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) 
public @interface Indices {
public Index[] value ;
}
4.3.2.6.2. value

Индексы.

Таблица 4.88 value

Параметр Описание
return Индексы

4.3.2.7. Lob

Аннотация для Large Object (lob). Эта аннотация может использоваться с типами byte[] и InputStream для столбцов двоичных данных, с String и InputStream для символьных столбцов.

4.3.2.7.1. Резюме
@Target(value={java.lang.annotation.ElementType.FIELD,
java.lang.annotation.ElementType.METHOD})
@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME)
public @interface Lob
{
}

4.3.2.8. NotPersistent

Аннотация, чтобы определить, что участник не постоянный. Если используется, это единственная аннотация, позволенная на участнике.

4.3.2.8.1. Резюме
@Target(value={java.lang.annotation.ElementType.FIELD,
java.lang.annotation.ElementType.METHOD})
@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME)
public @interface NotPersistent
 {
}

4.3.2.9. NullValue

Перечисление значений обработки "null-value". Это поведение определяется в @Persistent аннотации.

4.3.2.9.1. Резюме
public final class 
NullValue extends, Enum<NullValue>
 {
// Public Static Fieldspublic static final NullValue DEFAULT ;
public static final NullValue EXCEPTION ;
public static final NullValue NONE ;
// Public Static Methodspublic static NullValue valueOf(String name );
public static NullValue[] values();
}

Унаследовано от java.lang.Enum: compareTo , equals , getDeclaringClass , hashCode , Имя , ordinal , toString , valueOf

Унаследовано от java.lang.Object: getClass , notify , notifyAll , wait

4.3.2.10. PartitionKey

Аннотация на класс или участника, чтобы определить ключ разделения. Аннотируя класс или интерфейс, отдельный столбец или многочисленные столбцы могут быть определены. Аннотируя участника, ни столбец, ни столбцы не должны быть определены.

4.3.2.10.1. Резюме
@Target(value={java.lang.annotation.ElementType.TYPE,
java.lang.annotation.ElementType.FIELD,
java.lang.annotation.ElementType.METHOD})
@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME)
public @interface PartitionKey
 {
public String column ;
public Column[] columns ;
}
4.3.2.10.2. column

Название столбца, чтобы использовать для ключа разделения.

Таблица 4.89. column

Параметр Описание
return Название столбца, чтобы использовать для ключа разделения.

4.3.2.10.3. columns

Столбец (столбцы) для ключа разделения.

Таблица 4.90. columns

Параметр Описание
return Столбец (столбцы) для ключа разделения.

4.3.2.11. PersistenceCapable

Аннотация для того, способны ли класс или интерфейс к постоянству.

4.3.2.11.1. Резюме
@Target(value=java.lang.annotation.ElementType.TYPE) 
@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) 
public @interface PersistenceCapable
 {
public String table ;
public String database ;
public String schema ;
}

4.3.2.12. PersistenceModifier

Перечисление значений модификатора постоянства для участника.

4.3.2.12.1. Резюме
public final class 
PersistenceModifier extends, 
Enum<PersistenceModifier> {
// Public Static Fieldspublic static final PersistenceModifier NONE ;
public static final PersistenceModifier PERSISTENT ;
public static final PersistenceModifier UNSPECIFIED ;
// Public Static Methodspublic static PersistenceModifier valueOf(String name);
public static PersistenceModifier[] values();
}

Унаследовано от java.lang.Enum: compareTo , equals , getDeclaringClass , hashCode , Имя , ordinal , toString , valueOf

Унаследовано от java.lang.Object: getClass , notify , notifyAll , wait

4.3.2.13. Persistent

Аннотация для определения постоянства участника.

4.3.2.13.1. Резюме
 
@Target(value={java.lang.annotation.ElementType.FIELD,
java.lang.annotation.ElementType.METHOD}) 
@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) 
public @interface Persistent
{
public NullValue nullValue ;
public String primaryKey ;
public String column ;
public Extension[] extensions ;
}
4.3.2.13.2. column

Имя столбца, где значения сохранены для этого участника.

Таблица 4.91. column

Параметр Описание
return the name of the column

4.3.2.13.3. extensions

Нестандартные расширения для этого участника.

Таблица 4.92. extensions

Параметр Описание
return Нестандартные расширения для этого участника.

4.3.2.13.4. nullValue

Поведение, когда этот участник содержит нулевое значение.

Таблица 4.93. nullValue

Параметр Описание
return Поведение, когда этот участник содержит нулевое значение.

4.3.2.13.5. primaryKey

Является ли этот участник частью первичного ключа для таблицы. Это эквивалентно определению @PrimaryKey как отдельной аннотации на участника.

Таблица 4.94. primaryKey

Параметр Описание
return Является ли этот участник частью первичного ключа для таблицы.

4.3.2.14. PrimaryKey

Аннотация на участника, чтобы определить его как члена первичного ключа класса или постоянного интерфейса.

4.3.2.14.1. Резюме
@Target(value={java.lang.annotation.ElementType.TYPE,
java.lang.annotation.ElementType.FIELD,
java.lang.annotation.ElementType.METHOD})
@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME)
public @interface PrimaryKey
 {
public String Имя ;
public String column ;
public Column[] columns ;
}
4.3.2.14.2. column

Название столбца, чтобы использовать для первичного ключа.

Таблица 4.95. column

Параметр Описание
return Название столбца, чтобы использовать для первичного ключа.

4.3.2.14.3. columns

Столбец (столбцы) для первичного ключа.

Таблица 4.96. columns

Параметр Описание
return Столбец (столбцы) для первичного ключа.

4.3.2.14.4. name

Название ограничения первичного ключа.

Таблица 4.97. name

Параметр Описание
return Название ограничения первичного ключа.

4.3.2.15. Projection

Аннотация на тип, чтобы определить его как проектирование таблицы. Только столбцы, отображенные к постоянным областям/методам, будут использоваться, выполняя операции на таблице.

4.3.2.15.1. Резюме
@Target(value=java.lang.annotation.ElementType.TYPE) 
@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) 
public @interface Projection  {
}

4.3.3. com.mysql.clusterj.query

Обеспечивает интерфейсы создания запросов для ClusterJ.

4.3.3.1. Predicate

Используемый, чтобы объединить многократные предикаты с логическими операциями.

4.3.3.1.1. Резюме
public interface Predicate
 {
// Public Methodspublic abstract Predicate and(Predicate predicate);
public abstract Predicate not();
public abstract Predicate or(Predicate predicate );
}
4.3.3.1.2. and(Predicate)
public abstract Predicate and(Predicate predicate);

Объедините этот Предикат с другим, используя "and".

Таблица 4.98. and(Predicate)

Параметр Описание
predicate tдругой предикат
return новый Предикат, объединяющий оба Предиката

4.3.3.1.3. not()
public abstract Predicate not();

Отрицайте этот Предикат.

Таблица 4.99. not()

Параметр Описание
return этот предикат

4.3.3.1.4. or(Predicate)
public abstract Predicate or(Predicate predicate);

Объедините этот Предикат с другим, используя "or".

Таблица 4.100. or(Predicate)

Параметр Описание
predicate другой предикат
return новый Предикат, объединяющий оба Предиката

4.3.3.2. PredicateOperand

PredicateOperand представляет столбец или параметр, который может сравниться с другим.

4.3.3.2.1. Резюме
public interface PredicateOperand
 {
// Public Methodspublic abstract Predicate between(PredicateOperand lower,
PredicateOperand upper);

public abstract Predicate equal(PredicateOperand other );
public abstract Predicate greaterEqual(PredicateOperand other );
public abstract Predicate greaterThan(PredicateOperand other );
public abstract Predicate in(PredicateOperand other );
public abstract Predicate isNotNull();
public abstract Predicate isNull();
public abstract Predicate lessEqual(PredicateOperand other );
public abstract Predicate lessThan(PredicateOperand other );
public abstract Predicate like(PredicateOperand other );
}
4.3.3.2.2. between(PredicateOperand, PredicateOperand)
public abstract Predicate between(PredicateOperand lower,
PredicateOperand upper);

Возвратите представление Предиката, сравнивающее его с другим с использованием "between".

Таблица 4.101. between(PredicateOperand, PredicateOperand)

Параметр Описание
lower другой PredicateOperand
upper другой PredicateOperand
return новый Predicate

4.3.3.2.3. equal(PredicateOperand)
public abstract Predicate equal(PredicateOperand other );

Возвратите представление Предиката, сравнивающее его с другим с использованием "equal to".

Таблица 4.102. equal(PredicateOperand)

Параметр Описание
other другой PredicateOperand
return новый Predicate

4.3.3.2.4. greaterEqual(PredicateOperand)
public abstract Predicate greaterEqual(PredicateOperand other );

Возвратите представление Предиката, сравнивающее его с другим с использованием "greater than or equal to".

Таблица 4.103. greaterEqual(PredicateOperand)

Параметр Описание
other другой PredicateOperand
return новый Predicate

4.3.3.2.5. greaterThan(PredicateOperand)
public abstract Predicate greaterThan(PredicateOperand other );

Возвратите представление Предиката, сравнивающее его с другим с использованием "greater than".

Таблица 4.104. greaterThan(PredicateOperand)

Параметр Описание
other другой PredicateOperand
return новый Predicate

4.3.3.2.6. in(PredicateOperand)
public abstract Predicate in(PredicateOperand other );

Возвратите представление Предиката, сравнивающее его с коллекцией с использованием "in".

Таблица 4.105. in(PredicateOperand)

Параметр Описание
other другой PredicateOperand
return новый Predicate

4.3.3.2.7. isNotNull()
public abstract Predicate isNotNull();

Возвратите представление Предиката, сравнивающее его с not null.

Таблица 4.106. isNotNull()

Параметр Описание
return новый Predicate

4.3.3.2.8. isNull()
public abstract Predicate isNull();

Возвратите представление Предиката, сравнивающее его с null.

Таблица 4.107. isNull()

Параметр Описание
return новый Predicate

4.3.3.2.9. lessEqual(PredicateOperand)
public abstract Predicate lessEqual(PredicateOperand other );

Возвратите представление Предиката, сравнивающее его с другим с использованием "less than or equal to".

Таблица 4.108. lessEqual(PredicateOperand)

Параметр Описание
other другой PredicateOperand
return новый Predicate

4.3.3.2.10. lessThan(PredicateOperand)
public abstract Predicate lessThan(PredicateOperand other);

Возвратите представление Предиката, сравнивающее его с другим с использованием "less than".

Таблица 4.109. lessThan(PredicateOperand)

Параметр Описание
other другой PredicateOperand
return новый Predicate

4.3.3.2.11. like(PredicateOperand)
public abstract Predicate like(PredicateOperand other );

Возвратите представление Предиката, сравнивающее его с другим с использованием "like".

Таблица 4.110. like(PredicateOperand)

Параметр Описание
other другой PredicateOperand
return новый Predicate

4.3.3.3. QueryBuilder

QueryBuilder представляет фабрику для запросов.

4.3.3.3.1. Резюме
public interface QueryBuilder
 {
// Public Methodspublic abstract QueryDomainType<T> createQueryDefinition( Class<T> cls);
}
4.3.3.3.2. createQueryDefinition(Class<T>)
public abstract QueryDomainType<T> createQueryDefinition( Class<T> cls);

Создайте QueryDefinition, чтобы определить запросы.

Таблица 4.111. createQueryDefinition(Class<T>)

Параметр Описание
cls класс типа, который будет запрошен
return QueryDomainType, чтобы определить запрос

4.3.3.4. QueryDefinition

QueryDefinition позволяет пользователям определять запросы.

4.3.3.4.1. Резюме
public interface 
QueryDefinition<E> {
// Public Methodspublic abstract Predicate not(Predicate predicate);
public abstract PredicateOperand param(String parameterName);
public abstract QueryDefinition<E> where( Predicate predicate);
}
4.3.3.4.2. not(Predicate)
public abstract Predicate not(Predicate predicate);

Удобный метод отрицать предикат.

Таблица 4.112. not(Predicate)

Параметр Описание
predicate предикат для отрицания
return инвертированный предикат

4.3.3.4.3. param(String)
public abstract PredicateOperand param(String parameterName );

Определите параметр для запроса.

Таблица 4.113. param(String)

Параметр Описание
parameterName название параметра
return PredicateOperand, представляющий параметр

4.3.3.4.4. where(Predicate)
public abstract QueryDefinition<E> where(Predicate predicate);

Определите предикат, чтобы удовлетворить запрос.

Таблица 4.114. where(Predicate)

Параметр Описание
predicate Predicate
return это определение запроса

4.3.3.5. QueryDomainType

QueryDomainType представляет тип области запроса. Тип области утверждает имена свойств, которые используются, чтобы отфильтровать результаты.

4.3.3.5.1. Резюме
public interface 
QueryDomainType<E> extends, 
QueryDefinition<E>{
// Public Methodspublic abstract PredicateOperand get(String propertyName);
public abstract Class<E> getType ();
}
4.3.3.5.2. get(String)
public abstract PredicateOperand get(String propertyName );

Получите PredicateOperand, представляющий свойство типа области.

Таблица 4.115. get(String)

Параметр Описание
propertyName название свойства
return представление значения свойства

4.3.3.5.3. getType()
public abstract Class<E> getType();

Получите тип области запроса.

Таблица 4.116. getType()

Параметр Описание
return Тип области запроса.

4.3.4. Постоянные значения полей

4.3.4.1. com.mysql.clusterj.*

Таблица 4.117. com.mysql.clusterj.*

Имя Описание
DEFAULT_PROPERTY_CLUSTER_BYTE_BUFFER_POOL_SIZES "256, 10240, 102400, 1048576"
DEFAULT_PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_BATCH_SIZE 10
DEFAULT_PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_START 1
DEFAULT_PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_STEP 1
DEFAULT_PROPERTY_CLUSTER_CONNECT_DELAY 5
DEFAULT_PROPERTY_CLUSTER_CONNECT_RETRIES 4
DEFAULT_PROPERTY_CLUSTER_CONNECT_TIMEOUT_AFTER 20
DEFAULT_PROPERTY_CLUSTER_CONNECT_TIMEOUT_BEFORE 30
DEFAULT_PROPERTY_CLUSTER_CONNECT_TIMEOUT_MGM 30000
DEFAULT_PROPERTY_CLUSTER_CONNECT_VERBOSE 0
DEFAULT_PROPERTY_CLUSTER_DATABASE"test"
DEFAULT_PROPERTY_CLUSTER_MAX_TRANSACTIONS 4
DEFAULT_PROPERTY_CONNECTION_POOL_RECV_THREAD_ACTIVATION_THRESHOLD 8
DEFAULT_PROPERTY_CONNECTION_POOL_SIZE1
DEFAULT_PROPERTY_CONNECTION_RECONNECT_TIMEOUT 0
ENV_CLUSTERJ_LOGGER_FACTORY_NAME "CLUSTERJ_LOGGER_FACTORY"
PROPERTY_CLUSTER_BYTE_BUFFER_POOL_SIZES "com.mysql.clusterj.byte.buffer.pool.sizes"
PROPERTY_CLUSTER_CONNECTION_SERVICE "com.mysql.clusterj.connection.service"
PROPERTY_CLUSTER_CONNECTSTRING "com.mysql.clusterj.connectstring"
PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_BATCH_SIZE "com.mysql.clusterj.connect.autoincrement.batchsize"
PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_START "com.mysql.clusterj.connect.autoincrement.offset"
PROPERTY_CLUSTER_CONNECT_AUTO_INCREMENT_STEP "com.mysql.clusterj.connect.autoincrement.increment"
PROPERTY_CLUSTER_CONNECT_DELAY "com.mysql.clusterj.connect.delay"
PROPERTY_CLUSTER_CONNECT_RETRIES "com.mysql.clusterj.connect.retries"
PROPERTY_CLUSTER_CONNECT_TIMEOUT_AFTER "com.mysql.clusterj.connect.timeout.after"
PROPERTY_CLUSTER_CONNECT_TIMEOUT_BEFORE "com.mysql.clusterj.connect.timeout.before"
PROPERTY_CLUSTER_CONNECT_TIMEOUT_MGM "com.mysql.clusterj.connect.timeout.mgm"
PROPERTY_CLUSTER_CONNECT_VERBOSE "com.mysql.clusterj.connect.verbose"
PROPERTY_CLUSTER_DATABASE "com.mysql.clusterj.database"
PROPERTY_CLUSTER_MAX_TRANSACTIONS "com.mysql.clusterj.max.transactions"
PROPERTY_CONNECTION_POOL_NODEIDS "com.mysql.clusterj.connection.pool.nodeids"
PROPERTY_CONNECTION_POOL_RECV_THREAD_ACTIVATION_THRESHOLD "com.mysql.clusterj.connection.pool.recv.thread.activation.threshold"
PROPERTY_CONNECTION_POOL_RECV_THREAD_CPUIDS "com.mysql.clusterj.connection.pool.recv.thread.cpuids"
PROPERTY_CONNECTION_POOL_SIZE "com.mysql.clusterj.connection.pool.size"
PROPERTY_CONNECTION_RECONNECT_TIMEOUT "com.mysql.clusterj.connection.reconnect.timeout"
PROPERTY_DEFER_CHANGES "com.mysql.clusterj.defer.changes"
PROPERTY_JDBC_DRIVER_NAME "com.mysql.clusterj.jdbc.driver"
PROPERTY_JDBC_PASSWORD "com.mysql.clusterj.jdbc.password"
PROPERTY_JDBC_URL "com.mysql.clusterj.jdbc.url"
PROPERTY_JDBC_USERNAME "com.mysql.clusterj.jdbc.username"
SESSION_FACTORY_SERVICE_CLASS_NAME "com.mysql.clusterj.SessionFactoryService"
SESSION_FACTORY_SERVICE_FILE_NAME "META-INF/services/com.mysql.clusterj.SessionFactoryService"

Таблица 4.118. com.mysql.clusterj.*

Имя Описание
INDEX_USED "IndexUsed"
SCAN_TYPE"ScanType"
SCAN_TYPE_INDEX_SCAN"INDEX_SCAN"
SCAN_TYPE_PRIMARY_KEY"PRIMARY_KEY"
SCAN_TYPE_TABLE_SCAN"TABLE_SCAN"
SCAN_TYPE_UNIQUE_KEY"UNIQUE_KEY"

4.4. MySQL NDB Cluster Connector for Java: ограничения и известные проблемы

Эта секция обсуждает ограничения и известные проблемы в MySQL NDB Cluster Connector for Java API.

Известные проблемы в ClusterJ:

  • Joins: с ClusterJ запросы ограничиваются единственной таблицей. Это не проблема с JPA или JDBC, оба из которых поддерживают соединения.

  • Database views: Поскольку представления базы данных MySQL не используют NDB, приложения ClusterJ не могут видеть представления и таким образом не могут получить доступ к ним. Чтобы работать с представлениями, используя Яву, необходимо использовать JPA или JDBC.

  • Relations and inheritance: ClusterJ не поддерживает отношения или наследование. Таблицы отображены непосредственно на классы области и только операции единственной таблицы поддерживаются. Таблицы NDB для NDB Cluster 7.3 и выше понимают внешние ключи и ограничения внешнего ключа проведены в жизнь, используя ClusterJ для вставок, обновлений и удалений.

  • TIMESTAMP: Сейчас ClusterJ не поддерживает тип данных timestamp для области первичного ключа.

Известные проблемы в JDBC и Connector/J: Для получения информации об ограничениях и известных проблемах с JDBC и Connector/J см. JDBC API Implementation Notes и Troubleshooting Connector/J Applications.

Известные проблемы в NDB Cluster: Для получения информации об ограничениях и других известных проблемах с кластером NDB посмотрите Known Limitations of NDB Cluster.

Поиск

 

Найди своих коллег!

Вы можете направить письмо администратору этой странички, Алексею Паутову. mailto:alexey.v.pautov@mail.ru