Java и базы данных:
Установление связи с базой данных с использованием JDBC
JDBC является библиотекой Java 2 Standard Edition (J2SE), используемой для взаимодействия с базами данных SQL. Для изучения данной статьи вам потребуется доступ к базе данных. Если у вас не установлены базы данных, можно воспользоваться базой данных MYSQL, бесплатной БД, которую можно скачать на сайте www.mysql.org. Она работает во многих операционных средах.
Hibernate: Пользовательские типы в hibernate. Разбираемся с UDT
Существует несколько интерфейсов являющихся базовыми точками расширения hibernate-функциональности: UserType, CompositeUserType, UserCollectionType, EnhancedUserType, UserVersionType, ParametrizedType. Не все эти интерфейсы часто используются в практике, так я сосредоточусь на описании возможностей только UserType, CompositeUserType и ParametrizedType.
Хранимые процедуры для Java-программистов
В этой статье мы будем рассматривать, каким образом можно использовать хранимые процедуры в системах управления базами данных (СУБД). Мы рассмотрим не только самые базовые и общие возможности хранимых процедур, но и некоторые дополнительные, например, возможность возвращения объектов ResultSet. Подразумевается, что вы достаточно хорошо знакомы с принципами работы СУБД и JDBC API. При этом от вас не требуется никакого опыта использования хранимых процедур.
Hibernate: Пользовательские типы в hibernate. Разбираемся с компонентами
Hibernate служит для отображения java-классов на таблицы БД. Естественно, что бывают ситуации, когда иерархия (сеть) классов java является более "богатой" и не может быть (не должна) переводиться в таблицы БД непосредственно. Классический пример, это класс (таблица) User, который помимо простых свойств fio, age (отображаемых непосредственно на поля таблицы user), содержит более сложные поля. Например, поле homeAddress (тип Address) хранит сведения об домашнем адресе user-а. Можно было бы создать для класса Address собственный mapping и связать классы user & address с помощью ассоциации "один-к-одному", однако это несколько не красиво с точки зрения здравого смысла.
Hibernate: отображая иерархии классов
Тема сегодняшней статьи – как отобразить иерархию классов на реляционную модель данных. Наследование – это один из столпов ООП, а раз в СУБД нет родного понятия или методики представления подобного отношения, то все что нам остается – это имитировать наследование классов различными способами. В hibernate есть три методики имитации: “вся иерархия классов в одной таблице”, “одна таблица базовому классу и каждому подклассу по таблице дополнений”, “каждому классу свою, независимую от остальных таблицу”. Продолжая наш пример с сотрудниками и отделами, представим, что у каждого сотрудника есть свое любимое животное (возможно, не одно). И создадим иерархию: Животное -> Кошка, Собака -> Тигр и т.д.
Hibernate: Связи вида Многие-ко-Многим и Один-к-Одному
Прошлые две статьи были посвящены работе с ассоциацими “один-ко-многим”. Фактически этот вид ассоциаций является наиболее ценным и часто используемым. В теории СУБД (и соответственно, в hibernate) есть еще два вида связей: один-к-одному и многие-ко-многим.
Hibernate: каскадные обновления, инверсия отношений и прочая и прочая
Вот пришло время и мне написать пару строчек про hibernate. Я попробую сделать небольшой cheatsheet по вопросу двусторонней ассоциации, каскадных обновлений, ленивой загрузки и прочего и прочего. Сразу предупрежу, что я довольно негативно отношусь к hibernate, предпочитаю в практике использовать ibatis.
Вот здесь можно узнать больше об базе данных cloudscape. Часть 3
Наиболее эффективным средством обеспечения целостности хранимых данных является использование триггеров, представляющих собой хранимые процедуры связанные с выполнением определенных действий над конкретными таблицами. Триггер автоматически активизируется при выполнении операций удаления, изменения, добавления данных. Возможности триггеров многократно превосходят ограничения и даже CHECK-выражения...
Вот здесь можно узнать больше об базе данных cloudscape. Часть 2
Достаточное количество проблем у неопытных программистов возникает при работе с версиями объектов сохраненных в потоке в одной версии, а восстановление которых производится когда класс уже был модифицирован, перекомпилирован и в общем случае потерял битовую совместимость с предыдущей версией. Дело в том что любой объект который обладает способностью сохранять свое состояние в поток снабжается уникальным номеров версии, который проверяется при восстановлении, и если номер отличиен от того в котором объект был сохранен, то при попытке восстановления объект будет сгенерировано исключение java.io.InvalidClassException
Вот здесь можно узнать больше об базе данных cloudscape. Часть 1
Есть такая замечательная фирма ibm и делает она базу данных cloudscape (вот ее адрес http://www.ibm.com/software/data/cloudscape/). Вообще-то, ibm купила разработчиков cloudscape еще лет 5-ть назад, но сути дела это не меняет. Т.к. база для мира java очень хорошая, и я ей пользовался некоторое время назад.