17527

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

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

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

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

Украинкский

2013-07-04

76.5 KB

7 чел.

Лабораторна робота №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.


 

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

36112. Конспект лекцій із педагогічної психології 1.74 MB
  Закономірності інтелектуального і особистісного розвитку дитини як субєкта навчальної діяльності організовуваної і керованої педагогом в різнихумоах освітнього процесу Зимняя І. Завдання Вивчення психологічних основ діяльності педагога. Вивчення фактів механізмів закономірностей розвиваючого навчання Визначення закономірностей умов критеріїв засвоєнь знанб формування операційного складу діяльності на основі процесц вирішення завдань Визначення психологічних основ діагностики рівня і якості засвоєння та співвідношення з освітніми...
36113. Планування діяльності підприємства. Планологія як наука про планування 1.33 MB
  Процес планування діяльності підприємств має багато складових: виробництво реалізація продукції її собівартість забезпеченість трудовими матеріальними і фінансовими ресурсами фінансові результати роботи фінансовий стан підприємства його інвестиційна діяльність. У практиці традиційного технікоекономічного планування на вітчизняних підприємствах такі пофакторні розрахунки завжди супроводжували розробку планів із підвищення продуктивності праці і зниження витрат на виробництво продукції. Враховуючи і те що підприємствам які працюють в...
36114. Бюджетна система України 363 KB
  Сутність призначення і роль бюджету держави. Роль бюджету у фінансовокредитному механізмі. Основним джерелом формування бюджету держави є ВВП. Роль і місце бюджету в суспільстві визначається фінансовою моделлю країни.
36115. Проект реконструкції булочного цеху ТзОВ «Хліб Трейд»(з використанням прискорених способів тісто приготування) 976.5 KB
  Темою дипломного проекту передбачено технічне переоснащення пекарні «ТзОВ Трейд» з установкою лінії виробництва хліба. На лінії № 1 виробляється хліб дніпровський, на лінії № 2 – батони канапкові. В результаті реконструкції тістомісильні машини Стандарт замінені на двошвидкісні тістомісильні машини Прима 160А, що покращить реологічні властивості тіста, прискорить дозрівання тіста і скоротить технологічний процес приготування виробів
36116. Конспект лекцій по Інформатиці 932.5 KB
  Для позначення програмних засобів під якими розуміється сукупність всіх програм використовуваних компютерами і область діяльності по їхньому створенню й застосуванню використається слово Software буквально мякі вироби що підкреслює рівнозначність самої машини й програмного забезпечення а також здатність програмного забезпечення модифікуватися пристосовуватися й розвиватися. Для позначення частини інформатики повязаної з розробкою алгоритмів і вивченням методів і прийомів їхньої побудови застосовують термін Braіnware англ. А...
36117. Технології. Курс лекцій 3.43 MB
  ПРОЕКТУВАННЯ ЯК СКЛАДОВА СУЧАСНОГО ВИРОБНИЦТВА ТА ЖИТТЄДІЯЛЬНОСТІ ЛЮДИНИ ЛЕКЦІЯ 1. Основні ознаки проектної діяльності. Проектування не є принципово новим видом людської діяльності. Творчі відкриття винахідника чи науковця створення архітектурних споруд чи художніх творів це прояв творчості і водночас це проектування у певній галузі людської діяльності.
36118. Теория ймовірностей та математична статистика 3.77 MB
  Числові характеристики вибіркового розподілу. Значення функції щільністі нормального розподілу. Функція розподілу нормального закону. Квантилі розподілу Стьюдента.
36119. Податкові системи зарубіжних країн 585 KB
  Так у Стародавньому Римі основними податками які справлялися у натуральній формі були поземельний податок податки на живий інвентар фруктові дерева виноградники та нерухомість. Іншим видом податку тих часів було поплужне тобто податок з кожного плуга. Після приєднання українських земель до Росії основним податком стає подимне або подвірний податок який сплачувався кожним селянським двором. Тому цей податок отримав назву поголовщина або подушна подать.
36120. ПОЛІТОЛОГІЯ. Курс лекцій 5.29 MB
  СТАНОВЛЕННЯ ТА РОЗВИТОК ПОЛІТИЧНОЇ ДУМКИ. РОЗВИТОК ПОЛІТИЧНОЇ ДУМКИ В УКРАЇНИ. ДЕРЖАВА ГОЛОВНИЙ ІНСТИТУТ ПОЛІТИЧНОЇ СИСТЕМИ. Проте в новий час розвиток політичної думки та уявлень про державу призвів до відокремлення науки про державу та її обособлення від політичної науки.