Java Web Development with Spring and Hibernate Training Course
Course Summary
Marakana Spring/Hibernate Training is a 5-day course that teaches you how to develop enterprise Java web applications with the Hibernate, Spring, Spring MVC, and Spring Security open-source frameworks. The class is designed to run as a hands-on tutorial-style with more than 50% of time being devoted to writing code.
The main goal of this course is to set to students on the right path of developing Java web applications on a best-of-breed software stack (Spring and Hibernate) while utilizing time-tested best-practices. While we don't skip on the theory, students focus most of their energy on why they should use a particular technique, and how to best apply it.
Based on Spring Framework 3.0 and Hibernate 3.6.
[top] Duration
5 days.
[top] Objectives
By taking Marakana Spring/Hibernate Training class, you will:
- Understand the fundamentals of Java Web Applications
- Know how to develop Java Servlets, explain the advantages, the disadvantages, and best practices
- Know how to develop Java Servlet Filters
- Know how to develop JavaServer Pages (JSP), take advantage of JSTL and JSP Expression Language (EL)
- Be able to package, deploy, and troubleshoot Java Web Applications.
- Understand how to access relational databases via JDBC
- Be able to set up container-managed database connection pool (DBCP) accessed through JNDI
- Know how to configure container-managed security (authenticating against a relational database)
- Understand the drawbacks of bare-bones JDBC code and the benefits of an ORM solution
- Be able to install, configure, and use Hibernate (with Annotations) for the persistence layer
- Be able to install, configure, and use Spring for the Business and DAO layers
- Understand the advantages of POJOs and AOP-style development with Spring
- Be able to use Spring MVC to replace Servlets, get support for binding, validation, navigation, error handling, etc.
- Be able to take advantage of Spring's Security framework to set up advanced security controls around a Java Web application
- Set up an application server for SSL, and learn how to selectively require SSL where needed
- Learn how to use Eclipse for Java EE to help speed up the development efforts
- Learn how to automate common development tasks with Ant
- Learn best practices, and overall differences between Spring/Hibernate-based applications when compared to other solution.
[top] Audience
Marakana Spring/Hibernate Training course is designed for developers who wish to get into the world of enterprise Java Web development, and avoid all the pitfalls by learning about best practices and the best-of-breed solutions offered by the open-source community.
[top] Prerequisites
The participants taking Marakana Spring/Hibernate Training course must be familiar with:
- Java
- The general principles of object oriented programming (OOP)
To get a smooth intro to Spring and Hibernate students should be familiar with:
- SQL
- JDBC
Prior exposure to the following concepts and technologies is recommended but not required:
- Familiarity with Java reflection and annotations
- Familiarity with Servlets and JSPs
- General understanding of web development principles and technologies (HTML, CSS, JavaScript)
- Basic understanding of the HTTP protocol (concepts like SSL, redirection, GET vs POST, cookies)
- Familiarity with MySQL (or any other relational database)
- Familiarity with Eclipse IDE (or any other IDE)
- Familiarity with Tomcat (or any other Java EE application server)
- Familiarity with Ant
[top] Instructors
Aleksandar Gargenta is the technology brains at Marakana. Always on top of the latest in software, Aleksandar is the company's radar for technology that matters. His latest ventures are perfecting Marakana's Android Internals and Security courses.
Phew. And if that's not enough, he's also the chief architect of Marakana Spark, the on-demand software platform that powers marakana.com and a number of other training companies. As an instructor he's taught hundreds of classes for everyone from Apple to Disney, from NASA to the Department of Defense.
In his spare time Aleksandar runs the San Francisco Java, Android, and HTML5 User Groups with over three thousand members across the three groups.
Aleksandar holds a bachelor’s degree in Mathematics and Computer Science from the University of Waterloo. He is also a father, photographer, hiker, and a race-car driver :-)
For twelve years, Dan has been doing his best to write and help others write some damn fine code. Dan is author of Marakana's Scala Fundamentals course, the latest addition the the Marakana course catalog. Before joining Marakana, he worked as a Developer Advocate at Atlassian, teaching developers how to write plugins for Atlassian's collaboration and development tools. Prior to Atlassian, Dan worked in both engineering and sales for Coverity, helping developers maintain code quality using Coverity's sophisticated static and dynamic analysis tools.
Between Coverity, Atlassian and Marakana, his tutorials have covered C/C++ best practices, Java web development (including Maven, Spring, OSGi, Guava, and RESTful web services using Jersey and Jackson), front-end development using jQuery, and functional programming with Scala.
Dan's latest hobby is lurking on StackOverflow as user "mergeconflict," waiting for tricky Haskell and Scala language questions to jump on. More about Dan Rosen...
[top] Outline
Java EE
- Overview of Java EE (a.k.a. J2EE)
- Comparison of Java EE with other enterprise technologies
Java Web Applications
- Overview of Java Web Application Development
- Overview of Servlets: advantages, disadvantages, API, life-cycle, etc.
- Java Web Application development life-cycle
- Writing Code
- Compiling Code
- Writing Deployment Descriptors (WEB-INF/web.xml files)
- Packaging web applications (generating WAR files)
- Deploying web applications (e.g. on Tomcat)
- Overview of Java Servlet Filters: uses, API, life-cycle, etc.
- Overview of JavaServer Pages (JSP): advantages, disadvantages, API, life-cycle, etc.
- Overview of JSTL
- Overview of JSP Expression Language (EL)
- Best practices with Servlets and JSPs: examples and labs
Database-driven Java Web Applications
- Connecting to databases from Java web applications
- Review of JDBC
- Overview of JNDI
- Overview of container-managed database connection pools (DBCP)
- Overview of DAO design pattern
- Using both Servlets and JSPs through clean design: examples and labs
- The pain of developing with JDBC and Servlets
Hibernate
- Overview of Object-relational-mapping (ORM) frameworks
- Overview of Hibernate: advantages, features, etc.
- Overview of EJB3's JPA
- Switching from JDBC to Hibernate
- Installing and configuring Hibernate
- Mapping entities with Hibernate Annotations
- Mapping associations and collections
- One-to-one, one-to-many, many-to-many
- Understanding directionality (e.g. bi-directional)
- Mapping inheritance (understanding different strategies)
- Mapping associations and collections
- Getting and using Hibernate session
- Understanding transactions
- Storing entities
- Retrieving data
- Hibernate Query Language (HQL)
- Named queries
- Criteria API
- Understanding entity states: transient, persistent, and detached
- Tuning Hibernate: fetching strategies and caching
- Best-practices: examples, and labs
Spring Framework
- Overview of Spring
- Drawbacks of previous approachaes
- Inversion of control (IoC) with Dependency Injection (DI) design patterns
- Advantages of Spring: programming to interfaces, testability, modularity, etc.
- Spring framework as a replacement for EJB
- Overview of the Spring Container
- Wiring beans with Spring
- Via XMl
- Via Annotations
- Spring-Hibernate integration
- Transaction management
- Via Annotations (@Transactional)
- Via XML
- Understanding transaction propagation
- Understanding AOP in Spring
- Overivew of Model-View-Controller (MVC) design pattern
- Overview of Spring MVC
- Switching from Servlets to Spring
- Installing and configuring Spring
- Overview of Spring Controllers
- Controller (interface) vs @Controller
- Handler (controller) mapping strategies
- View resolver strategies
- Overview of Spring validation with JSR 303 with Hibernate Validator (@Valid, @NotNull, @Size, @NotEmpty, @Email, etc.)
- Custom validation annotations and validators
- Best-practices: examples, and labs
Spring Security Framework
- Overview of container-managed security
- Overview of Spring Security framework
- Switcing from container-managed to Spring security
- Installing and configuring Spring Security
- Exposing security context in the application
- Creating authentication and authorization-aware user interfaces
- Securing the business layer with JSR 250-style method-based annotations (AOP)
[top] Additional Notes
This course is typically delivered on Tomcat and MySQL with Eclipse for JavaEE developers, and Ant
Marakana.com Runs on Java with Spring and Hibernate

Marakana.com is written in Java using Spring and Hibernate frameworks. We deploy it on Apache Tomcat Application Server. Both Marakana Spark and Apache Tomcat are Java applications and thus run on Java Virtual Machine. Spark uses MySQL database for persistence. Our operating system of choice is Ubuntu Linux, for security and reliability reasons. So we practice what we teach. You will learn from real developers.
[top] Student Testimonials
The course was unbelievable and the instructor really knew the information. I was amazed how quickly the instructor was able to figure out student problems and answer/address any problems or concerns presented. I learned so much from the course.
Teacher was excellent! The sample project was excellent. It will make a good project to use as a foundation for our next spring project.
Instructor has very good knowledge and is able to reach out. Overall the course was really helpful to understand.
We covered alot of material in a short period of time and it went extremely well. Highly recommend this course.
This course introduced me to Java web development. Aleksander demonstrated solid understanding of the topic. I would definitely recommend the course to my friends and colleagues.
Wonderful class. Fantastic instructor (Aleksander). Fast paced, but very useful. I learned *so* much. The instructor was so knowledgeable he was able to answer every single question presented to him. Nice touch was also the free lunches. :)
Excellent work by Alex. Thumbs up.
The session on Hibernate and Spring framework is great one. The instructor demonstrates great hand on knowledge on Java and all latest frameworks. The instructor given some great examples for how do good design and code using Spring and Hibernate.
Overall very good traing. As per the pace, it was fast paced, but was ok as there were so many topics to be covered.
Great class. I've learned a lot about the subject matter and would love to take another one in the near future. Thanks Sasa!
The course was well organized and the instructor has good knowledge about this topics.
Martin was an extremely knowlegable and well natured individual.
I went from some weak, outdated Java skills to using and understanding some powerful frameworks. I learned much more than I expected. Training classes in general can be hit-or-miss, but this one with this instructor is excellent. He helped bring everyone up to speed and ensured we all understood the technologies involved.
It was a fast paced class, that gave a great overview of Web development using spring and hibernate.
The method used to teach concepts was very excellent. I liked Sasa's way of presentation. Recommend the course.
Instructor was very easy to listen to and retain my attention despite such a long training period.
VERY impressed. I SO needed this course and feel that I got a great deal out of it. Thank you so much!
Aleksandar is a great teacher. He knows his subject material to a depth I usually don't see. I enjoyed learning from someone who knows his stuff so well.
I learned alot!!!
Nice class...and try a different and simpler training web application to develop and built into a more web complex application. Nice very nice!
The length of THIS course should be 2 weeks because all the topics covered in itself is a course.
Overall the course was clear, excellent, well-driven and the teacher knew the subject well. Great course, very clear. I'll recommend it for sure.