17527

Робота з базами даних в Java з використанням OR/M Hibernate

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторна робота №1 Тема: Робота з базами даних в Java з використанням OR/M Hibernate. Мета: Навчитись виконувати основні операції при роботі з базами даних в Java використовуючи OR/M Hibernate. Ознайомитись з середовищем програмування Eclipse. Хід роботи: Теоретичні відомості: O/RM ...

Украинкский

2013-07-04

76.5 KB

8 чел.

Лабораторна робота №1

Тема: Робота з базами даних в Java з використанням OR/M Hibernate.

Мета: Навчитись виконувати основні операції при роботі з базами даних в Java, використовуючи OR/M Hibernate. Ознайомитись з середовищем програмування Eclipse.

Хід роботи:

Теоретичні відомості:

O/RM система Hibernate

JavaBeans.

Поняття JavaBeans визначається Sun Microsystems як "повторно-використотовувані програмні компоненти, які можуть маніпулюватися візуально в IDE-середовищі".

Для того, щоб вважатися JavaBean класом, клас повинен відповідати певним критеріям відносно назви методів, конструкторів і поведінки. Ці критерії дають можливість створювати програмні інструменти, що можуть використовувати, повторно використовувати, заміняти і підключати JavaBean'и.

Обов’язкові критерії такі:

  •  клас повинен бути serializable (здатний зберігатися на диску);
  •  в класі повинен бути конструктор без параметрів;
  •  його властивості повинні бути доступні через спеціальні get та set методи, які відповідають загальній системі іменування;
  •  він повинен мати всі необхідні методи обробки подій.

В найпростішому випадку розробники сприймають JavaBean'и як прості Java-класи, що відповідають певним правилам іменування.

Hibernate.

Hibernate є легковісним O/RM сервісом для Java. Легковісний означає, що він спроектований як нескладний для вивчення і використання, а також висуває невисокі вимоги до системних ресурсів в порівнянні з деякими іншими системами.

Hibernate може використовувати XML-документи (другий спосіб – використання анотаційних класів) для відображення зв’язку між таблицями БД і Java-класами, які проектуються у вигляді JavaBeans.

Лістинг програми:

Book.java

package veadtable;

import org.apache.commons.lang.builder.EqualsBuilder;

import org.apache.commons.lang.builder.HashCodeBuilder;

public class Book {

   private int id;

private String nam;

private String avtor;

private String vudav;

private int god;

public int getId() {

 return id;}

public void setId(int number) {

 this.id = number;}

public String getNam() {

 return nam;}

public void setNam(String ima) {

 this.nam = ima;}

public String getAvtor() {

 return avtor;}

public void setAvtor(String avtorik) {

 this.avtor = avtorik;}

public String getVudav() {

 return vudav;}

public void setVudav(String vudavn) {

 this.vudav = vudavn;}

public int getGod() {

 return god;}

public void setGod(int rik) {

 this.god = rik;}

 

public boolean equals(Object other){

 if (!(other instanceof Book  )) return false;

 Book castOther=(Book)other;

 return new EqualsBuilder()

 .append(this.getId(), castOther.getId())

 .isEquals();}

 

public int hashCode(){

 return new HashCodeBuilder()

 .append(getId())

 .toHashCode();}

}

AboutBook.java

package veadtable;

public class AboutBook {

private int id;

private int countPage;

private String kolir;

private int cina;

 

public int getId() {

 return id;}

public void setId(int id) {

 this.id = id;}

public int getCountPage() {

 return countPage;}

public void setCountPage(int countPage) {

 this.countPage = countPage;}

public String getKolir() {

 return kolir;}

public void setKolir(String kolir) {

 this.kolir = kolir;}

public int getCina() {

 return cina;}

public void setCina(int cina) {

 this.cina = cina;}

}

MyTableModel.java

package veadtable;

import java.util.List;

import java.util.ListIterator;

import javax.swing.table.AbstractTableModel;

import org.hibernate.Session;

public class MyTableModel extends AbstractTableModel{

   static List<Book> data;

   static Session session;

  

   public MyTableModel(Session session) {

  this.session=session; }

  

   public void executeQuery(String query) {

       data=session.createQuery(query).list(); }

  

   public Object getValueAt(int aRow,int aColumn) {

       Book row=data.get(aRow);

   

    switch(aColumn) {

           case 0: return row.getId();

        case 1: return row.getNam();

        case 2: return row.getAvtor();

        case 3: return row.getVudav();

        case 4: return row.getGod();

        default:return "";

       }

  }

   public int getColumnCount() {   

       return 5; }

   public int getRowCount() {

       return data.size();}   

}

MyTableAboutModel.java

package veadtable;

import java.util.List;

import java.util.ListIterator;

import javax.swing.table.AbstractTableModel;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

public class MyTableAboutModel extends AbstractTableModel{

   static List<AboutBook> data;

   static Session session;  

   

   public MyTableAboutModel(Session session) {

      this.session=session;   }

  

   public void executeQuery(String query) {

      data=session.createQuery(query).list();}

 

   public Object getValueAt(int aRow,int aColumn) {

       AboutBook row=data.get(aRow);

       switch(aColumn) {

        case 0: return row.getId();

        case 1: return row.getCountPage();

        case 2: return row.getKolir();

        case 3: return row.getCina();

        default:return "";}

   }

   public int getColumnCount() {   

       return 4;}

   public int getRowCount() {

       return data.size();}   

}

Book.hbm.xml

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping

  PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping>

<class name="veadtable.Book" table="Book">

 <id name="id" type="int" column="id">

  <generator class="sequence"/>

 </id>

    <property name="nam" type="java.lang.String" column="imya"/>

 <property name="avtor" type="java.lang.String" />

 <property name="vudav" type="java.lang.String"/>

 <property name="god" type="int" column="rik"/>

 

</class>

</hibernate-mapping>

AboutBook.hbm.xml

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping

  PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping>

<class name="veadtable.AboutBook" table="AboutBook">

 <id name="id" type="int" column="id">

  <generator class="sequence"/>

 </id>

    <property name="countPage" type="int" column="countPage"/>

 <property name="kolir" type="java.lang.String" />

 <property name="cina" type="int" column="cina"/>

 

</class>

</hibernate-mapping>

hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

 <property name="connection.driver_class">

           org.firebirdsql.jdbc.FBDriver

 </property>

 <property name="connection.url">

           jdbc:firebirdsql://localhost/d:/book.fdb?characterEncoding=utf8

 </property>

 <property name="connection.username">sysdba</property>

 <property name="connection.password">masterkey</property>

 <property name="connection.pool_size">10</property>

 <property name="show_sql">true</property>

 <property name="dialect">org.hibernate.dialect.FirebirdDialect</property>

 <property name="useUnicode">true</property>

 <property name="hibernate.hbm2ddl.auto">update</property>

   <!-- Mapping files //-->

    <mapping resource="veadtable/Book.hbm.xml"/>

    <mapping resource="veadtable/AboutBook.hbm.xml"/>

</session-factory>

</hibernate-configuration>

Run.java

package readtable;

import java.awt.BorderLayout;

import java.awt.Dimension;

import java.awt.GridLayout;

import java.util.List;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTable;

import javax.swing.JTextField;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

import veadtable.AboutBook;

import veadtable.MyTableAboutModel;

import veadtable.MyTableModel;

public  class Run{

static Configuration config;

   static SessionFactory sf;

   static Session session;

   public static void main(String[] args) {

       config=new Configuration();

       config.configure("/veadtable/hibernate.cfg.xml");

       sf=config.buildSessionFactory();

       session=sf.openSession();

       

 final JFrame frame= new JFrame("Лабораторна робота №1");

 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 frame.getContentPane().setLayout(null);

 JPanel panel1 = new JPanel();

 JPanel panel2 = new JPanel();

 panel1.setLayout(new GridLayout(1,5));

 panel2.setLayout(new GridLayout(1,5));

 

 final JTextField field1 = new JTextField("Номер №");

 final JTextField field2 = new JTextField("Назва книжки");

 final JTextField field3 = new JTextField("Автор");

 final JTextField field4 = new JTextField("Видавництво");

 final JTextField field5 = new JTextField("Рік");

 

 final JTextField field6 = new JTextField("Номер id");

 final JTextField field7 = new JTextField("Кількість сторінок");

 final JTextField field8 = new JTextField("Колір книжки");

 final JTextField field9 = new JTextField("Ціна в гривнях");

 

 field1.setEditable(false);

 field2.setEditable(false);

 field3.setEditable(false);

 field4.setEditable(false);

 field5.setEditable(false);

 field6.setEditable(false);

 field7.setEditable(false);

 field8.setEditable(false);

 field9.setEditable(false);

 

 panel1.add(field1);

 panel1.add(field2);

 panel1.add(field3);

 panel1.add(field4);

 panel1.add(field5);

 

 panel2.add(field6);

 panel2.add(field7);

 panel2.add(field8);

 panel2.add(field9);

   

 final MyTableModel table = new MyTableModel(session);

 final MyTableAboutModel abouttable = new MyTableAboutModel(session);

 table.executeQuery("from veadtable.Book");

 abouttable.executeQuery("from veadtable.AboutBook");

 final JTable tabl = new JTable(table);

 final JTable tabl1 = new JTable(abouttable);

 frame.getContentPane().add(panel1).setBounds(0, 0, 600,20);

 frame.getContentPane().add(tabl1).setBounds(0, 140, 600, 240);

 frame.getContentPane().add(panel2).setBounds(0, 120, 600, 20);

 frame.getContentPane().add(tabl).setBounds(0, 20, 600, 80);

 frame.setSize(new Dimension(600,300));

 frame.show();

}   

   

}

Результат роботи програми:

Висновок

В даній лабораторній роботі було виконано основні операції при роботі з базами даних в Java, використовуючи OR/M Hibernate та ознайомлено з середовищем програмування Eclipse.


 

А также другие работы, которые могут Вас заинтересовать

35565. ТЕОРИЯ ПЕРЕХОДНЫХ ПРОЦЕССОВ. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЭЛЕКТРОТЕХНИКИ 9.56 MB
  21 Операторные схемы замещения элементов цепи22 Законы Ома и Кирхгофа в операторной форме.38 Численное решение уравнения состояния явный метод Эйлера40 ЛЕКЦИЯ 5 Линейные электрические цепи при импульсных воздействиях Расчет реакции цепи на одиночный импульс воздействия метод наложения.42 Расчет реакции цепи на периодическое импульсное воздействия метод сопряжения интервалов . Дальнейшее состояние цепи называют установившимся процессом.
35566. ЭКСПЛУАТАЦИОННЫЕ СВОЙСТВА АВТОМОБИЛЕЙ 3.43 MB
  АТС и его эксплуатационные свойства4 Вопрос 2. Условия эксплуатации АТС. Тяговоскоростные свойства АТС ТСС АТС. Силы действующие на АТС9 Вопрос 5.
35567. Металлургия черных металлов 1.51 MB
  Дан расчет количества МНЛЗ обращено внимание на выбор типа и основных проектных характеристик МНЛЗ. Типы МНЛЗ и их применение. Расчет количества МНЛЗ для рассматриваемого примера. На обоих предприятиях установлена и внедрена в производство установка внепечной очистки сталей АКВОС на ОАО Электросталь строится 5й СПЦ который планируется оборудовать двумя ДСП20 агрегатами внепечной очистки стали и МНЛЗ.
35568. ТЕХНОЛОГИЯ ПРОИЗВОДСТВА СТАЛИ В ЭЛЕКТРИЧЕСКИХ ПЕЧАХ 1.01 MB
  Курс лекций Технология производства стали в электрических печах ГОУ СПО Красносулинский металлургический колледж г. Данное методическое пособие является кратким курсом лекций по дисциплине Технология производства стали в электрических печах для студентов 3 курса специальности 150108 Порошковая металлургия композиционные материалы покрытия СОДЕРЖАНИЕ АННОТАЦИЯ. ТЕХНОЛОГИЧЕСКИЕ ПРОЦЕССЫ ПРОИЗВОДСТВА СТАЛИ.
35569. Матанализ Конспект лекций 20.29 MB
  Свойства бесконечно малой последовательности. Теорема. Сумма бесконечно малой есть бесконечно малое. Теорема Произведение бесконечно малого есть бесконечно малое. Теорема о представление последовательности имеющий конечный предел. Теоремы о пределах числовых последовательностей. Теорема о пределе суммы/ Теорема о произведение пределов///
35571. Физика. Конспект лекций 1.43 MB
  Статическое электромагнитное поле электростатика Общие свойства электростатического поля Потенциал разумная выборка Поля создаваемые распределениями зарядов с хорошей симметрией Центральная сферическая симметрия. Поле создаваемое равномерно заряженной плоскостью. Поле создаваемое произвольным распределением заряда.
35572. Описание микропроцессора MC68HC908GP32 56 KB
  МК содержат на кристалле резидентное ПЗУ программ режим адресации внешней памяти у большинства моделей отсутствует. Интеграция на кристалле МК трех типов памяти: памяти программ maskROM FLASH оперативной памяти данных статическое ОЗУ и энергонезависимой памяти данных ЕЕPROM которая программируется и стирается в рабочем режиме МК под управлением программы пользователя без подключения дополнительных источников питания. В первой группе следует выделить команду пересылки данных между двумя ячейками памяти минуя регистры центрального...
35573. Транспортная и автомобильная система. ВВЕДЕНИЕ В СПЕЦИАЛЬНОСТЬ 3.42 MB
  В учебном пособии содержатся краткие сведения по обязательным дисциплинам формирующим профессиональные навыки у специалистов в области сервиса автомобильного транспорта: типаж подвижного состава эксплуатационные материалы единая транспортная система и автомобильные перевозки техническая эксплуатация и ремонт автомобилей предприятия автомобильного сервиса и системы фирменного обслуживания.2] Общая компоновка автомобилей [4.3] Типаж автомобилей [4.13] Производственнотехническая база автосервиса [5] Автомобильные эксплуатационные материалы...