K-State CIS 764 - Java Data Persistence Using Hibernate

Unformatted text preview:

Java Data Persistence Using HibernateOverviewWhat is Hibernate?What is Object/Relational Mapping?Create ExampleRead ExamplesPersistable ClassesDatabase TableMapping Class to TableConfigurationConfiguration PropertiesSessionTransactionObject LifecycleQuery OptionsAssociationsOne-to-Many Example: UnidirectionalOne-to-Many Example: BidirectionalOne-to-Many Table StructureSlide 20Many-to-Many Example: UnidirectionalMany-to-Many Example: BidirectionalMany-to-Many Table StructureSlide 24ReferencesJava Data Persistence Using HibernateJack GardnerOctober 20042Overview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References3What is Hibernate?An object/relational mapping (ORM) implementationOpen sourceDevelopment started late 20014What 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 sets5Create Example// create a new objectWidget w = new Widget();w.setName(“WidgetA”);w.setValue(10);// persist itsession.save(w);6Read Examples// get a known widgetWidget w = (Widget) session.load(Widget.class, “WidgetA”);// get all widgetsList widgets = session.find(“from Widget”);7Persistable ClassesClasses are simply JavaBeanspublic class Widget{private String name;private int value;public Widget() {}public String getName() {return name;}public void setName(String s) {name = s;}public int getValue() {return value;}public void setValue(int i) {value = i;}}8Database TablePersistable classes have an associated table9Mapping Class to Tablewidget.hbm.xml<hibernate-mapping><class name=“mypackage.Widget” table=“WIDGET”> <id name=“name” column=“NAME”> <generator class=“assigned”/></id><property name=“value” column=“VALUE”/></class></hibernate-mapping>10Configurationimport net.sf.hibernate.cfg.Configuration;import net.sf.hibernate.SessionFactory;// build configuration based on propertiesConfiguration config = new Configuration();// add persistable classes to configurationconfig.addClass(Widget.class);// build a session factory based on configurationSessionFactory sessionFactory = config.buildSessionFactory();11Configuration Propertieshibernate.propertieshibernate.dialect=net.sf.hibernate.dialect.Oracle9Dialecthibernate.connection.driver_class=oracle.jdbc.driver.OracleDriverhibernate.connection.url=jdbc:oracle:thin:@oracle.cis.ksu.edu:1521:ORACLEhibernate.connection.username=<myusername>hibernate.connection.password=<mypassword>12SessionLightweight and inexpensive to create/destroyNot threadsafe – each thread needs its ownObtained from SessionFactory instanceSession session = sessionFactory.openSession();// perform persistence operationssession.close();13TransactionSet of operations that are all committed or all rolled backObtained from Session instanceCan perform multiple transactions within sessionTransaction tx = session.beginTransaction();// perform persistence operationstx.commit();14Object 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 persistent15Query 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 APICriteria c = session.createCriteria(Widget.class);c.add(Expression.gt(“value”, someValue);List widgets = c.list();SQLQuery q = session.createSQLQuery(“select {w.*} from WIDGET {w} where VALUE > :value”, “w”, Widget.class);q.setParameter(“value”, someValue);List widgets = q.list();16AssociationsSupports all association typesone-to-oneone-to-manymany-to-manyInherently unidirectionalSupports bidirectional17One-to-Many Example: UnidirectionalOption 1: Group  Memberpublic class Group public class Member{ { private String name; private String name; private Collection members; … … }}Option 2: Group  Memberpublic class Group public class Member{ { private String name; private String name; … private Group group;} …}18One-to-Many Example: BidirectionalGroup  Memberpublic class Group public class Member{ { private String name; private String name; private Collection members; private Group group; … …} }Application responsible for maintaining each end of association19One-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 key20One-to-Many Table Structure21Many-to-Many Example: UnidirectionalOption 1: Group  Memberpublic class Group public class Member{ { private String name; private String name; private Collection members; … … }}Option 2: Group  Memberpublic class Group public class Member{ { private String name; private String name; … private Collection groups;} …}22Many-to-Many Example: BidirectionalGroup  Memberpublic class Group public class Member{ { private String name; private String name; private Collection members; private Collection groups; … …} }Application responsible for maintaining each end of association23Many-to-Many Table StructureUnderlying table structure not affected by directionalityImplemented using join table24Many-to-Many Table Structure25ReferencesBauer, Christian and Gaven King, Hibernate in Action, Manning, 2005.Hibernate Reference Documentation, Version 2.1.6, Hibernate,


View Full Document

K-State CIS 764 - Java Data Persistence Using Hibernate

Documents in this Course
Load more
Download Java Data Persistence Using Hibernate
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Java Data Persistence Using Hibernate and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Java Data Persistence Using Hibernate 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?