Главная » Просмотр файлов » Технологии Java для работы с базами данных

Технологии Java для работы с базами данных (1127026)

Файл №1127026 Технологии Java для работы с базами данных (Технологии Java для работы с базами данных)Технологии Java для работы с базами данных (1127026)2019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Технологии Java для работы с базами данныхВзаимодействие с базами данных с помощью JDBCИмеется несколько способов организовать взаимодействие с базой данных в программе наJava. Наиболее простой и прямой — использовать API JDBC (Java Database Connectivity).Более сложные, но зато более гибкие решения — использование JDO (Java Data Objects)или одной из библиотек ORM (Object-Relational Mapping), например, Hibernate.JDBC предоставляет общий программный интерфейс (API) для доступа к базам данных врамках различных СУБД.

Для такого доступа необходимо наличие для данной СУБДдрайвера, реализующего этот API.В рамках JDBC данные представлены в той же структуре, что и в реляционных СУБД, —как записи, состоящие из нескольких полей и размещенные в таблицах. Данные могутизвлекаться в виде отношений, для этого JDBC предоставляет интерфейс для выполнениязапросов на SQL. В отличие от этого подхода, ORM предоставляют доступ к хранимымданным в виде объектов.Классы и интерфейсы JDBC находятся в пакетах java.sql и javax.sql (последний входит всостав J2EE).

Основной механизм получения доступа к данным — посылка запросов наSQL, оформленных в виде объектов, реализующих интерфейс Statement. Для получениятаких объектов, нужно установить с базой данных соединение (представлено как объектConnection), используя классы драйвера JDBC для нужной СУБД, либо классDriverManager, либо интерфейс DataSource. Использование последнего предпочтительнопри необходимости поддерживать распределенные транзакции, пул соединений и SQLзапросов, т.е. в сложных системах, которые должны эффективно обслуживать многопараллельно работающих пользователей и связываться одновременно с несколькимиисточниками данных.Простейшая программа, связывающаяся с СУБД при помощи JDBC, выглядит примернотак.importimportimportimportimportjava.sql.Connection;java.sql.ResultSet;java.sql.SQLException;java.sql.Statement;java.util.Properties;import org.hsqldb.jdbcDriver; // используется JDBC драйвер HyperSQLpublic class JDBCRequest{public static void main(String[] args){try{Properties props = new Properties();props.setProperty("username", "username");props.setProperty("password", "password");Connection cnx = jdbcDriver.getConnection("jdbc:hsqldb:hsql://localhost", props);Statement stmt = cnx.createStatement();// предполагаем, что есть таблица book с полями title, isbn и issuetimestmt.execute("SELECT title, isbn, issuetime FROM book");ResultSet rs = stmt.getResultSet();while(rs.next()){System.out.println("" + rs.getRow() + ": Title: " + rs.getString(1)+ "; ISBN: " + rs.getString(2)+ "; Time: " + rs.getTimestamp(3));}}catch (SQLException e){e.printStackTrace();}}}Другие классы JDBC служат обертками для типов данных SQL, позволяюторганизовывать кэширование данных и транзакции при работе с базами данных,использовать заранее скомпилированные SQL-запросы с устанавливаемыми при ихвыполнении параметрами для повышения эффективности работы и пр.Взаимодействие с базами данных с помощью HibernateHibernate является примером преобразователя реляционных данных в объектноепредставление (Object-Relational Mapper, ORM).

Для Java другими примерами такого родаявляются также реализации JDO (например, JPOX), iBATIS, EclipseLink, TopLink.ORM позволяют работать с данными как с обычными объектами, независимо от того, какони представлены в базе данных.При этом, естественно, нужно определить классы, которые будут использоваться как типыхранимых объектов, и способ отображения таблиц и их полей на эти классы. Hibernateпозволяет в качестве классов хранимых объектов использовать произвольные Java классы.Отображение полей таблиц на свойства этих классов (свойство типа Type с именемsomething в Java — это один или пара методов Type getSomething(), voidsetSomething(Type v), для свойств булевского типа вместо getSomething() пишется методisSomething()) описывается либо в специальном формате на базе XML, либо с помощьюаннотаций классов и их свойств.Для примера рассмотрим базу данных с изображенной на Рисунке 1 схемой.

Она содержиттри основных таблицы, содержащие данные о книгах (book), их авторах (author) ииздателях (publisher). Поскольку связь между книгами и авторами множественная с обеихсторон, введена вспомогательная таблица bookauthor.Данные этих таблиц будем представлять в виде объектов трех классов — Book, Author иPublisher, код которых представлен ниже.bookauthorFK aid intFK bid intauthor1,10,Nidintname varchar (255)0,Nid intti tle varchar (255)1,10,Nbookidti tleisbnFK pidintvarchar (255)char(13)intpubli sher1,1Рисунок 1. Схема базы данныхpublic class Book{private int id;private String title;private String isbn;private Set<Author> authors;private Publisher publisher;public int getId()public void setId(int id){ return id;}{ this.id = id; }public String getTitle(){ return title;}public void setTitle(String title) { this.title = title; }public String getISBN()public void setISBN(String isbn){ return isbn;}{ this.isbn = isbn; }public Set<Author> getAuthors(){ return authors; }public void setAuthors(Set<Author> authors) { this.authors = authors; }public Publisher getPublisher() { return publisher; }public void setPublisher(Publisher publisher){ this.publisher = publisher; }}public class Author{private int id;private String name;private String isbn;private Set<Book> books;public int getId()public void setId(int id){ return id;}{ this.id = id; }public String getName(){ return name;}public void setName(String name) { this.name = name; }public Set<Book> getBooks(){ return books; }public void setBooks(Set<Book> books) { this.books = books; }}public class Publisher{private int id;private String title;private Set<Book> books;public int getId()public void setId(int id){ return id;}{ this.id = id; }public String getTitle(){ return title;}public void setTitle(String title) { this.title = title; }public Set<Book> getBooks(){ return books; }public void setBooks(Set<Book> books) { this.books = books; }}Заметим, что в этом коде скалярные поля таблиц (имеющие элементарные типы,например, id, title, isbn) представлены так же, как и связи в виде свойств.

Множественныесвязи представлены в виде коллекций объектов, связанных с данным, причем связь«многие ко многим» представлена двумя полями-коллекциями в соответствующихклассах.Чтобы определить отображение полей в свойства необходим конфигурационный файлпримерно следующего вида.<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="Author" table="author"><id name="id" column="id" type="int"><generator class="identity"/></id><property name="Name" column="name" type="string"/><set name="Books" lazy="true" table="bookauthor"><key column="aid"/><many-to-many class="Book" column="bid"/></set></class><class name="Publisher" table="publisher"><id name="id" column="id" type="int"><generator class="identity"/></id><property name="Title" column="title" type="string"/><set name="Books" inverse="true" lazy="true"><key column="pid"/><one-to-many class="Book"/></set></class><class name="Book" table="book"><id name="id" column="id" type="int"><generator class="identity"/></id><property name="Title" column="title" type="string"/><property name="ISBN" column="isbn" type="string"/><many-to-one name="Publisher" class="Publisher" column="pid"/><set name="Authors" inverse="true" lazy="true" table="bookauthor"><key column="bid"/><many-to-many class="Author" column="aid"/></set></class></hibernate-mapping>В этом файле определяется соответствие между полями таблиц и свойствами классов.Если имена классов и таблиц или свойств и полей совпадают, достаточно указыватьтолько имя класса или свойства.При определении множественных связей используются специфические конструкции.Чтобы получить работоспособный пример, нужен некоторый код, который будетвыполнять запросы к базе данных, используя библиотеку Hibernate.

Такие запросыстроятся с помощью методов createQuery() и createCriteria() класса org.hibernate.Session.Пример работы с описанной базой может выглядеть так.public class DBManager{public static void main(String[] args){Session s = new Configuration().configure().buildSessionFactory().getCurrentSession();s.beginTransaction();List<Book> l = s.createQuery("from Book").list();for(Book b : l){System.out.println("ID: " + b.getId()+ "; Title: " + b.getTitle()+ "; ISBN: " + b.getISBN()+ "; Publisher: " + b.getPublisher().getTitle());System.out.print('{');for(Author a : b.getAuthors()){System.out.print("" + a.getName() + "; ");}System.out.println('}');}}}Для завершения примера необходим только еще один конфигурационный файл Hibernate,определяющий свойства соединения с базой данных. Он может выглядеть так.<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/HibernateConfiguration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernateconfiguration-3.0.dtd"><hibernate-configuration><session-factory><!-- Database connection settings --><property name="connection.driver_class">org.hsqldb.jdbcDriver</property><property name="connection.url">jdbc:hsqldb:hsql://localhost</property><property name="connection.username">sa</property><!-- SQL dialect --><property name="dialect">org.hibernate.dialect.HSQLDialect</property><!-- JDBC connection pool (use the built-in) --><property name="connection.pool_size">1</property><!-- Enable Hibernate's automatic session context management --><property name="current_session_context_class">thread</property><!-- Disable the second-level cache --><property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property><!-- Echo all executed SQL to stdout --><!-- <property name="show_sql">true</property> --><mapping resource="library.hbm.xml"/></session-factory></hibernate-configuration>Основные параметры, которые нужно установить — свойства соединения JDBC, включаякласс драйвера.

Характеристики

Тип файла
PDF-файл
Размер
102,58 Kb
Тип материала
Высшее учебное заведение

Тип файла PDF

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

Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6596
Авторов
на СтудИзбе
296
Средний доход
с одного платного файла
Обучение Подробнее