Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Introduction to Data Access with Spring.

Slides:



Advertisements
Similar presentations
21 Copyright © 2005, Oracle. All rights reserved. Oracle Application Server 10g Transaction Support.
Advertisements

5 Copyright © 2005, Oracle. All rights reserved. Accessing the Database with Servlets.
Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit.
Spring, Hibernate and Web Services 13 th September 2014.
Introduction to the Spring Framework University of Kansas January 2009 This presentation and example application are available at
Enterprise Applications & Java/J2EE Technologies Dr. Douglas C. Schmidt Professor of EECS.
Pragmatic Application Building: Step by Step Jay Sissom Principal Systems Analyst Indiana University
Application Architectures Vijayan Sugumaran Department of DIS Oakland University.
Emmanuel Cecchet et al.  Performance Scalability of J2EE application servers.  Test effect of: ◦ Application Implementation Methods ◦ Container Design.
The Spring Framework: A brief introduction to Inversion of Control James Brundege
Using Third-Party Frameworks in Building Blocks™ David Ashman Principal Architect, Product Development.
An Introduction to Hibernate Matt Secoske
Data Persistence and Object-Relational Mapping Slides by James Brucker, used with his permission 1.
JDBC Session 5 Tonight: Data Access Patterns 1.J2EE Architecture & Design Patterns 2.The Data Access Tier 3.Data Access Patterns –DataAccessObject (DAO)
Introduction to the Enterprise Library. Sounds familiar? Writing a component to encapsulate data access Building a component that allows you to log errors.
NetArchive Suite Workshop 2011 Technical Track - Code refactoring with the Spring Framework.
Spring Overview, Application demo -Midhila Paineni 09/23/2011 Spring Overview, Application demo9/8/20151.
Agenda What is Hibernate Spring Integration Questions Overview
EJB. Component Characteristics An enterprise Bean typically contains business logic that operates on the enterprise’s data. An enterprise Bean’s instances.
Introduction to the Spring Framework Rajesh. Spring Mission Statement J2EE should be easier to use OO design is more important than any implementation.
What is Architecture  Architecture is a subjective thing, a shared understanding of a system’s design by the expert developers on a project  In the.
CHAPTER 14 USING RELATIONAL DATABASES TO PROVIDE OBJECT PERSISTENCE (ONLINE) © 2013 Pearson Education, Inc. Publishing as Prentice Hall 1 Modern Database.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Understanding the Bean Lifecycle An.
Enterprise JavaBeans. What is EJB? l An EJB is a specialized, non-visual JavaBean that runs on a server. l EJB technology supports application development.
EJB Framework.  As we know, EJB is the center of the J2EE architecture that provides a sturdy framework for building enterprise applications. The major.
TDDD05 EJB Lab (Part of slides reused from Mikhail’s) Lu Li
Message-Driven Beans and EJB Security Lesson 4B / Slide 1 of 37 J2EE Server Components Objectives In this lesson, you will learn about: Identify features.
Java Transaction API Sean C. Sullivan
Spring Framework. Spring Overview Spring is an open source layered Java/J2EE application framework Created by Rod Johnson Based on book “Expert one-on-one.
Spring Data Access By, Srinivas Reddy.S
© 2011 Pearson Education, Inc. Publishing as Prentice Hall 1 Chapter 14 Using Relational Databases to Provide Object Persistence (Overview) Modern Database.
Spring Database Access Ojitha Kumanayaka Copyright © Virtusa, 2007.
JBoss at Work Databases and JBoss Chapter 4 Jeff Schmitt October 26, 2006.
A Presentation By V AIBHAV S AHARAN Web-enHanced Information Management COMS E6125.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Forms with Spring MVC Handling Form.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Introduction to Spring Remoting Simplifying.
JPA / HIBERNATE CSCI 6370 Nilayan Bhattacharya Sanket Sable.
آرمان حسين‌زاده آذر  Access to data varies depending on the source of the data.  Access to persistent storage, such as to a database, varies greatly.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Spring MVC Views Rendering custom views.
Overview and update Pete Raymond. » Purpose of this presentation » Background » JSR Requirements » Key concepts » Relationship to other standards/approaches.
Text 16 de mayo de 2009 Spring Framework Part III. Portable Service Abstractions Buenos Aires, June 2009.
Java EE Patterns Dan Bugariu.  What is Java EE ?  What is a Pattern ?
Topic : Hibernate 1 Kaster Nurmukan. An ORM tool The problem fixed by ORM Advantage Hibernate Hibernate Basic –Hibernate sessionFactory –Hibernate Session.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Spring MVC Essentials Getting started.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Testing Spring Applications Unit Testing.
1 Copyright © 2004, Oracle. All rights reserved. Oracle Application Development Framework.
Kansas City Java User’s Group Jason W. Bedell July 12, 2006
Introduction to EJB. What is an EJB ?  An enterprise java bean is a server-side component that encapsulates the business logic of an application. By.
Java Programming: Advanced Topics 1 Enterprise JavaBeans Chapter 14.
Text 16 de mayo de 2009 Spring Framework Part III. Portable Service Abstractions Buenos Aires, June 2009.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Overview of the Spring Framework Introducing.
Topic : Hibernate 1 Kaster Nurmukan. An ORM tool Used in data layer of applications Implements JPA.
Introduction – ORM, Helloworld Application
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Introduction to Spring JDBC Simplifying.
Spring JDBC Dima Ionut Daniel. Contents What is Spring JDBC? Overview Spring JDBC Core SQL Exceptions Database Connection Batch Operations Handling BLOB/CLOB.
Fundamentals of MyBATIS
EJB Enterprise Java Beans JAVA Enterprise Edition
.  A reference model developed for an important use case (Air Job) including UI widgets, controllers, services and DAOs.  After full requirement analysis.
DOMAIN DRIVEN DESIGN Dave 12 May WHAT IS DDD? Set of principles to aid in building complex systems Enables us to focus on core problem domain NOT.
Introduction to ORM Hibernate Hibernate vs JDBC. May 12, 2011 INTRODUCTION TO ORM ORM is a programming technique for converting data between relational.
Text 16 de mayo de 2009 Spring Framework Part III. Portable Service Abstractions and Spring MVC Buenos Aires, June 2009.
Google Code Libraries Dima Ionut Daniel. Contents What is Google Code? LDAPBeans Object-ldap-mapping Ldap-ODM Bug4j jOOR Rapa jongo Conclusion Bibliography.
EJB. Introduction Enterprise Java Beans is a specification for creating server- side scalable, transactional, multi-user secure enterprise-level applications.
Leveraging ColdSpring to build a robust Flex applications Chris Scott, Cynergy Systems.
Enterprise Java Beans. Contents  Understanding EJBs  Practice Section.
CS3220 Web and Internet Programming Database Access with JDBC
Unit Testing.
Developing and testing enterprise Java applications
Objectives In this lesson, you will learn about:
CS3220 Web and Internet Programming Database Access with JDBC
Presentation transcript:

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Introduction to Data Access with Spring Spring’s role in supporting transactional data access within an enterprise application

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 2 Topics in this Session The role of Spring in enterprise data access Spring resource management Spring data access support Data access in a layered architecture Common data access configurations

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 3 Topics in this Session The role of Spring in enterprise data access Spring resource management Spring data access support Data access in a layered architecture Common data access configurations

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 4 The Role of Spring in Enterprise Data Access Provide comprehensive data access support –To make data access easier to do effectively Enable a layered application architecture –To isolate an application’s business logic from the complexity of data access

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 5 Making Data Access Easier Acquisition of the connection Participation in the transaction Execution of the statement Processing of the result set Handling any exceptions Release of the connection int count = jdbcHelper.queryForInt( "SELECT COUNT(*) FROM CUSTOMER"); All handled by Spring

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 6 Enabling a Layered Architecture Application ServiceRepository 1Repository 2Repository 3DataSourceTransactionManager Spring Application Context Business logic Data access logic Data access infrastructure

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 7 Topics in this Session The role of Spring in enterprise data access Spring resource management Spring data access support Data access in a layered architecture Common data access configurations

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 8 Spring Resource Management Accessing external systems like a database requires resources –Limited resources must be managed properly Putting the resource management burden on the application developer is unnecessary Spring provides a comprehensive resource management solution

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 9 The Resource Management Problem To access a data source an application must –Establish a connection To start its work the application must –Begin a transaction When done with its work the application must –Commit or rollback the transaction –Close the connection

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 10 Effective Resource Management Application invoke(input) Transaction begin output commit Connection select data update data close Do business logic get

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 11 Managing Resources Manually In many applications resource management is a manual process –The responsibility of the application developer This is not an effective approach –Copy and pasting code –Introducing subtle, potentially critical bugs

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 12 Not Effective - Copy & Pasting Code doSomeWork(...) { try { get connection begin transaction execute SQL process the result set commit } catch (SQLException e) { rollback throw application exception } finally { try { close connection } catch {} } Unique Copied around everywhere

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 13 Not Effective - Classic Memory Leak doSomeWork(...) { try { get connection begin transaction execute SQL execute more SQL commit close connection } catch (SQLException) { rollback log exception } } FAILS close never called

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 14 Spring Resource Management Spring manages resources for you –Eliminates boilerplate code –Reduces likelihood of bugs Spring frees application developers from mundane responsibility –So they can get on with the real work

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 15 Key Resource Management Features Declarative transaction management –Transactional boundaries declared via configuration –Enforced by a Spring transaction manager Automatic connection management –Connections acquired/released automatically –No possibility of resource leak Intelligent exception handling –Root cause failures always reported –Resources always released properly

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 16 Spring Resource Management doSomeWork(..) { try { establish connection begin transaction execute SQL process the result set commit } catch (SQLException) { rollback throw application exception } finally { try { close connection } catch {} doSomeWork(..) { execute SQL process the result set } BEFORE AFTER

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 17 Spring Resource Management Works Everywhere Works consistently with all leading data access technologies –Java Database Connectivity (JDBC) –JBoss Hibernate –Java Persistence API (JPA) –Oracle Toplink –Apache iBatis In any environment –Local (standalone app, web app) –Full-blown JEE container

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 18 Topics in this Session The role of Spring in enterprise data access Spring resource management Spring data access support Data access in a layered architecture Common data access configurations

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 19 Spring Data Access Support Spring provides support libraries that simplify writing data access code –Promote consistency and code savings Support is provided for all the major data access technologies –Java Database Connectivity (JDBC) –Apache iBatis –JBoss Hibernate –Java Persistence Architecture (JPA)

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 20 Spring Data Access Support - Scope For each data access technology, Spring’s support consists of –A factory to help you configure the technology –A base support class to help you implement DAOs –A helper called a data access template to help you use the public API effectively

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 21 JDBC DAO Support Example public class JdbcCustomerRepository extends SimpleJdbcDaoSupport implements CustomerRepository { public int getCountOfCustomersOlderThan(int age) { String sql = “select count(*) from customer where age > ?”; return getSimpleJdbcTemplate().queryForInt(sql, age); } public class JdbcCustomerRepository extends SimpleJdbcDaoSupport implements CustomerRepository { public int getCountOfCustomersOlderThan(int age) { String sql = “select count(*) from customer where age > ?”; return getSimpleJdbcTemplate().queryForInt(sql, age); } Support class provides DAO configuration assistance Data access helper simplifies use of API

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 22 Topics in this Session The role of Spring in enterprise data access Spring resource management Spring data access support Data access in a layered architecture Common data access configurations

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 23 Data Access in a Layered Architecture Spring enables layered application architecture Most enterprise applications consist of three logical layers –Service layer (or application layer) Exposes high-level application functions –Data access layer Defines the interface to the application’s data repository (such as a relational database) –Infrastructure layer Exposes low-level services needed by the other layers

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 24 Layered Application Architecture Service Layer Data Access Layer Infrastructure Layer

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 25 The Service Layer (Green) Defines the public functions of the application –Clients call into the application through this layer Encapsulates the logic to carry out each application function –Delegates to the infrastructure layer to manage transactions –Delegates to the data access layer to map persistent data into a form needed to execute the business logic

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 26 The Data Access Layer (Purple) Used by the service layer to access data needed by the business logic Encapsulates the complexity of data access –The use of a data access API JDBC, Hibernate, etc –The details of data access statements SQL, HQL, etc –The mapping of data into a form suitable for business logic A JDBC ResultSet to a domain object graph

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 27 The Infrastructure Layer (Red) Exposes low-level services needed by other layers –Infrastructure services are used by the application –Application developers typically do not write them –Often provided by a framework like Spring Likely to vary between environments –Production vs. test

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 28 Data Access Infrastructure Services - Transaction Manager Spring provides a transaction manager abstraction for driving transactions Includes implementations for all major data access technologies –JDBC –Java Persistence API (JPA) –Hibernate –Toplink And the standard Java Transaction API (JTA)

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 29 Data Access Infrastructure Services - Data Source Spring uses a standard JDBC data source for acquiring connections –Provides several basic implementations –Integrates popular open source implementations Apache DBCP, c3p0 –Can integrate JEE container-managed data sources

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 30 Spring Putting the Layers Together at Configuration Time Application ServiceRepository 1Repository 2Repository 3DataSourceTransactionManager Spring Application Context Performs the functions of the application Accesses data needed by the application Pools connections Drives transactions

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 31 The Layers Working Together at Use Time (1) A service initiates a function of the application –By delegating to a transaction manager to begin a transaction –By delegating to repositories to load data for processing All data access calls participate in the transaction Repositories often return domain objects that encapsulate domain behaviors

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 32 The Layers Working Together at Use Time (2) A service continues processing –By executing business logic –Often by coordinating between domain objects loaded by repositories And finally, completes processing –By updating changed data and committing the transaction –Some technologies apply repository updates for you (Hibernate/JPA)

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 33 Application Service - Sequence (1) Service invoke (input) Transaction Manager Repository findDomainObject(criteria) DataSource Connection select data domainObject mapObject(ResultSet) begin transaction get connection new transaction

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 34 Application Service - Sequence (2) Do biz logic Service update(domain object) update data commit(transaction) close Domain ObjectRepository Transaction Manager Connection output bind(object, statement)

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 35 Declarative Transaction Management Spring adds the transaction management calls around your service logic You simply declare the transactional policies and Spring enforces them

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 36 Setting Transactional Policies Declaratively public class ServiceImpl implements ServiceInterface public void invoke(…) { // your application logic } } Tells Spring to always run this method in a database transaction

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 37 Enforcing Declarative Transactional Policies ServiceImpl invoke(input) Spring TransactionInterceptor TransactionManager begincommit Transaction management behavior is added around your code You can change transaction managers without affecting your application code Spring AOP Proxy

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 38 Effects on Connection Management Connections are managed for you –Driven by transactional boundaries –Not the responsibility of application code –No possibility of connection leak Repositories always use the transactional connection for data access –Spring provides several ways to ensure this

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 39 Topics in this Session The role of Spring in enterprise data access Spring resource management Spring data access support Data access in a layered architecture Common data access configurations

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 40 Local JDBC Configuration RewardNetworkImpl JdbcAccountRepositoryJdbcRestaurantRepositoryJdbcRewardRepository BasicDataSource DataSource TransactionManager

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 41 JDBC Java EE Configuration RewardNetworkImpl JdbcAccountRepositoryJdbcRestaurantRepositoryJdbcRewardRepository JEE Container-Managed DataSource JTA TransactionManager JndiObject FactoryBean retrieves

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 42 Local Hibernate Configuration RewardNetworkImpl Hibernate AccountRepository Hibernate RestaurantRepository JdbcRewardRepository SessionFactory Hibernate TransactionManager BasicDataSource LocalSession FactoryBean creates

Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 43 Spring Data Access Support Matrix PurposeJDBCHibernateTopLink Technology configuration support Several local DataSource implementations; JNDI lookup support LocalSessionFactoryBean; JNDI lookup support SessionFactoryBean; JNDI lookup support DAO implementation support JdbcDaoSupportHibernateDaoSupportTopLinkDaoSupport API HelperJdbcTemplateHibernateTemplateTopLinkTemplate Transaction management DataSource Transaction Manager or JTA HibernateTransaction Manager or JTA TopLinkTransaction Manager or JTA