JAVA-301

Enterprise Java Best Practices

Download as PDF
Enquire Now

Course Overview

Addresses more advanced techniques for common concerns in Java enterprise development:

  • Integration Testing: efficiency, reliability, repeatability
  • Performance & Data Consistency: especially in high-concurrency systems
  • Migrating Production Versions Safely
  • Architecting for Multiple Teams
  • Web & Database Optimization & Maintainability

Learning Outcomes

  • Domain Driven Design
  • Mock Testing
  • Integration Testing
  • TestContainers
  • POST-GET-Redirect (PRG) Pattern
  • REST
  • Transactions & Concurrency
  • Database Optimization
  • Database Migration
  • Load Testing w/ JMeter
  • Command Query Responsibility Separation (CQRS)
  • UI Testing w/ Selenium

Course Outline

Domain Driven Design (DDD)

  • Ubiquitous Language
  • Layered vs. Hexagonal Architecture
  • Domain Classes
  • Entities
  • Value Objects
  • Services
  • Service Anti-Patterns
  • DDD Package Structure
  • Aggregates
  • Bounded Context
  • Event Storming

Mock Testing

  • Test-Driven Development (TDD) using Mockito

Integration Testing

  • TDD using Spring MockMvc
  • Testcontainers
  • Separating unit tests from integration tests

Testcontainers

  • The Testcontainers library provides lightweight throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container, in support of JUnit tests.
  • Best practices for integration testing using Testcontainers

POST-GET-Redirect (PRG) Pattern

  • The POST-GET-Redirect (PRG) architectural pattern helps prevent users from making duplicate submissions.

RESTful Architecture

  • What does REST mean?
  • Common conventions

Transactions & Concurrency

  • Testing for race conditions
  • How to avoiding them

Database Optimization

  • Profiling & Replication
  • Indexing best practices
  • Optimizing Queries
  • Optimizing Schemas
  • Avoiding Deadlocks
  • Optimization with the Application
  • Archiving & Partitioning
  • Reclaming Storage & Gathering Statistics

Database Schema Migration

  • Using Liquibase to manage changes to database structure

Load Testing with JMeter

  • Performance testing overview
  • HTTP Protocol overview
  • Simulating requests
  • Simulating concurrent users
  • Managing cookies
  • Generating reports
  • Interpreting results
  • Record & playback
  • Using variables & functions
  • Scaling-up tests using master-slave configuration
  • Tips & best practices

Command Query Responsibility Separation (CQRS) Pattern

  • Using different models to handle different requests and responses

User Interface Testing with Selenium

  • Overview of UI Testing
  • Selenium IDE (record & playback)
  • Review of CSS Locators
  • Review of XPath
  • Selenium Web Driver API: Setting Up
  • Navigation
  • Referencing web elements using Id and Name Locators
  • CSS
  • XPath
  • Handling text boxes
  • Handling dropdown/select elements
  • Handling multiple select elements
  • Handling checkboxes and radio buttons
  • Explicit and implicit wait
  • Handling keyboard & mouse events
  • Using actions and action
  • Handling web tables
  • Handling upload and download

Introduction to MongoDB (NoSQL)

  • Overview – history, advantages & disadvantages
  • Using the mongo console
  • Connecting to a database
  • Querying
  • Filters
  • Embedded documents in filters
  • Comparison Operators
  • Pagination
  • Aggregation Framework
  • Creating a Database
  • Creating Collections
  • Inserting Documents
  • Updating
  • Replacing
  • Deleting
  • Analyzing performance of queries Indexing
  • Unique constraint
  • Document validation
  • Java library for MongoDB

Skill Level

Advanced

Suitable For

Java developers who want to write high quality, robust, scalable code for Enterprise or other mission-critical applications. Should have prior experience with HTML, SQL, JUnit, Spring or Java EE, and JPA.

Prerequisites

  • Gain expertise in developing scalable enterprise applications using Java EE technologies.
  • Learn advanced concepts such as JPA for data persistence and EJB for component-based architecture.
  • Explore techniques for building secure, transactional, and high-performance Java applications for enterprise environments.

Duration

5

 day

s

Related Topics

Enquire Now
JAVA-301

Enterprise Java Best Practices

Download as PDF
Enquire Now

Skill Level

Advanced

Suitable For

Java developers who want to write high quality, robust, scalable code for Enterprise or other mission-critical applications. Should have prior experience with HTML, SQL, JUnit, Spring or Java EE, and JPA.

Duration

5

 day

s

Related Topics

Course Overview

Addresses more advanced techniques for common concerns in Java enterprise development:

  • Integration Testing: efficiency, reliability, repeatability
  • Performance & Data Consistency: especially in high-concurrency systems
  • Migrating Production Versions Safely
  • Architecting for Multiple Teams
  • Web & Database Optimization & Maintainability

Learning Outcomes

  • Domain Driven Design
  • Mock Testing
  • Integration Testing
  • TestContainers
  • POST-GET-Redirect (PRG) Pattern
  • REST
  • Transactions & Concurrency
  • Database Optimization
  • Database Migration
  • Load Testing w/ JMeter
  • Command Query Responsibility Separation (CQRS)
  • UI Testing w/ Selenium

Course Outline

Domain Driven Design (DDD)

  • Ubiquitous Language
  • Layered vs. Hexagonal Architecture
  • Domain Classes
  • Entities
  • Value Objects
  • Services
  • Service Anti-Patterns
  • DDD Package Structure
  • Aggregates
  • Bounded Context
  • Event Storming

Mock Testing

  • Test-Driven Development (TDD) using Mockito

Integration Testing

  • TDD using Spring MockMvc
  • Testcontainers
  • Separating unit tests from integration tests

Testcontainers

  • The Testcontainers library provides lightweight throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container, in support of JUnit tests.
  • Best practices for integration testing using Testcontainers

POST-GET-Redirect (PRG) Pattern

  • The POST-GET-Redirect (PRG) architectural pattern helps prevent users from making duplicate submissions.

RESTful Architecture

  • What does REST mean?
  • Common conventions

Transactions & Concurrency

  • Testing for race conditions
  • How to avoiding them

Database Optimization

  • Profiling & Replication
  • Indexing best practices
  • Optimizing Queries
  • Optimizing Schemas
  • Avoiding Deadlocks
  • Optimization with the Application
  • Archiving & Partitioning
  • Reclaming Storage & Gathering Statistics

Database Schema Migration

  • Using Liquibase to manage changes to database structure

Load Testing with JMeter

  • Performance testing overview
  • HTTP Protocol overview
  • Simulating requests
  • Simulating concurrent users
  • Managing cookies
  • Generating reports
  • Interpreting results
  • Record & playback
  • Using variables & functions
  • Scaling-up tests using master-slave configuration
  • Tips & best practices

Command Query Responsibility Separation (CQRS) Pattern

  • Using different models to handle different requests and responses

User Interface Testing with Selenium

  • Overview of UI Testing
  • Selenium IDE (record & playback)
  • Review of CSS Locators
  • Review of XPath
  • Selenium Web Driver API: Setting Up
  • Navigation
  • Referencing web elements using Id and Name Locators
  • CSS
  • XPath
  • Handling text boxes
  • Handling dropdown/select elements
  • Handling multiple select elements
  • Handling checkboxes and radio buttons
  • Explicit and implicit wait
  • Handling keyboard & mouse events
  • Using actions and action
  • Handling web tables
  • Handling upload and download

Introduction to MongoDB (NoSQL)

  • Overview – history, advantages & disadvantages
  • Using the mongo console
  • Connecting to a database
  • Querying
  • Filters
  • Embedded documents in filters
  • Comparison Operators
  • Pagination
  • Aggregation Framework
  • Creating a Database
  • Creating Collections
  • Inserting Documents
  • Updating
  • Replacing
  • Deleting
  • Analyzing performance of queries Indexing
  • Unique constraint
  • Document validation
  • Java library for MongoDB