Chengyu Sun California State University, Los Angeles

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

An Object/Relational Mapping tool Free and open source Simplifies storage of object data in a relational database Removes the need to write and maintain.
Persistence Jim Briggs 1. 2 Database connectivity: JDBC Java Database Connectivity An API for connecting Java programs (applications, applets and servlets)
Fast Track to ColdFusion 9. Getting Started with ColdFusion Understanding Dynamic Web Pages ColdFusion Benchmark Introducing the ColdFusion Language Introducing.
JDBC Overview Autumn 2001 Lecturer: C. DeJong. Relational Databases widespread use used via SQL (Structured Query Language) freely available powerful.
Session-02.
Session-01. Hibernate Framework ? Why we use Hibernate ?
The Java Persistence API Edel Sherratt. Contents Revisit applications programming Using Java Persistence API.
Data Access Patterns. Motivation Most software systems require persistent data (i.e. data that persists between program executions). In general, distributing.
Introduction to JPA Java Persistence API Introduction to JPA.
Hibernatification! Roadmap for Migrating from Plain Old SQL on JDBC to JPA on Hibernate Duke Banerjee Senior Developer, DrillingInfo.com.
Java Persistence API Maciej Adamiak. Agenda -Entity, -Entity Operations, -Query Language.
Rice KRAD Data Layer JPA Design Eric Westfall July 2013.
CSE446 S OFTWARE Q UALITY M ANAGEMENT Spring 2014 Yazılım ve Uyguluma Geliştirme Yöneticisi Orhan Başar Evren.
IS-907 Java EE JPA: Simple Object-Relational Mapping.
CHAPTER 14 USING RELATIONAL DATABASES TO PROVIDE OBJECT PERSISTENCE (ONLINE) © 2013 Pearson Education, Inc. Publishing as Prentice Hall 1 Modern Database.
12-CRS-0106 REVISED 8 FEB 2013 CSG2H3 Object Oriented Programming.
Topic : JPA Kaster Nurmukan. Overview of JPA EntityManager.
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.
JPA / HIBERNATE CSCI 6370 Nilayan Bhattacharya Sanket Sable.
Topic : Hibernate 3:Advanced ORM Kaster Nurmukan.
Topic : Hibernate 1 Kaster Nurmukan. An ORM tool The problem fixed by ORM Advantage Hibernate Hibernate Basic –Hibernate sessionFactory –Hibernate Session.
Basics of JDBC Session 14.
Java Persistence API part 1 INFORMATICS ENGINEERING – UNIVERSITY OF BRAWIJAYA Eriq Muhammad Adams J
Topic : Hibernate 1 Kaster Nurmukan. An ORM tool Used in data layer of applications Implements JPA.
Introduction – ORM, Helloworld Application
IS-907 Java EE Introduction to JPA. Java Persistence API A framework for using relational databases in Java programs mapping between tables and classes,
JPA in Vaadin CSCI 3130 Winter What is JPA?  Java Persistence API  Allows for “easy” storage of Java Objects  Is a type of Object Relational.
JDBC Java and Databases. SWC – JDBC JDBC – Java DataBase Connectivity An API (i.e. a set of classes and methods), for working with databases in.
Introduction to ORM Hibernate Hibernate vs JDBC. May 12, 2011 INTRODUCTION TO ORM ORM is a programming technique for converting data between relational.
CS422 Principles of Database Systems Object-Relational Mapping (ORM) Chengyu Sun California State University, Los Angeles.
CS520 Web Programming Object-Relational Mapping with Hibernate and JPA Chengyu Sun California State University, Los Angeles.
CS520 Web Programming Object-Relational Mapping with Hibernate and JPA (I) Chengyu Sun California State University, Los Angeles.
JAVA Persistence API(JPA) What is it? How would we use it in a project? Should we use it? -Parag Chaudhari.
CS 440 Database Management Systems Stored procedures & OR mapping 1.
CS320 Web and Internet Programming SQL and MySQL Chengyu Sun California State University, Los Angeles.
CS520 Web Programming Full Text Search Chengyu Sun California State University, Los Angeles.
CS422 Principles of Database Systems JDBC and Embedded SQL Chengyu Sun California State University, Los Angeles.
Hibernate Java Persistence API. What is Persistence Persistence: The continued or prolonged existence of something. Most Applications Achieve Persistence.
CS520 Web Programming Spring – Web MVC Chengyu Sun California State University, Los Angeles.
CS520 Web Programming Spring – Inversion of Control Chengyu Sun California State University, Los Angeles.
CS520 Web Programming Object-Relational Mapping with Hibernate and JPA Chengyu Sun California State University, Los Angeles.
COMP 430 Intro. to Database Systems SQL from application code.
CS520 Web Programming Full Text Search
Don't Know Jack About Object-Relational Mapping?
DEPTT. OF COMP. SC & APPLICATIONS
CS3220 Web and Internet Programming Database Access with JDBC
Chengyu Sun California State University, Los Angeles
CS320 Web and Internet Programming SQL and MySQL
CS320 Web and Internet Programming Database Access with JDBC
A very brief introduction
CS520 Web Programming Spring – Inversion of Control
Chengyu Sun California State University, Los Angeles
Advanced Java Programming
Database Management  .
CS5220 Advanced Topics in Web Programming Spring – Web MVC
Hibernate Bayu Priyambadha, S.Kom.
CS5220 Advanced Topics in Web Programming Spring – Web MVC
Java Database Connectivity
Using a Database with JDBC
Chengyu Sun California State University, Los Angeles
CS3220 Web and Internet Programming SQL and MySQL
Chengyu Sun California State University, Los Angeles
CS4961 Software Design Laboratory Understand Aquila Backend
CS3220 Web and Internet Programming SQL and MySQL
CS3220 Web and Internet Programming Database Access with JDBC
CS3220 Web and Internet Programming Database Access with JDBC
Chengyu Sun California State University, Los Angeles
Chengyu Sun California State University, Los Angeles
CS4540 Special Topics in Web Development SQL and MS SQL
Presentation transcript:

Chengyu Sun California State University, Los Angeles CS5220 Advanced Topics in Web Programming Object-Relational Mapping with Hibernate and JPA (I) Chengyu Sun California State University, Los Angeles

The Object-Oriented Paradigm The world consists of objects So we use object-oriented languages to write applications We want to store some of the application objects (a.k.a. persistent objects) So we use a Object Database?

The Reality of DBMS Relational DBMS are still predominant Most reliable (ACID) Widest support Bridge between OO applications and relational databases CLI and embedded SQL Object-Relational Mapping (ORM) tools

Call-Level Interface (CLI) Application interacts with database through functions calls String sql = "select name from items where id = 1"; Connection c = DriverManager.getConnection( url ); Statement stmt = c.createStatement(); ResultSet rs = stmt.executeQuery( sql ); if( rs.next() ) System.out.println( rs.getString(“name”) );

Embedded SQL SQL statements are embedded in host language String name; #sql {select name into :name from items where id = 1}; System.out.println( name );

Employee – Application Object public class Employee { Integer id; String name; Employee supervisor; }

Employee – Database Table create table employees ( id integer primary key, name varchar(255), supervisor_id integer references employees(id) );

From Database to Application So how do we construct an Employee object based on the data from the database? public class Employee { Integer id; String name; Employee supervisor; public Employee( Integer id ) { // access database to get name and supervisor … … }

Problems with CLI and Embedded SQL … SQL statements are hard-coded in applications public Employee( Integer id ) { … PreparedStatment p; p = connection.prepareStatment( “select * from employees where id = ?” ); }

… Problems with CLI and Embedded SQL … Tedious translation between application objects and database tables public Employee( Integer id ) { … ResultSet rs = p.executeQuery(); if( rs.next() ) { name = rs.getString(“name”); }

… Problems with CLI and Embedded SQL Application design has to work around the limitations of relational DBMS public Employee( Integer id ) { … ResultSet rs = p.executeQuery(); if( rs.next() ) { supervisor = ?? }

The ORM Approach employee Application customer account ORM tool PostgreSQL, MySQL, Oracle, SQL Server … Persistent Data Store

Hibernate and JPA Java Persistence API (JPA) Hibernate Annotations for object-relational mapping Data access API An object-oriented query language JPQL Hibernate The most popular Java ORM library An implementation of JPA

Hibernate Usage Hibernate without JPA Hibernate with JPA API: SessionFactory, Session, Query, Transaction More features Hibernate with JPA API: EntityManagerFactory, EntityManager, Query, Transaction Better portability Behaviors are better defined and documented

A Hibernate Example Java class Code to access the database Employee.java Code to access the database EmployeeTest.java JPA configuration file persistence.xml (Optional) Logging configuration file log4j.properties

Persistent Class A class whose objects need to be saved (i.e. persisted) in a database Any Java model class can be a persistent class, though it is recommended that Each persistent class has an identity field Each persistent class implements the Serializable interface Each persistent field has a pair of getter and setter, which don’t have to be public

O/R Mapping Annotations Describe how Java classes are mapped to relational tables @Entity Persistent Java Class @Id Id field @Basic (can be omitted) Fields of simple types @ManyToOne @OneToMany @ManyToMany @OneToOne Fields of class types

persistence.xml <persistence-unit> <properties> name <properties> Database information Provider-specific properties No need to specify persistent classes

Access Persistent Objects EntityManagerFactory EntityManager Query and TypedQuery Transaction A transaction is required for updates

Some EntityManager Methods find( entityClass, primaryKey ) merge( entity ), persist( entity ) getTransaction() createQuery( query, resultClass ) http://sun.calstatela.edu/~cysun/documentation/jpa-2.0-api/javax/persistence/EntityManager.html

States of Persistent Objects entityManager = entityManagerFactory .createEntityManager(); Foo f1 = entityManager.find( Foo.class, 1 ); // f1 is a managed object Foo f2 = new Foo(); // f2 is an unmanaged (i.e. new) object entityManager.persists( f2 ); // f2 becomes managed entityManager.close(); // both f1 and f2 become detached ORM “magic” only works on managed objects

Persist() vs Merge() Both can be used on managed and unmanaged objects Persist() cannot be used on a detached object but Merge() can Persist() does not have a return value, while Merge() returns a managed object, which may be different from the argument if the argument is unmanaged/detached

Comparing Persist() and Merge() Employee e = new Employee(); e.setName( “Joe” ); entityManager.persist( e ); e.getId()  ?? Employee e = new Employee(); e.setName( “Joe” ); entityManager.merge( e ); e.getId()  ??

Java Persistence Query Language (JPQL) A query language that looks like SQL, but for accessing objects Automatically translated to DB-specific SQL statements E.g. select e from Employee e where supervisor = :supervisor See Chapter 4 of Java Persistence API, Version 2.1

Hibernate Query Language (HQL) A superset of JPQL http://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#hql See DaoImpl code in CSNS2 for more examples

Benefits of ORM Remove the mismatch between OO design in application and relational design in database Simplify data access Data is accessed as objects, i.e. no manual conversion between objects and rows/columns necessary JPQL/HQL queries are usually simpler than SQL queries Often times queries are automatically generated by the ORM tool, e.g. e.getSupervisor().getSupervisor().getName() Improve DBMS independency Object caching