Steven Haines is a senior technologist, accomplished architect, author, and educator. He currently is a principal software engineer at Veeva Systems, where he builds Spring-based Java applications. Steven previously worked on two startups: Chronosphere, where he helped customers design and implement large-scale observability strategies, and Turbonomic, where he was a principal software architect for cloud optimization products. He's also worked for Disney as a technical architect and lead solution architect, building out the next generation of Disney's guest experience and other Disney solutions. Steven specializes in performance and scalability, cloud-based architectures, high-availability, fault tolerance, business analytics, and integration with new and emerging technologies.
As an author, he has written two books on Java programming and more than 500 articles for publications such as InfoWorld, InformIT.com (Pearson Education), JavaWorld, and Dr. Dobb's Journal. He has also written over a dozen white papers and ebooks on performance management and cloud-based architectures.
Steven has taught computer science and Java programming at Learning Tree University and the University of California, Irvine. He also maintains a personal website dedicated to helping software developers and architects grow in their knowledge: www.geekcap.com (by Geeks for Geeks).
Learn how to configure Spring AI to interact with large language models, support user-generated prompts, and connect with a vector store and simple RAG service in your Spring-based applications.
Learn how to write and validate unit tests with JUnit 5. This article shows you how to configure a Maven project for JUnit, write basic and parameterized unit tests, and use JUnit 5’s built-in assertions, annotations, and tags.
Write, build, and run an example application that persists data to and from a relational database using Hibernate, JPA, and the repository pattern.
Get started modeling entities and relationships for Java data persistence, using an example application based on Java 21 with Hibernate 6.3.
From simple I/O to non-blocking asynchronous channels in the Java socket model
Setup a continuous integration process to build and test a Java web app with Jenkins and JUnit
Use embeddable objects to join two primary keys into one composite key
Choosing a JPA inheritance strategy that supports polymorphism