
Install and configure Apache Maven to manage multi-module Java applications and dependencies. Learn to set java_home and maven_home, update path, download from Apache Maven, and verify installation with mvn.
Explore the Maven project object model (pom.xml) to define groupId, artifactId, version, plugins, and dependencies, enabling reliable builds and transitive dependency management.
Explore jdbc as a standard Java api for database connectivity, drivers, the driver manager, and core components like connection, statement, and result set, along with its advantages and limitations.
Map a Java object to a MySQL database with object relational mapping and the Java Persistence API. Define entities, tables, keys, and relationships with annotations.
Learn how the entity manager executes native SQL queries alongside JPQL, including selecting from the person table with age filters and using stored procedures or RPC statements.
Learn to replace xml configuration with Spring annotations, define beans via @Configuration and @Bean, use autowire for dependency injection, and control bean scope with @Scope.
Explore Vaadin, an open source Java web framework that uses server-side UI components and compiles Java to JavaScript for browser rendering.
Learn to use a text area as a multi-line input for descriptions and comments. Set label, value, height, width, and maximum length, with eager value-change mode and a listener.
Configure a combo box to store strings, set items, and provide a placeholder, then attach a value change listener to print selections; demonstrate with person objects and a label generator.
Learn to bind user interface components to Java objects using the Vaadin binder and bean validation, including not empty and email constraints, property IDs, and readBean/writeBean binding.
validate student data with bean validation annotations on fields, including not null, not empty, four-digit zip code, and age range, enforced via a binder in spring boot.
Build and run a Spring Boot application with Maven using a pom.xml; execute mvn clean install and mvn spring-boot:run to access localhost:9090 and verify app features.
Wire the constructor-injected login view factory into a vertical layout using a static path for /login, then create and initialize user interface components and layout for the login view route.
Implement logout of an authenticated user using the security service, navigate back to the login page, and inject the security service via constructor to ensure proper authentication flow.
Authorize using a role enum stored as strings in the user table and returned through the get authorities method to grant access via annotations for admin and user views.
When I started software engineering, I always wanted to code without any configurations, version control or build server configurations. Later, I realized that coding is just one part of software engineering: architectural designs, design patterns and the ability to write reusable and loosely coupled software components are much more important parts of programming.
In this course we are going to talk about the basics of professional software engineering such as how to separate the code into multiple modules or how to use a build framework to build the final application for us.
Before developing the final application from scratch - that wire all the included technologies together - we will consider these technologies on a one by one basis.
In the first section we are going to consider Maven, one of the most popular build frameworks out there. The second chapter is about Java Persistence API and database related problems. The third chapter will cover Spring as far as the XML based configuration is concerned, then we will talk about the new way: the so-called Spring Boot. Finally, we are going to implement an application in which we are going to use all the technologies we have discussed.
Section 1 - Installations
setting up the environment
installing Java, Eclipse, Maven and MySQL
Section 2 - Maven
what is Maven
build lifecycles and phases
clean, site and default
handling dependencies
POM files
Section 3 - Java Persistence API (JPA)
why to use databases?
JDBC and the old way
what is Java Persistence API (JPA)
object relation mapping with JPA
how to deal with inheritance with JPA
how to deal with composition with JPA
basic CRUD operations with EntityManager
using Hibernate
Section 4 - Spring Framework
what is inversion of control and dependency injection?
XML based configuration
annotation based configuration
Section 5 - Spring Boot
what is Spring Boot?
annotations in Spring Boot
using Vaadin with Spring Boot
Section 6 - Vaadin
what is the Vaadin framework?
creating UI components easily with Vaadin
layouts and grids
navigation and pages
Section 7 - Wiring all Together (Application from Scratch)
creating a larger application from scratch (student management software)
creating UI components with Vaadin
creating the database structure etc.
deploying and running the application
using Maven to build and run Spring applications
Section 8 - Spring Security
what is Spring Security?
authorization and authentication
login form and signup form
Section 9 - Software Architectural Principles
what is the monolith architecture?
what are web-services?
SOAP and REST web-services
HTTP protocol
the microservice architecture
Section 10 - Microservices
what are microservices?
GET, POST, PATCH and DELETE mappings
@RequestBody annotation
@RequestParam and @PathVariable annotations
customizing the HTTP request and response
Section 11 - Handling JSON (with Jackson)
JSON and Jackson introduction
ignoring properties in the JSON representation
@JsonProperty annotation
dealing with date and time
Section 12 - Handling MySQL Database
how to connect to a MySQL database?
what is JDBC and JPA?
using database related annotations
Section 13 - Validation and Exception Handling
validating beans and catching exceptions
@ExceptionHandler annotation
@ControllerAdvice annotation
Section 14 - Transactions
what is a transaction?
implementing transactions
propagation types of transactions
Section 15 - RestTemplate and API Gateway
what is an API gateway?
how to use RestTemplate to communicate between web-services?
GET, POST, PATCH and DELETE operations
Thanks for joining the course, let's get started!