|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Configuration, Session и SessionFactory
Ниже будет приведено несколько вариантов конфигурирования Hibernate. Конфигурация или отображение (mapping) обычно осуществляется один раз private Configuration createConfiguration() throws ClassNotFoundException, MappingException { Configuration configuration = new Configuration().addClass(Class.forName("courses.hiber.Course")) .addClass(Class.forName("courses.hiber.Student")); return configuration; } Этот метод создает новую конфигурацию и добавляет в нее классы courses.hiber.Course и courses.hiber.Student (данное добавление необходимо только в том случае, если mapping-файлы не были указаны в конфигурационном файле Hibernate). Hibernate ищет mapping по принципу, указанному выше. В конфигурацию могли быть также добавлены другие источники mapping, например поток, jar-файл, org.dom4j.Document. Метод addClass() возвращает объект Configuration, поэтому он вызывается несколько раз подряд. Далее добавляется в приложение метод, генерирующий по конфигурации таблицы в базе данных. Hibernate содержит консольное приложение для генерации скриптов. В приведенном ниже коде объект класса SchemaExport генерирует таблицы базы данных по настроенному mapping и заданным свойствам, записывает текст private void generateAndExecuteCreationScript(Configuration configuration, Properties properties) throws HibernateException { SchemaExport export = new SchemaExport(configuration, properties); export.setOutputFile("c:\\temp\\courses_script.sql").create(true, true); } В методе create(true, true) генерируется script-текст для создания таблиц и посылается на консоль (определяется первым параметром – true), и на его основе создаются таблицы в базе данных (второй параметр – true). Session – это интерфейс, используемый для сохранения в базу данных и восстановления из нее объектов классов Course и Student. SessionFactory – потокобезопасный, неизменяемый кэш откомпилированных mapping для одной базы данных, фабрика для создания объектов Session. 1. Создается объект SessionFactory SessionFactory factory = new Configuration().configure().buildSessionFactory(); Метод configure() класса Configuration заносит информацию 2. Создается сессия Session session = factory.openSession(); 3. Извлекаются все строки из таблиц course и student. Текст запросов List courses = session.find("from Course"); List students = session.find("from Student"); 4. В конце обращения сессия закрывается. session.close(); Интерфейс net.sf.hibernate.SessionFactory содержит ряд необходимых методов: openSession() – создает соединение с базой данных и открывает сессию. В качестве параметра может быть передано и соединение, тогда будет создана сессия по существующему соединению; close() – уничтожение SessionFactory и освобождение всех ресурсов, используемых объектом. Интерфейс net.sf.hibernate.Session – однопоточный, короткоживущий объект, являющийся посредником между приложением и хранилищем долгоживущих объектов, используется для навигации по объектному графу или для поиска объектов по идентификатору. По сути, является классом-оболочкой вокруг JDBC-соединения. В то же время представляет собой фабрику для объектов Transaction. load(Class theClass, Serializable id) – возвращает объект данного класса с указанным идентификатором; load(Object object, Serializable id) – загружает постоянное состояние объекта с указанным идентификатором в объект, указатель которого был передан; save(Object object [, Serializable id]) – сохраняет переданный объект. Если передан идентификатор, то использует его; update(Object object [, Serializable id]) – обновляет постоянный объект по идентификатору объекта, а если передан идентификатор, то обновляет объект с указанным идентификатором; saveOrUpdate(Object object) – в зависимости от значения идентификатора сохраняет или обновляет объект; get(Class class, Serializable id) – возвращает объект данного класса, с указанным идентификатором или null, если такого объекта нет; delete(Object object) – удаляет объект из базы данных; delete(String query) – удаляет все объекты, полученные по запросу. Возможен и вызов запроса с параметрами delete(String query, Transaction beginTransaction() – начинает единицу работы Для осуществления запросов используется экземпляр интерфейса org.hibernate.Query. Получить его можно с помощью объекта Session: Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |