Помощь студентам дистанционного обучения: тесты, экзамены, сессия
Помощь с обучением
Оставляй заявку - сессия под ключ, тесты, практика, ВКР
Заявка на расчет

Лабораторный практикум по Java для МТИ. Лабораторная работа №4

Автор статьи
Валерия
Валерия
Наши авторы
Эксперт по сдаче вступительных испытаний в ВУЗах

Содержание

 

Лабораторная работа №4 Применение технологии ORM на базе технологии Hibernate. Операции CRUD

Цель работы
  1. Расширить знания по работе с базой данных (БД) из приложения, разработанного на языке Java.
  2. Разобраться и применить ORM-подход на базе технологии Hibernate.
  3. Запустить приложение в серверной среде и применить ORM-подход на практике.
Программное обеспечение
  • Eclipse
  • Maven 3
  • JDK 1.6
  • Jetty
  • Hibernate 3
  • MySql
Необходимая теоретическая подготовка
  • Понимание технологии Servlets из Java EE.
  • Понимание принципов работы с БД и их создание.
  • Понимание сущностей БД, а также операций по работе с ними (CRUD).
Теоретическая часть Что такое ORM?

ORM (объектно-реляционное отображение) – технология, которая создает связи между базой данных и концепциями объектно-ориентированных языков, методом создания «виртуальных объектных баз данных».

Существуют как платные, так и открытые реализации этой технологии. В объектно-ориентированном программировании объекты в приложении используются объекты из реального мира. В качестве примера рассмотрим адресную книгу, которая содержит список людей с любым количеством телефонов и иным набором адресов. В терминологии объектно-ориентированного программирования они являются объектами класса «Человек», которые может содержать список полей таких как: имя, список телефонов и список адресов. Суть задачи состоит в преобразовании таких объектов в форму, в которой они могут быть сохранены в базе данных, и которые легко могут быть извлечены при необходимости, с сохранением всех свойств объектов и отношений связей между ними. Такие объекты называют «хранимыми» (). При использовании ORM-подхода при разработке приложения программисты работают с обычными классами, которые в свою очередь имеют отображение в виде таблиц в БД (см. рисунок ниже).

Рисунок 17. Отображение модели приложение в БД

Как показано на рисунке выше, имеется представление для каждой сущности (модели) создаваемого приложения, свое представление в БД в виде таблицы или набора таблиц. Пример по работе с сущностями представлен ниже. В качестве примера выбран класс Catalog. В данном примере используется технология JPA, которая является стандартом для создания представлений в БД.

JPA является набором разработанных интерфейсов, которые представлены компанией Sun, с большим количеством реализаций.

Наиболее популярная реализация представлена компанией JBoss – Hibernate.

import java.util.List;

import javax.persistence.*;

@javax.persistence.SequenceGenerator( name=»SEQ_ID», sequenceName=»SEQ_ID» ) @Entity @Table(name=»CATALOG») public class Catalog {

private Long id; private String name; private List<CatalogItem> items;

@Id @GeneratedValue(generator=»SEQ_ID») @Column(name=»ID») public Long getId() { return id; } public void setId(Long id) { this.id = id; }

@Column(name=»NAME») public String getName() { return name; } public void setName(String name) { this.name = name; } @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY) @JoinColumn(name=»CATALOG_ID», nullable = false) public List<CatalogItem> getItems() { return items; } public void setItems(List<CatalogItem> items) { this.items = items; } }

Для создания сущности представления используется аннотация @Entity, которая помечает класс и обозначает, что данный класс будет иметь представление в БД. С помощью аннотации @Table можно указать, на какую таблицу БД будет происходить наложение сущности. С помощью аннотации @Column задается наложение полей объекта на поля в таблице. Библиотека Hibernate

Hibernate – библиотека языка Java, разработанная для решения задач объектно-реляционного отображения.

Является свободно распространяемой библиотекой с открытым исходным кодом. Hibernate предоставляет собой простой фреймворк для отображения объектноориентированной модели данных в реляционные таблицы базы данных. Основным конфигурационным файлом для Hibernate является файл hibernate.cfg.xml. В нем прописываются основные настройки для подключения и работе приложения с БД. Пример конфигурации Hibernate приведен ниже.

<?xml version=»1.0″ encoding=»UTF-8″?> <!DOCTYPE hibernate-configuration PUBLIC «-//Hibernate/Hibernate Configuration DTD 3.0//EN» «http://hibernate.sourceforge.net/hibernateconfiguration-3.0.dtd»> <hibernate-configuration> <session-factory> <property name=»hibernate.dialect»>org.hibernate.dialect.MySQLDialect</property> <property name=»hibernate.connection.driver_class»>com.mysql.jdbc.Driver</property> <property name=»hibernate.connection.url»>jdbc:mysql://localhost:3306/hibernateArt</pro perty> <property name=»hibernate.connection.username»>root</property> <property name=»hibernate.connection.password»>csanurag</property> <property name=»hibernate.hbm2ddl.auto»>update</property> <property name=»hibernate.current_session_context_class»>thread</property> <mapping class=»model.Course»/> </session-factory> </hibernate-configuration>

Практическая часть 1. Установить и настроить MySQL. 2. Найти и прописать новую зависимость для maven Hibernate, затем пересобрать проект.

<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-annotations</artifactId> <version>3.5.6-Final</version> </dependency>

<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>3.6.10.Final</version> </dependency> 3. Создать БД и таблицу для хранения пользователей.

create database UserDB; use UserDB; grant all on UserDB.* to ‘admin’@’localhost’ identified by ‘test’; CREATE TABLE UserDB.`users` ( `userid` int(11) NOT NULL AUTO_INCREMENT, `firstname` varchar(45) DEFAULT NULL, `lastname` varchar(45) DEFAULT NULL, `dob` date DEFAULT NULL, `email` varchar(100) DEFAULT NULL, PRIMARY KEY (`userid`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8

4. Открыть проект и создать новый пакет для работы с сущностями БД

Рисунок 18. Структура проекта

5. Создать класс User для представления пользователей с указанием полей, как в примере Long userid, String firstName, String lastName, Date dob, String email. 6. Создать и настроить hibernate.cfg.xml для проекта. 7. Создать утилитный класс для работы с БД через сущности.

package com.daniel.util; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { private static final SessionFactory sessionFactory = buildSessionFactory(); private static SessionFactory buildSessionFactory() { try { // Create the SessionFactory from hibernate.cfg.xml return new Configuration().configure().buildSessionFactory(); } catch (Throwable ex) { // Make sure you log the exception, as it might be swallowed System.err.println(«Initial SessionFactory creation failed.» + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } }

8. Создать и настроить UserDao для работы с БД через утилитный класс HibernateUtil.

package com.daniel.dao; import java.util.ArrayList; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import com.daniel.model.User; import com.daniel.util.HibernateUtil; public class UserDao { public void addUser(User user) { Transaction trns = null; Session session = HibernateUtil.getSessionFactory().openSession(); try { trns = session.beginTransaction(); session.save(user); session.getTransaction().commit(); } catch (RuntimeException e) { if (trns != null) { trns.rollback(); } e.printStackTrace(); } finally { session.flush(); session.close(); } } public void deleteUser(int userid) { Transaction trns = null; Session session = HibernateUtil.getSessionFactory().openSession(); try { trns = session.beginTransaction(); User user = (User) session.load(User.class, new Integer(userid)); session.delete(user); session.getTransaction().commit(); } catch (RuntimeException e) { if (trns != null) { trns.rollback(); } e.printStackTrace(); } finally { session.flush(); session.close(); } } public void updateUser(User user) { Transaction trns = null; Session session = HibernateUtil.getSessionFactory().openSession(); try { trns = session.beginTransaction(); session.update(user); session.getTransaction().commit(); } catch (RuntimeException e) { if (trns != null) { trns.rollback(); } e.printStackTrace(); } finally { session.flush(); session.close(); } } public List<User> getAllUsers() { List<User> users = new ArrayList<User>(); Transaction trns = null; Session session = HibernateUtil.getSessionFactory().openSession(); try { trns = session.beginTransaction(); users = session.createQuery(«from User»).list(); } catch (RuntimeException e) { e.printStackTrace(); } finally { session.flush(); session.close(); } return users; } public User getUserById(int userid) { User user = null; Transaction trns = null; Session session = HibernateUtil.getSessionFactory().openSession(); try { trns = session.beginTransaction(); String queryString = «from User where id = :id»; Query query = session.createQuery(queryString); query.setInteger(«id», userid); user = (User) query.uniqueResult(); } catch (RuntimeException e) { e.printStackTrace(); } finally { session.flush(); session.close(); } return user; } }

9. Создать несколько сервлетов и форм для отправки данных на сервер, а также их отображение. 10. Необходимо создать сочетание jsp и сервлетов для сохранения, чтения, обновления и удаления данных из БД. В качестве управления данными в БД следует использовать зависимость на UserDao в сервлетах. 11. Собрать и запустить приложение. 12. Проверить работу функциональности CRUD операций. Отчет о выполнении работы 1. Файлы исходного кода реализованной логики. Вопросы для самопроверки 1. Какие особенности имеются у ORM-подхода? 2. Как создается отображение на несколько таблиц? 3. Что такое транзакция? Литература 1. http://mrbool.com/crud-operation-in-hibernate/26236 – создание CRUD операций. 2. http://docs.jboss.org/hibernate/core/3.6/quickstart/en-US/html_single/ — документация по Hibernate. 3. http://javaxblog.ru/article/java-hibernate-1/ – разработка на Hibernate.

или напишите нам прямо сейчас

Написать в WhatsApp Написать в Telegram

О сайте
Ссылка на первоисточник:
https://www.tsuab.ru
Поделитесь в соцсетях:

Оставить комментарий

Inna Petrova 18 минут назад

Нужно пройти преддипломную практику у нескольких предметов написать введение и отчет по практике так де сдать 4 экзамена после практики

Иван, помощь с обучением 25 минут назад

Inna Petrova, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Коля 2 часа назад

Здравствуйте, сколько будет стоить данная работа и как заказать?

Иван, помощь с обучением 2 часа назад

Николай, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Инкогнито 5 часов назад

Сделать презентацию и защитную речь к дипломной работе по теме: Источники права социального обеспечения. Сам диплом готов, пришлю его Вам по запросу!

Иван, помощь с обучением 6 часов назад

Здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Василий 12 часов назад

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

Иван, помощь с обучением 12 часов назад

Василий, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Анна Михайловна 1 день назад

Нужно закрыть предмет «Микроэкономика» за сколько времени и за какую цену сделаете?

Иван, помощь с обучением 1 день назад

Анна Михайловна, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Сергей 1 день назад

Здравствуйте. Нужен отчёт о прохождении практики, специальность Государственное и муниципальное управление. Планирую пройти практику в школе там, где работаю.

Иван, помощь с обучением 1 день назад

Сергей, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Инна 1 день назад

Добрый день! Учусь на 2 курсе по специальности земельно-имущественные отношения. Нужен отчет по учебной практике. Подскажите, пожалуйста, стоимость и сроки выполнения?

Иван, помощь с обучением 1 день назад

Инна, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Студент 2 дня назад

Здравствуйте, у меня сегодня начинается сессия, нужно будет ответить на вопросы по русскому и математике за определенное время онлайн. Сможете помочь? И сколько это будет стоить? Колледж КЭСИ, первый курс.

Иван, помощь с обучением 2 дня назад

Здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Ольга 2 дня назад

Требуется сделать практические задания по математике 40.02.01 Право и организация социального обеспечения семестр 2

Иван, помощь с обучением 2 дня назад

Ольга, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Вика 3 дня назад

сдача сессии по следующим предметам: Этика деловых отношений - Калашников В.Г. Управление соц. развитием организации- Пересада А. В. Документационное обеспечение управления - Рафикова В.М. Управление производительностью труда- Фаизова Э. Ф. Кадровый аудит- Рафикова В. М. Персональный брендинг - Фаизова Э. Ф. Эргономика труда- Калашников В. Г.

Иван, помощь с обучением 3 дня назад

Вика, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Игорь Валерьевич 3 дня назад

здравствуйте. помогите пройти итоговый тест по теме Обновление содержания образования: изменения организации и осуществления образовательной деятельности в соответствии с ФГОС НОО

Иван, помощь с обучением 3 дня назад

Игорь Валерьевич, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Вадим 4 дня назад

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

Иван, помощь с обучением 4 дня назад

Вадим, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Кирилл 4 дня назад

Здравствуйте! Нашел у вас на сайте задачу, какая мне необходима, можно узнать стоимость?

Иван, помощь с обучением 4 дня назад

Кирилл, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Oleg 4 дня назад

Требуется пройти задания первый семестр Специальность: 10.02.01 Организация и технология защиты информации. Химия сдана, история тоже. Сколько это будет стоить в комплексе и попредметно и сколько на это понадобится времени?

Иван, помощь с обучением 4 дня назад

Oleg, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Валерия 5 дней назад

ЗДРАВСТВУЙТЕ. СКАЖИТЕ МОЖЕТЕ ЛИ ВЫ ПОМОЧЬ С ВЫПОЛНЕНИЕМ практики и ВКР по банку ВТБ. ответьте пожалуйста если можно побыстрее , а то просто уже вся на нервяке из-за этой учебы. и сколько это будет стоить?

Иван, помощь с обучением 5 дней назад

Валерия, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Инкогнито 5 дней назад

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

Иван, помощь с обучением 5 дней назад

Здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Иван неделю назад

Защита дипломной дистанционно, "Синергия", Направленность (профиль) Информационные системы и технологии, Бакалавр, тема: «Автоматизация приема и анализа заявок технической поддержки

Иван, помощь с обучением неделю назад

Иван, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Дарья неделю назад

Необходимо написать дипломную работу на тему: «Разработка проекта внедрения CRM-системы. + презентацию (слайды) для предзащиты ВКР. Презентация должна быть в формате PDF или формате файлов PowerPoint! Институт ТГУ Росдистант. Предыдущий исполнитель написал ВКР, но работа не прошла по антиплагиату. Предыдущий исполнитель пропал и не отвечает. Есть его работа, которую нужно исправить, либо переписать с нуля.

Иван, помощь с обучением неделю назад

Дарья, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru