Metody dostępu do danych

Podobne dokumenty
Podejście obiektowe do relacyjnych baz danych Hibernate.

Podstawowe wykorzystanie Hibernate

Hibernate. 1. Wprowadzenie. 2. Uruchomienie dostarczonego przykładu. 3. Własny przykład.

NHibernate Hibernate dla platformy.net. Hibernate posiada także dużą społeczność, zatem nietrudno uzyskać jakieś wsparcie w przypadku problemów.

Hibernate mapowanie baz danych

Metody dostępu do danych

Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate

NHibernate. Narzędzie mapowania obiektowo - relacyjnego

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Zaawansowane Techniki Bazodanowe

Wykład 8. SQL praca z tabelami 5

Wybierz kategorię Java Web i typ projektu Web Application. Kliknij przycisk Next >.

Programowanie w języku Java. Bazy danych SQLite w Javie

Wzorce dystrybucji i wspólbieżności autonomicznej

Paweł Cieśla. Dokumentacja projektu

Programowanie wielowarstwowe i komponentowe

Java i bazy danych. 1. JDBC podstawy, transakcje. 2. Mapowanie relacyjno obiektowe. Hibernate, przykład.

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Wzorce logiki dziedziny

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Autor: Joanna Karwowska

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Metody dostępu do danych

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

JPA Java Persistance API

Język SQL, zajęcia nr 1

Zaawansowane aplikacje internetowe - laboratorium

akademia androida Składowanie danych część VI

Bazy danych 9. SQL Klucze obce Transakcje

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

METODY PROGRAMOWANIA

Bazy danych Ćwiczenia projektowe

Wykład 05 Bazy danych

Bazy danych 6. Klucze obce. P. F. Góra

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Zaawansowane aplikacje internetowe - laboratorium

Hurtownia Świętego Mikołaja projekt bazy danych

Język SQL, zajęcia nr 2

Paweł Rajba

Bartosz Jachnik - Kino

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Bazy Danych i Usługi Sieciowe

Bazy danych 9. Klucze obce Transakcje

Bazy danych 9. Klucze obce Transakcje. P. F. Góra

Projektowanie aplikacji z bazami danych

Podstawowe informacje o technologii Java Persistence API - przykład

Zarządzanie obiektami bazy danych Oracle11g

Relacyjne bazy danych. Podstawy SQL

Technologia Programowania 2016/2017 Wykªad 12

Gdzie jest moja tabela?

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Bazy danych i usługi sieciowe

przygotował: Bazy danych Paweł Kasprowski Wersja 2006Z

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Bazy danych - Materiały do laboratoriów VIII

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Relacje. 1. Modelowanie relacji. - siedem rodzajów relacji J2EE. - relacje jedno i wielokierunkowe, - relacje reprezentowane przez kolekcje.

Relacyjne bazy danych. Podstawy SQL

Internetowe bazy danych

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

ACESS- zadania z wykorzystaniem poleceń SQL

Zbiór pytań nr 5. 2 Które stwierdzenie opisuje najlepiej zbiór uprawnień dostępny po wykonaniu

Projektowanie systemów baz danych

Relacje. 1. Modelowanie relacji. - siedem rodzajów relacji J2EE. - relacje jedno i wielokierunkowe, - relacje reprezentowane przez kolekcje.

Integracja Comarch e-sprawozdania

BAZA DANYCH SIECI HOTELI

Bazy danych i usługi sieciowe

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Bazy danych tworzenie aplikacji bazodanowych ORM / JPA

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

Wykład 5. SQL praca z tabelami 2

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Instrukcja laboratoryjna nr.4

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

MVC w praktyce tworzymy system artykułów. cz. 1

Wprowadzenie do JDBC z wykorzystaniem bazy H2

Bazy danych. Dr inż. Paweł Kasprowski

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

mgr inż. Michał Paluch

Automatyczne generowanie kodu. 4Developers, 26 marca 2010

Paweł Rajba

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

Programowanie w Ruby

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

Bazy danych 10. SQL Widoki

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL,

Oracle PL/SQL. Paweł Rajba.

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Zaawansowane aplikacje WWW - laboratorium

Transkrypt:

Metody dostępu do danych dr inż. Grzegorz Michalski Na podstawie wykładów dra inż. Juliusza Mikody

Obiekt interfejsu Session Jest to podstawowy interfejs komunikacji pomiędzy aplikacją, a API Hibernate Jest on bezpośrednio związany z mechanizmem trwałości Cykl życia sesji jest ograniczony trwaniem transakcji. Głównym zadaniem sesji jest zapis, odczyt i usuwanie mapowanych obiektów z/do bazy danych Jeden obiekt sesji powinien istnieć dla jednego wątku aplikacji

Trwałość, a obiekt sesji Obiekt zdolny do trwałości w bibliotece Hibernate może występować w trzech stanach: Transient przejściowy : nie trwały, nie związany z żadną sesją Utrwalenie: save(), persist() lub saveorupdate() Persistent trwały : związany z sesją i unikalny dla tej sesji Usuniecie obiektu: delete() Detached - odłączony: wcześniej trwały, nie związany z żadną sesją

Zmiany trwałości obiektów Wynikiem save() i persist() jest zapytanie typu INSERT Wynikiem delete() jest zapytanie typ DELETE Wynikiem update() lub merge() powoduje wykonanie zapytania UPDATE. Wynikiem saveorupdate() oraz replicate() jest wykonanie zapytania typu INSERT lub UPDATE.

Obsługa sesji Session session = HibernateUtil.getSessionFactory().openSession(); Transaction transaction = null; try { transaction = session.begintransaction(); \\ obs uga obiektów sesyjnych transaction.commit(); } catch (HibernateException e) { transaction.rollback(); e.printstacktrace(); } f inally { session.close(); }

Odczyt danych Pobranie obiektu Query: Session.createQuery(String HQL) Odczyt pełnej listy obiektów: List Query.list() - odczytuje listę obiektów Iterator Query.iterate() - odczyt pojedynczych obiektów Odczyt pojedynczego obiektu: Object Query.uniqueResult() Odczyt źródła danych: ScrollableResults Query.scroll() ScrollableResults Query.scroll(ScrollMode scrollmode) ScrollMode: FORWARD_ONLY, SCROLL_INSENSITIVE, SCROLL_SENSITIVE

Odczyt danych z bazy transaction = session.begintransaction(); // HQL query string zapytania do obiektów Query query = session.createquery("from User"); // Wykonanie zapytania i odczyt danych for (Object user : query.list()) { System.out.println(user); } transaction.commit();

Filtrowanie danych transaction = session.begintransaction(); // HQL query string - zapytanie Query query = session.createquery( "from User where name = :name"); // wiazanie parametru query.setstring("name", "Tomasz"); // wkonanie zapytania i odczyt danych for (Object user : query.list()) { } System.out.println(user); transaction.commit();

Odczyt danych ResultSet transaction = session.begintransaction(); // HQL query string Query query = session.createquery( "from User where name = :name"); // wiazanie parametrów query.setstring("name", "Tomasz"); // wykonanie zapytania ScrollableResults rs = query.scroll(); // odczyt biektów while (rs.next()) { System.out.println(rs.get(0)); } transaction.commit();

Powiązanie obiektów public class Group { private long id; private String title; private User user; public Group() { } public Group(String title) { super(); this.title = title; } public long getid() { return id; } public String gettitle() { return title; } public void settitle(string title) { this.title = title;} public User getuser() {return user;} public void setuser(user user) {this.user = user;}

Powiązanie obiektów 1 do wielu <hibernate-mapping> <class name="pl.tet.group" table="group_tab"> <id name="id" type="long" access="field"> <column name="id" /> <generator class="identity" /> </id> <property name="title" type="java.lang.string"> <column name="title" /> </property> <many-to-one name="user" class="pl.tet.user" fetch="join"> <column name="user_id" /> </many-to-one> </class> </hibernate-mapping>

Plik metadanych projektu <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory > <property name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property> <property name="hibernate.connection.password">*****</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property> <property name="hibernate.connection.username">*****</property> <property name="hibernate.dialect">org.hibernate.dialect.mysql5dialect</property> <property name="show_sql">true</property> <property name="hbm2ddl.auto">create</property> <mapping resource="pl/tet/user.hbm.xml"/> <mapping resource="pl/tet/group.hbm.xml"/> </session-factory> </hibernate-configuration>

Wprowadzanie danych transaction = session.begintransaction(); User user = new User("Tomasz", "Nowak"); session.save(user); Group group = new Group("Osoby"); group.setuser(user); session.save(group); transaction.commit(); Obiekt dowiązywany musi istnieć w bazie danych!

Operacje kaskadowe all wszystkie poniżej create utwórz merge złącz delete usuń save-update zapisz zachowując zmiany evict wyrzuć replicate powtórz lock zablokuj refreh odświerz delete-orphan usuwanie kaskadowe w bazie danych

Wprowadzanie danych <many-to-one name="user" class="pl.tet.user" access="field" fetch="join" cascade="all"> <column name="user" /> </many-to-one> transaction = session.begintransaction(); User user = new User("Tomasz", "Nowak"); //session.save(user); Group group = new Group("Osoby"); group.setuser(user); session.save(group); transaction.commit();

Powiązanie typu Set public class Group { private long id; private String title; private Set<User> users = new HashSet<User>(); public Set<User> getusers() { return users; } public void setusers(set<user> users) { this.users = users; } public void adduser(user user) { this.users.add(user); }

Metadane wiele do wielu <hibernate-mapping> <class name="pl.tet.group" table="group_tab"> <id name="id" type="long" access="field"> <column name="id" /> <generator class="assigned" /> </id> <property name="title" type="java.lang.string"> <column name="title" /> </property> <set name="users" table="link_user_group" inverse="false" lazy="true"> <key column="group_id" foreign-key="fk_user_group" /> <many-to-many class="pl.tet.user" column="user_id" foreign-key="fk_group_user" /> </set> </class> </hibernate-mapping>

Struktura tabel create table GROUP_TAB ( ID bigint not null, TITLE varchar(255), primary key (ID)) create table USER ( USERID bigint not null, NAME varchar(255), SURNAME varchar(255), primary key (USERID)) create table LINK_USER_GROUP ( group_id bigint not null, user_id bigint not null, primary key (group_id, user_id))

Struktura tabel alter table LINK_USER_GROUP add index fk_user_group (group_id), add constraint fk_user_group foreign key (group_id) references GROUP_TAB (ID) alter table LINK_USER_GROUP add index fk_group_user (user_id), add constraint fk_group_user foreign key (user_id) references USER (USERID)