LearningPatterns: Your Global Source for Java Training, Mentoring, and Consulting
Home | About LearningPatterns | Our Services | Contact Us | Printer Friendly Link

Courseware for License:

Fast Track to EJB 3.2 (JEE 7 level) and JPA2

Course ID: EJB32-JPA2

Available for the following platforms with detailed lab instructions included for the specific platform:

Java EE Servers: • WildFly 8 AS • GlassFish 4 (upon request)
Development Environments: • Eclipse

The Enterprise JavaBeans 3 specification is a deep overhaul of the EJB specification that improved the EJB architecture by reducing its complexity from the developer's point of view.  It leverages annotations and Object-Relational Mapping (ORM) technologies to eliminate the dependence on complex EJB APIs, allow POJO (Plain Old Java Object) based development, and provide an effective technology for creating distributed, transactional components, and for mapping relational data to an object schema. The EJB 3.2 release is part of the Java EE 7 specification and adds additional refinements and capability.

This course provides thorough coverage of the EJB3 technology - presented in a clear and effective manner. It starts with the basic concepts and APIs of EJB and then continues on with complex topics such as message driven beans and transactions.  New concepts such as the use of annotations and the use of CDI / Dependency Injection to initialize references are covered in depth. The course also includes thorough coverage of managing persistence using the Java Persistence API 2 (JPA2).  This course provides additional coverage of JPA as compared to our Fast Track to EJB3 course.

The course uses hands-on labs and a well-paced approach to make this complex technology understandable in an accelerated fashion.  You will come away with a comprehensive understanding of EJB and the important issues that need to be considered to use it in real world applications. This course can be customized to your requirements.

Course Information

Duration: 5 days

Labs: Minimum 50% hands-on labs

Supported Platforms:

Skills Gained:

Course Details:

Session 1:  Introduction

  • Overview of EJB and Java Persistence API (JPA)
    • Goals of EJB, EJB in the Java EE architecture
  • EJB 3.2 Overview
    • Session Beans, Persistent Entities, Message Driven Beans
  • Lab: Server setup and introduction

Session 2:  Session Beans

  • Session Bean Overview
    • Services provided, Stateless and Stateful Beans
    • Defining a Session Bean - EJB 3 Annotations
    • The Bean Implementation, Remote and Local Business Interface
  • Packaging and Deployment
    • ejb-jar file, Deployment Descriptors in EJB 3
    • EAR file
    • JEE 6+ WAR files and EJB
    • The EJB Container
  • Lab: Creating a Stateless Session Bean
  • JNDI Overview
    • Distributed Naming and Lookup
    • Context and InitialContext
    • Using JNDI
  • Writing an EJB 3 Client
    • Client View of a Session Bean
    • JEE 6 Portable EJB Lookup Names
    • Running the Client
  • Lab: Creating an EJB Client

Session 3:  Additional Capabilities

  • Resources and Dependency Injection
    • EJB referencing another EJB
    • Injecting with CDI/@Inject and with @EJB
    • CDI Qualifiers and Producers
    • Referencing Resources, Environment Entries
    • Connection Factories (DataSource and others)
  • Lab: Using Dependency Injection
  • Lab: Creating and Using Environment Entries
  • Session Bean Lifecycle and Interceptors
    • Stateless Session Bean Lifecycle
    • Business Method Interceptors,  InvocationContext, Lifecycle Callback Interceptors, Interceptor Classes
  • Lab: Working with Interceptors
  • Asynchronous Methods, Singleton Session Beans
  • Stateful Session Beans
    • Overview
    • Defining, Client Relationship
    • Lifecycle, Activation, Passivation
  • Lab: Stateful Session Beans
  • Timer Service
    • Programmatic Timers
    • Calendar-Based Timers
  • Lab: Working with Timers

Session 4:  Message-Driven Beans

  • Overview of Messaging Systems
    • Messaging, Loose Coupling
    • Pub/Sub, Point2Point
  • Overview of JMS API
    • Overview and Structure
    • ConnectionFactory and Destination
    • JMS Producer and Consumer Client example
    • JMS Messages
  • Message-Driven Beans (MDB)
    • Overview and Goals
    • @MessageDriven and MDB example
    • Configuring with activationConfig
    • State Diagram and Interceptors
  • Lab: Message Driven Beans

Session 5:  Transactions and Security

  • Overview of Transactions and Transactional Systems
    • ACID, Transaction Managers, Resource Managers
  • Transactions in EJB 3
    • Declarative Transaction Management
    • Transaction Attributes and Transactional Scope
    • Transaction Scenarios and Bean-Managed Tx
  • Lab: Working with Transactions
  • Security
    • Java EE Security Overview (Role-based)
    • @RolesAllowed, @PermitAll, Role "**"
    • Programmatic Security
  • Lab: Integrating EJB and Java EE Security

Session 6:  Exceptions

  • Exception Overview
    • Checked and Unchecked Exceptions
  • Exceptions in EJB 3
    • Application Exceptions, System Exceptions
  • EJB 3 Best Practices
    • When to Use, Coarse-Grained Business Interfaces, Session Façade, Transaction Guidelines, Clustering

Session 7:  Introduction to Java Persistence API V2 (JPA2 )

  • Overview
    • Persistence Layers, Object-Relational Mapping (ORM), JDBC
    • JPA Overview
  • Mapping with JPA
    • Entities and @Entity, ids and @Id,
    • Generated Id Values
    • Basic Mapping Types
  • Lab: Mapping an Entity Class
  • EntityManager and Persistence Context
    • Persistence Unit and persistence.xml
    • Persisting to the DB, the EntityManager,
    • Injecting an EntityManager
    • Retrieving Persistent Entities
  • Lab: Using the EnityManager to persist and find an Entity
  • More About Mappings
  • Lab: Refining your Mappings

Session 8:  Updates and Queries

  • Inserting and Updating
    • Transient, Persistent, Detached, Removed
    • Persisting new Entities, Updating a Persistent Instance
  • Lab: Inserting and Updating an Entity
  • Querying and JPQL
    • Object Based Queries, Select statements, WHERE clause
    • Named Queries
  • Lab: Creating and Using JPQL Queries
  • Criteria API
  • Lab: Criteria Querying
  • The Persistence Lifecycle - JPA Entity States, Lifecycle, and Persistence Context
  • Versioning and Optimistic Locking
    • Overview
    • Detached Entities
    • Creating Versioned Entities
  • Lab: Optimistic Locking

Session 9:  Entity Relationships

  • Relationships Overview
    • Object Relationships, Participants, Roles, Directionality, Cardinality
  • Relationship Mapping
    • Mapping Overview (1-1, 1-N, N-1, N-N)
    • Unidirectional and Bidirectional
    • Mapping One-One, One-Many
    • Join Columns
    • Relationship Inverses
  • Lab: Mapping Entity Relationships
    • Many-Many Relationships
    • Lazy and Eager Loading
    • Cascading
    • Queries Across Relationships (Inner Joins, Outer Joins, Fetch Joins)
  • Lab: Querying Across Relationships
  • Inheritance Mapping
    • Entity Inheritance
    • Single Table, Joined (Table per Subclass), Table per Concrete Class
    • Pros and Cons
  • Lab: Mapping Inheritance
  • Other Mapping Capabilities - Embedded Objects, Compound Primary Keys, and Element Collections

Session 10:  Additional JPA Capabilities

  • Queries - Projection, Aggregate, Bulk Update/Delete
  • Extended Persistence Contexts
  • XML Mapping Files
  • EJB and Java SE
  • Best Practices
    • Primary Keys, Named Queries, Lazy/Eager Loading, Transactional Semantics, Encapsulation, Report Queries
LearningPatterns Inc. | http://www.LearningPatterns.com | tel:212.487.9064 | e-mail:
Copyright © LearningPatterns Inc. All rights reserved. LearningPatterns is a trademark of LearningPatterns Inc. Java, and all Java-based trademarks are registered trademarks of Sun Microsystems in the U.S. and other countries. JBoss is a registered trademark of Red Hat, Inc. in the U.S. and other countries. IBM and Rational are registered trademarks of IBM Corp. in the U.S. and other countries. All other products and company names mentioned here may be trademarks of their respective owners.