1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/l0km-sql2java-2-6-7

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 5.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 16:38 b7383a7

sql2java — лёгкий и давно существующий инструмент Java ORM

sql2java – это лёгкий инструмент Java ORM с долгой историей.

Сайт: https://sourceforge.net/projects/sql2java

К сожалению, он больше не поддерживается, последняя версия — sql2java-2-6-7.zip.

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

Однако год назад я обнаружил, что инструмент не может поддерживать BLOB, а поддержка CLOB оставляет желать лучшего. В то время я обошёл эту проблему. Теперь, когда проект требует использования типа BLOB, я решил решить эту проблему.

На официальном сайте sql2java есть исходный код, но поскольку в SVN-репозитории нет тегов, невозможно отследить исходный код версии 2.6.7. Поэтому я использовал CFR-декомпилятор для декомпиляции ядра библиотеки sql2java.jar и получил исходный код.

Изучив декомпилированный исходный код, я нашёл причину, по которой sql2java не поддерживает BLOB, и на этой основе сделал несколько изменений, чтобы обеспечить поддержку BLOB и CLOB.

Обновления

Исправление затрагивает только два файла:

  • lib/sql2java.jar содержит файл net/sourceforge/sql2java/Column.class (добавлен соответствующий исходный файл Column.java, исправленный после декомпиляции исходного кода);
  • src/templates/velocity/java5/perschema/manager.java.vm (файл шаблона Velocity).

Интерфейс sql2java остался без изменений.

Примечание

Поскольку были внесены изменения только в файл шаблона java5/perschema/manager.java.vm, эта версия гарантирует корректность кода только при использовании sql2java.properties с параметром template.folder.include, установленным в значение java5, а не java.

Описание кода

Для удобства использования и сокрытия деталей доступа к базе данных объекты Blob в сгенерированных классах Java Bean преобразуются в byte[], а объекты Clob — в java.lang.String.

Пример кода:

/**
 * Getter method for colorImage.
 * <br>
 * Meta Data Information (in progress):
 * <ul>
 * <li>full name: TEST_USER.COLOR_IMAGE</li>
 * <li>column size: 4000</li>
 * <li>jdbc type returned by the driver: Types.CLOB</li>
 * </ul>
 *
 * @return the value of colorImage
 */
public String getColorImage()
{
    return colorImage;
}

/**
 * Setter method for colorImage.
 * <br>
 * The new value is set only if compareTo() says it is different,
 * or if one of either the new value or the current value is null.
 * In case the new value is different, it is set and the field is marked as 'modified'.
 *
 * @param newVal the new value to be assigned to colorImage
 */
public void setColorImage(String newVal)
{
    if ((newVal != null && colorImage != null && (newVal.compareTo(colorImage) == 0)) ||
        (newVal == null && colorImage == null && colorImageIsInitialized)) {
        return;
    }
    colorImage = newVal;
    colorImageIsModified = true;
    colorImageIsInitialized = true;
}
/**
 * Getter method for grayImage.
 * <br>
 * Meta Data Information (in progress):
 * <ul>
 * <li>full name: TEST_USER.GRAY_IMAGE</li>
 * <li>column size: 4000</li>
 * <li>jdbc type returned by the driver: Types.BLOB</li>
 * </ul>
 *
 * @return the value of grayImage
 */
public byte[] getGrayImage()
{
    return grayImage;
}

/**
 * Setter method for grayImage.
 * <br>
 * Attention, there will be no comparison with current value which
 * means calling this method will mark the field as 'modified' in all cases.
 *
 * @param newVal the new value to be assigned to grayImage
 */
public void setGrayImage(byte[] newVal)
{
    if ((newVal != null && grayImage != null && newVal.equals(grayImage)) ||
        (newVal == null && grayImage == null && grayImageIsInitialized)) {
        return;
    }
    grayImage = newVal;
    grayImageIsModified = true;
    grayImageIsInitialized = true;
}

Автор

GuYaDong 10km0811@sohu.com

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/l0km-sql2java-2-6-7.git
git@api.gitlife.ru:oschina-mirror/l0km-sql2java-2-6-7.git
oschina-mirror
l0km-sql2java-2-6-7
l0km-sql2java-2-6-7
master