Java
- Baeldung continues to be one of the best online resources for Java and Spring developers. Their content is very well written.
I am working on a tech tree to cover several popular, valuable concepts that I feel Java developers should know. This is a work-in-progress. Clicking on the image below will take you to the Graphviz source.
Libraries
Mocking
Mockito is my preferred mocking library. It does support static mocking when required, although static code is a code smell and a sign something should be refactored.
See: Mocking Static Methods With Mockito, Baeldung
Example:
// The static mock is scoped within the try statement. Neat!
try (MockedStatic<MyClass> myClass = mockStatic(MyClass.class)) {
myClass.when(MyClass::performOperation).thenReturn("foo");
myClass.when(() -> MyClass.withArguments("foo")).thenReturn("bar");
}
JPA
JPA is Java’s built-in persistence mapper. It’s all annotation-driven.
- Java Persistence book
- Using a SubQuery in a CriteriaQuery
- Fixing a MultipleBagFetchException in Hibernate
- I ran into this at work in November 2022. This link was sent to me by a coworker, and fixed our issue.
One-to-One Mappings
Assume the following structure. The COMPANY
table is the owner of the data.
The entities would look like this:
@Entity
public class Company {
private Long id;
private String name;
@OneToOne(mappedBy = "company")
private CompanyAddress address;
}
@Entity
public class CompanyAddress {
private Long id;
@OneToOne
@JoinColumn(name = "company_id", referencedColumnName = "id")
private Company company;
private String street;
}
Spring
- Custom MVC Validations, Baeldung
- Swagger 2 with Spring REST API, Baeldung