EXtreme Programming XP Тема 8. XP Объектно-реляционное связывание позволяет связать реляционную базу данных и простые объекты Java. Обычно связывание.

Slides:



Advertisements
Similar presentations
TPTP Data Model 1 Database support for TPTP EMF based data models using Elver/Hibernate Guru Nagarajan July 14, 2006.
Advertisements

11 Copyright © 2005, Oracle. All rights reserved. Using Arrays and Collections.
Programming for Beginners Martin Nelson Elizabeth FitzGerald Lecture 3: Flow Control I: For Loops.
Transparency No. 1 Java Collection API : Built-in Data Structures for Java.
Input review If review Common Errors in Selection Statement Logical Operators switch Statements Generating Random Numbers practice.
Linked List A linked list consists of a number of links, each of which has a reference to the next link. Adding and removing elements in the middle of.
AITI Lecture 19 Linked List Adapted from MIT Course 1.00 Spring 2003 Lecture 26 and Tutorial Note 9 (Teachers: Please do not erase the above note)
Creating Tables, Setting Constraints, and Datatypes What is a constraint and why do we use it? What is a datatype? What does CHAR mean? Page 97 in Course.
Sequence of characters Generalized form Expresses Pattern of strings in a Generalized notation.
EXtreme Programming XP Тема 3. XP Пусть есть некоторая информационная система для банков. В качестве основной валюты для расчетов используется доллар,
Introduction to Computer Science Robert Sedgewick and Kevin Wayne Recursive Factorial Demo pubic class Factorial {
SharePoint 2013 apps to be or not to be. Alexander Krupsky Artur Kukharevich.
1 Arrays An array is a special kind of object that is used to store a collection of data. The data stored in an array must all be of the same type, whether.
Java ME persistence made easy! by Thiago Rossato Thiago Moreira.
Учитель английского языка МАОУ СОШ № 1 г. Березники Панова Юлия Александровна.
Пример реализации приложения Программа отправки и анализа SMS-сообщений (через с WEB-интерфейсом.
WaveMaker Visual AJAX Studio 4.0 Training
EXtreme Programming XP Тема 11. XP Для работы по администрированию таблицы Department создаем классы: DepartmentListController; EnterDepartmentController;
SCJP 6.0 Lecturer Kuo-Yi Chen 151, 153, 154, 155, 156, 157
EXtreme Programming XP Тема 10. XP 1. Контроллеры (SimpleFormController, UrlFilenameViewController); 2. Модель и представление соединяются посредством.
Rapid Persistence Layer Development with Hibernate Rapid Persistence Layer Development with Hibernate Tyler Mendenhall E-gineering,
1.  Understanding about How to Working with Server Side Scripting using PHP Framework (CodeIgniter) 2.
ООП Классы. Данные отдельно, методы отдельно struct Node { Node* next; void* data; }; struct List { Node* first; int size; }; void* allocate() { … } void.
1 Генерация контекстных ограничений для баз данных Выполнил: Жолудев В. Научный руководитель: Терехов А.Н. Рецензент: Иванов А.Н.
19-Jun-15 SQL. SQL is Structured Query Language Some people pronounce SQL as “sequel” Other people insist that only “ess-cue-ell” is the only correct.
Пользовательские действия (custom actions) в JSP. JSTL.
Murali Mani SQL DDL and Oracle utilities. Murali Mani Datatypes in SQL INT (or) INTEGER FLOAT (or) REAL DECIMAL (n, m) CHAR (n) VARCHAR (n) DATE, TIME.
Session-02.
Java MS Access database connectivity Follow these steps: 1)Go to the start->Control Panel->Administrative Tools- > data sources. 2)Click Add button and.
The Easiest Way To Learn Hibernate: YouTube Videos and the Online Tutorial
Object Persistence using Hibernate
Training - Day 3 OJB. What is OR Mapping? OR Mapping is the mapping of relational database tables to objects (Java Objects in our case) Many OR Mapping.
Agenda What is Hibernate Spring Integration Questions Overview
Dr. Magdi AMER Unit 2 Introduction to Database. Intro Many programs need to save information on disk. The role of DB system is to provide a layer of abstraction.
JDBC Tutorial MIE456 - Information Systems Infrastructure II Vinod Muthusamy November 4, 2004.
JDBC Java and Databases, including Postgress. JDBC l Developed by Industry leaders l Three main goals: –JDBC should be an SQL-level API –JDBC should capitalize.
CS 160: Software Engineering October 6 Class Meeting Department of Computer Science San Jose State University Fall 2014 Instructor: Ron Mak
SQL Basics. 5/27/2016Chapter 32 of 19 Naming SQL commands are NOT case sensitive SQL commands are NOT case sensitive But user identifier names ARE case.
Most information comes from Chapter 3, MySQL Tutorial: 1 MySQL: Part.
Hibernate 3.0. What is Hibernate Hibernate is a free, open source Java package that makes it easy to work with relational databases. Hibernate makes it.
JDBC – Java Database Concentricity
Java Data Persistence Using Hibernate Jack Gardner October 2004.
SQL Basics. What is SQL? SQL stands for Structured Query Language. SQL lets you access and manipulate databases.
Saint Petersburg, 2011 Java Lecture Generics. Quiz ArrayList lst = new ArrayList(); Collection c = lst; lst.add("one"); lst.add(“two"); lst.add(“three");
Pavel Titenkov © SQL. Pavel Titenkov © Общий обзор англ. Structured Query Language — «язык структурированных запросов»англ. Это наиболее часто используемый.
Constraints cis 407 Types of Constraints & Naming Key Constraints Unique Constraints Check Constraints Default Constraints Misc Rules and Defaults Triggers.
EXAMPLE I An application showing JDBC access to Cloudscape.
Access Databases from Java Programs via JDBC Tessema M. Mengistu Department of Computer Science Southern Illinois University Carbondale
Ch 7. Working with relational data. Transactions Group of statements executed as a group. If all statements execute successfully, changes are committed.
1 JDBC – Java Database Connectivity CS , Spring 2010.
Java Object-Relational Layer Sharon Diskin GUS 3.0 Workshop June 18-21, 2002.
CS422 Principles of Database Systems Object-Relational Mapping (ORM) Chengyu Sun California State University, Los Angeles.
Современные технологии баз данных Лекция 7. Объектно-реляционное отображение (ORM) Технология отображения объектов какого- либо объектно-ориентированного.
Современные технологии баз данных
Сергей Копорулин | Эксперт по технологиям | Microsoft
CS320 Web and Internet Programming SQL and MySQL
Introduction to MySQL.
HW#4 Making Simple BBS Using JDBC
Управление SQL Server c помощью PowerShell
Сетевое взаимодействие
Класс Object Макаревич Л. Г..
ASP.NET 4 Сергей Байдачный специалист по разработке ПО
November CTP Андрей Коршиков MCP-клуб, Краснодар Декабрь 2009.
Прогнозирование физико-химических свойтсв органических соеденений на основнании их химических строения экпериментально- статисттческими методами Органикалық.
CS3220 Web and Internet Programming SQL and MySQL
Сортировка, поиск и фильтрация данных в базе данных и выборках
Компоненты доступа к данным.
JDBC Example.
CS3220 Web and Internet Programming SQL and MySQL
SQL (Structured Query Language)
Presentation transcript:

eXtreme Programming XP Тема 8

XP Объектно-реляционное связывание позволяет связать реляционную базу данных и простые объекты Java. Обычно связывание осуществляется с помощью файлов XML. Представитель такой технологии – Hibernate.

Вертикальное связывание. Все классы в иерархии привязываются к различным таблицам. Например, если имеются классы Dog и Cat, которые наследуют от абстрактного класса Animal, то в базе данных должно быть три таблицы. Горизонтальное связывание. К таблице привязан конкретный класс. Объединяющее связывание. К единой таблице привязывается несколько классов. XP

Это облегченный механизм баз данных Java (2001 г.). Он достаточно маленький, поэтому способен полностью располагаться в оперативной памяти или полностью включиться в war-файл приложения. Для работы требуется скопировать hsqldb.jar в папку lib проекта.

XP

XP <java fork="true" classname="${hclass}" classpath="${hjar}" args="${hfile} -dbname.0 ${halias} –port ${hport}"/>

XP <java fork="true" classpath="${hjar}" classname="org.hsqldb.util.DatabaseManagerSwing"/> <!-- При связывании с базой данных указывается аргумент url. Например, для учебного проекта следует указать url=jdbc:hsqldb:hsql://localhost:9005/timex -->

XP

<sql classpath="${hjar}" driver="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:hsql://localhost:${hport}/${halias}" userid="sa" password="" print="yes"> -- Step 1: Drop objects if they exist DROP TABLE Department IF EXISTS; DROP TABLE Employee IF EXISTS; DROP TABLE Timesheet IF EXISTS; DROP INDEX TimesheetIndex IF EXISTS; DROP INDEX DepartmentCodeIndex IF EXISTS; DROP INDEX EmployeeIdIndex IF EXISTS;

XP -- Step 2: Create tables CREATE TABLE Department ( departmentCode CHAR(2) NOT NULL, name VARCHAR(255) NOT NULL ); CREATE TABLE Employee ( employeeId INT NOT NULL, name VARCHAR(100) NOT NULL, VARCHAR(255) NOT NULL, employeeCode CHAR(1) NOT NULL, password VARCHAR(10) NOT NULL, managerEmployeeId INT NULL );

XP CREATE TABLE Timesheet ( timesheetId IDENTITY NOT NULL, employeeId INT NOT NULL, statusCode CHAR(1) NOT NULL, periodEndingDate DATE NOT NULL, departmentCode CHAR(4) NOT NULL, minutesMon INT NULL, minutesTue INT NULL, minutesWed INT NULL, minutesThu INT NULL, minutesFri INT NULL, minutesSat INT NULL, minutesSun INT NULL );

-- Step 3: Create indexes CREATE UNIQUE INDEX TimesheetIndex ON Timesheet (employeeId, periodEndingDate); CREATE UNIQUE INDEX DepartmentCodeIndex ON Department (departmentCode); CREATE UNIQUE INDEX EmployeeIdIndex ON Employee (employeeId); -- Step 4: Insert some reference and test data INSERT INTO Department (departmentCode, name) VALUES ('AC', 'Accounting'); INSERT INTO Department (departmentCode, name) VALUES ('CS', 'Customer Support'); INSERT INTO Department (departmentCode, name) VALUES ('HR', 'Human Resources'); INSERT INTO Department (departmentCode, name) VALUES ('IT', 'Information Technology'); XP

INSERT INTO Employee (employeeId, name, employeeCode, password, , managerEmployeeId) VALUES (1, 'Mike Dover', 'H', 'rapidjava', 3); INSERT INTO Employee (employeeId, name, employeeCode, password, , managerEmployeeId) VALUES (2, 'Ajay Kumar', 'H', 'visualpatterns', 3); INSERT INTO Employee (employeeId, name, employeeCode, password, , managerEmployeeId) VALUES (3, 'Teresa Walker', 'M', 'agilestuff', 4); INSERT INTO Employee (employeeId, name, employeeCode, password, ) VALUES (4, 'Tom Brady', 'E', 'superbowl', XP

INSERT INTO Timesheet(timesheetId, employeeId, statusCode, periodEndingDate, departmentCode, minutesMon, minutesTue, minutesWed,minutesThu, minutesFri, minutesSat, minutesSun) VALUES (1, 2, 'P', ' ', 'IT', 480, 480, 360, 480, 480, 0, 0); INSERT INTO Timesheet(timesheetId, employeeId, statusCode, periodEndingDate, departmentCode, minutesMon, minutesTue, minutesWed, minutesThu, minutesFri, minutesSat, minutesSun) VALUES (2, 1, 'A', ' ', 'HR', 0, 0, 480, 480, 480, 0, 0); -- Step 5: Verify tables and test data look ok SELECT * FROM Department; SELECT * FROM Employee; SELECT * FROM Timesheet; XP

В lib-каталог следует скопировать jar-файлы: hibernate3.jar antlr.jar encache-1.1.jar antlr-2.7.6rc1.jar asm-attrs.jar asm.jar cglib jar commons-collections jar commons-logging jar dom4j jar jta.jar log4j jar

XP Используется три типа файлов Hibernate: файл конфигурации Hibernate (hibernate.cfg.xml) соответствующие классы Java файлы таблиц связывания (с расширением.hbm.xml).

XP <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" " 3.0.dtd"> org.hsqldb.jdbcDriver jdbc:hsqldb:hsql://localhost:9005/timex sa

XP 2 true org.hibernate.dialect.HSQLDialect thread org.hibernate.cache.NoCacheProvider

XP <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" " <class name="com.visualpatterns.timex.model.Department" table="Department">

XP Может содержать определение связи:

XP package com.visualpatterns.timex.model; public class Department { String departmentCode; String name; public String getDepartmentCode() { return this.departmentCode; } public void setDepartmentCode(String departmentCode) { this.departmentCode = departmentCode; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } }

XP Постоянные объекты – это объекты, которые в настоящее время связаны с сеансом Hibernate (гарантируется, что они соответствуют реальным записям базы данных). Отсоединенные объекты – после закрытия сеансов ими становятся постоянные объекты. Временные объекты – это объекты, которые не связаны с сеансом Hibernate и не имеют идентификатора объекта.

XP package com.visualpatterns.timex.test; import java.util.List; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.visualpatterns.timex.model.Department; public class HibernateTest { public static void main(String args[]) throws Exception { SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession();

XP Transaction tx = session.beginTransaction(); Department department; department = (Department) session.get(Department.class, "IT"); System.out.println("Name for IT = " + department.getName()); List departmentList = session.createQuery("from Department").list(); for (int i = 0; i < departmentList.size(); i++) { department = (Department) departmentList.get(i); System.out.println("Row " + (i + 1) + "> " + department.getName() + " (" + department.getDepartmentCode() + ")"); } tx.commit(); session.close(); sessionFactory.close();} }

XP <java fork="true" classpathref="master-classpath" classname="com.visualpatterns.timex.test.HibernateTest" />

XP Department department = (Department) session.get(Department.class, "IT"); Или Department department=(Department) session.load(Department.class,IT);

XP List departmentList = session.createQuery("from Department").list(); Или с помощью критериев: List departmentList = session.createCriteria(Department.class). add(Restrictions.eq("departmentCode", "IT")).list(); Другие ограничения – between, in, isEmpty, isNull, and, or, like, conjunction, disjunction

XP Запросы можно создавать в файле связывания, именовать их и обращаться к ним из классов по имени. Например, в файле связывания: from Timesheet where employeeID=:employeeID Обращение к этому запросу выглядит так: List departmentList = session.getNamedQuery(getTomesheet).setInteger (employeeID,1).list();

XP Department d1=new Department(); d1.setDepartmentCode("MY"); d1.setName("ПРОБНОЕ НАЗВАНИЕ"); session.saveOrUpdate(d1); Или с помощью sql-запроса: session.createSQLQuery("insert into Department (name,departmentCode) values (?,?)").setString(0, "proba").setString(1, "PB").executeUpdate(); Существуют функции установки параметров других типов, например, setInteger, setDate.

XP Department d2=(Department) session.get(Department.class,PB); d2.setName(Новое имя); session.saveOrUpdate(d2); Или с помощью sql-запроса.

XP Department d2=(Department) session.get(Department.class,PB); d2.delete(d2); Или с помощью sql-запроса.