SlideServe
Menu
Préférences
© SlideServe · v2026

Java Data Persistence Using Hibernate

hsamuels avatar
25 diapositives · 350 Views · Jan 02, 2020

Java Data Persistence Using Hibernate. Jack Gardner October 2004. What is Hibernate What is ORM Create Example Read Examples Persistable Classes Database Table Mapping Class to Table Configuration Configuration Properties. Session Transaction Object Lifecycle Query Options

Java Data Persistence Using Hibernate - slide 1
01 / 25Java Data Persistence Using Hibernate
1 / 17

Télécharger la présentation

Java Data Persistence Using Hibernate
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Java Data Persistence Using Hibernate Jack Gardner October 2004

  2. What is Hibernate What is ORM Create Example Read Examples Persistable Classes Database Table Mapping Class to Table Configuration Configuration Properties Session Transaction Object Lifecycle Query Options Associations References Overview

  3. What is Hibernate? • An object/relational mapping (ORM) implementation • Open source • Development started late 2001

  4. What is Object/Relational Mapping? • Provides a transparent bridge between objects and database tables • Allows source code to work with objects and their attributes vs. tables and columns • Eliminates need for most/all SQL • Eliminates use of query result sets

  5. Create Example // create a new object Widget w = new Widget(); w.setName(“WidgetA”); w.setValue(10); // persist it session.save(w);

  6. Read Examples // get a known widget Widget w = (Widget) session.load(Widget.class, “WidgetA”); // get all widgets List widgets = session.find(“from Widget”);

  7. Persistable Classes • Classes are simply JavaBeans public class Widget { privateString name; privateint value; public Widget() {} publicString getName() {return name;} publicvoid setName(String s) {name = s;} publicint getValue() {return value;} publicvoid setValue(int i) {value = i;} }

  8. Database Table • Persistable classes have an associated table

  9. Mapping Class to Table • widget.hbm.xml <hibernate-mapping> <classname=“mypackage.Widget”table=“WIDGET”> <idname=“name”column=“NAME”> <generatorclass=“assigned”/> </id> <propertyname=“value”column=“VALUE”/> </class> </hibernate-mapping>

  10. Configuration import net.sf.hibernate.cfg.Configuration; import net.sf.hibernate.SessionFactory; // build configuration based on properties Configuration config = new Configuration(); // add persistable classes to configuration config.addClass(Widget.class); // build a session factory based on configuration SessionFactory sessionFactory = config.buildSessionFactory();

  11. Configuration Properties • hibernate.properties hibernate.dialect=net.sf.hibernate.dialect.Oracle9Dialect hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver hibernate.connection.url=jdbc:oracle:thin:@oracle.cis.ksu.edu:1521:ORACLE hibernate.connection.username=<myusername> hibernate.connection.password=<mypassword>

  12. Session • Lightweight and inexpensive to create/destroy • Not threadsafe – each thread needs its own • Obtained from SessionFactory instance Session session = sessionFactory.openSession(); // perform persistence operations session.close();

  13. Transaction • Set of operations that are all committed or all rolled back • Obtained from Session instance • Can perform multiple transactions within session Transaction tx = session.beginTransaction(); // perform persistence operations tx.commit();

  14. Object Lifecycle • Transient • Newly created object • Persistent • New object has been “saved” • Previously saved object has been “read” • Detached • Session closed • Persistent object serialized • Can be reattached later to become persistent

  15. Query Options • Hibernate Query Language (HQL) Query q = session.createQuery(“from Widget w where w.value > :value”); q.setParameter(“value”, someValue); List widgets = q.list(); • Criteria API Criteria c = session.createCriteria(Widget.class); c.add(Expression.gt(“value”, someValue); List widgets = c.list(); • SQL Query q = session.createSQLQuery(“select {w.*} from WIDGET {w} where VALUE > :value”, “w”,Widget.class); q.setParameter(“value”, someValue); List widgets = q.list();

  16. Associations • Supports all association types • one-to-one • one-to-many • many-to-many • Inherently unidirectional • Supports bidirectional

  17. One-to-Many Example: Unidirectional • Option 1: Group  Member public class Group public class Member { { privateString name; privateString name; private Collection members; … … } } • Option 2: Group  Member public class Group public class Member { { privateString name; privateString name; … private Group group; } … }

  18. One-to-Many Example: Bidirectional • Group  Member public class Group public class Member { { privateString name; privateString name; private Collection members; private Group group; … … } } • Application responsible for maintaining each end of association

  19. One-to-Many Table Structure • Underlying table structure not affected by directionality • Standard implementation • Foreign key in many-side table • Alternate implementation • Use join table, with no-duplicate constraint on many-side foreign key

  20. One-to-Many Table Structure

  21. Many-to-Many Example: Unidirectional • Option 1: Group  Member public class Group public class Member { { privateString name; privateString name; private Collection members; … … } } • Option 2: Group  Member public class Group public class Member { { privateString name; privateString name; … private Collection groups; } … }

  22. Many-to-Many Example: Bidirectional • Group  Member public class Group public class Member { { privateString name; privateString name; private Collection members; private Collection groups; … … } } • Application responsible for maintaining each end of association

  23. Many-to-Many Table Structure • Underlying table structure not affected by directionality • Implemented using join table

  24. Many-to-Many Table Structure

  25. References • Bauer, Christian and Gaven King, Hibernate in Action, Manning, 2005. • Hibernate Reference Documentation, Version 2.1.6, Hibernate, 2004.