At the very beginning of 2014 I decided to start better documenting my reading habits and sharing them here with all of you.

The point is two fold – by curating and documenting, my reading has become more purposeful and diverse. Also – I believe that curation of good content brings a lot of value, helps people explore and allows the best stuff to raise to the top.

Hopefully you’ll enjoy these as we move in the latter half of 2014.

Here we go…

1. Java

>> Writing Tests for Data Access Code – Green Build Is Not Good Enough

A solid start for this weeks review – Petri goes over some good practices for testing an application. The 3rd point about transactionality is especially important – don’t test with different transaction semantics.

It’s also quite funny: “We have two options: the right one and wrong one”.

>> State of the Specialization

Generics over primitives are comming to Java (perhaps reification as well) – Brian Goetz published a very early proposal that’s definitely worth reading.

>> From JPA to Hibernate’s legacy and enhanced identifier generators

Next on the list – further on generation of identifiers with JPA – this series is going to be a great resource to go deep into persistence with both Hibernate and JPA.

>> Introduction to writing custom collectors in Java 8

Who says that Java 8 is deprecating Guava – here’s a good primer on collectors that shows they can play well together.

>> Turning recursive file system traversal into Stream

An elegant use of streams to flatten and traverse an directory on the file system.

2. Spring

>> Should my tests be @Transactional?

This is one of these areas where I’m doing things so much differently now than I was even a few years ago. My view on tests and @Transactional is no.

Why not? A few reasons – one, I find it valuable to have the tests consume my system and my APIs with the same transaction semantics that they’re actually consumed in production; changing these will make things subtly different – and subtle differences in tests are – in my experience – not good.

A second reason behind the `no` is that knowing that I’ll have junk data and the end of my test suite run makes me write the test logic in a certain way, really think through some scenarios and, overall, has a positive effect on the flexibility of the tests.

But that’s my own preference, and as Marco opens the article with – it depends. All in all – a good article to read.

>> SpEL support in Spring Data JPA @Query definitions

Spring Data just got a little bit cooler – nuff said.

>> Spring Data REST now comes with ALPS metadata

ALPS metadata is new to me, and this article makes it look quite interesting – perhaps a step forward from the slow pace the hypermedia types are getting standardized.

Worth a look – and will probably require some digging to really get a good idea of what this kind of metadata can do for an API (digging that I’m planning to do during the weekend).

>> Spring Tool Suite and Groovy/Grails Tool Suite 3.6.0 released

A new STS is out – and since it’s a tool I use every day, I was quick to upgrade; if you’re on Eclipse and doing Spring – there’s really no reason to not give it a go.

3. Technical and Musings

>> TDD Chess Game Part 9: God Save the Queen

While I didn’t have the chance to see this part yet, I’ve been covering the entire series in my weekly reviews since the very start, so I have no qualms recommending it even before I see it this weekend. The series is jam packed – and, if I’m being honest, it’s something that should probably be productized and sold – but since it’s free – go through it and you’ll pick up a lot.

>> What not to do in an interview, part 2: Interviewer Edition

Nice continuation of the first interview tips article – I’ve been on both sides of the interview table and what I found personally is that being the interviewer is much harder (for me). There’s a long, long way to go until you’re a half decent interviewer – and this is a decent list of things to keep in mind when you’re in that position.

Baeldung Pro – NPI EA (cat = Baeldung)
announcement - icon

Baeldung Pro comes with both absolutely No-Ads as well as finally with Dark Mode, for a clean learning experience:

>> Explore a clean Baeldung

Once the early-adopter seats are all used, the price will go up and stay at $33/year.

eBook – HTTP Client – NPI EA (cat=HTTP Client-Side)
announcement - icon

The Apache HTTP Client is a very robust library, suitable for both simple and advanced use cases when testing HTTP endpoints. Check out our guide covering basic request and response handling, as well as security, cookies, timeouts, and more:

>> Download the eBook

eBook – Java Concurrency – NPI EA (cat=Java Concurrency)
announcement - icon

Handling concurrency in an application can be a tricky process with many potential pitfalls. A solid grasp of the fundamentals will go a long way to help minimize these issues.

Get started with understanding multi-threaded applications with our Java Concurrency guide:

>> Download the eBook

eBook – Java Streams – NPI EA (cat=Java Streams)
announcement - icon

Since its introduction in Java 8, the Stream API has become a staple of Java development. The basic operations like iterating, filtering, mapping sequences of elements are deceptively simple to use.

But these can also be overused and fall into some common pitfalls.

To get a better understanding on how Streams work and how to combine them with other language features, check out our guide to Java Streams:

>> Join Pro and download the eBook

Course – LS – NPI EA (cat=REST)

announcement - icon

Get started with Spring Boot and with core Spring, through the Learn Spring course:

>> CHECK OUT THE COURSE

Partner – Moderne – NPI EA (tag=Refactoring)
announcement - icon

Modern Java teams move fast — but codebases don’t always keep up. Frameworks change, dependencies drift, and tech debt builds until it starts to drag on delivery. OpenRewrite was built to fix that: an open-source refactoring engine that automates repetitive code changes while keeping developer intent intact.

The monthly training series, led by the creators and maintainers of OpenRewrite at Moderne, walks through real-world migrations and modernization patterns. Whether you’re new to recipes or ready to write your own, you’ll learn practical ways to refactor safely and at scale.

If you’ve ever wished refactoring felt as natural — and as fast — as writing code, this is a good place to start.