Here we go…
1. Spring and Java
>> Optimistic locking in JPA/Hibernate [blog.arnoldgalovics.com]
A good review of lost update anomalies and how to detect them using versioned and non-versioned optimistic database locks.
In this installment in the series on Spring Boot and the Google Cloud Platform, we see how easy it is to connect to a managed MySQL database and perform some basic queries.
And for an encore, this tutorial walks us through integrating to Google Spanner using Spring Data. Very cool.
>> Hibernate Tips: Map 1 Entity Attribute to 2 Columns [thoughts-on-java.org]
A nice write-up gives us a way to solve a problem commonly seen in legacy database code by using a transient property and two internal attributes.
>> Hibernate database schema multitenancy [vladmihalcea.com]
In this follow-up to last week's piece on catalog-based multitenancy, we see how schema-based multitenancy is suitable for databases that drive a clear distinction between a catalog and schema, such as PostgreSQL.
A good tutorial on creating a MySQL server using Azure Database for MySQL and connecting to it from a Wildfly-based Spring Boot app. Good stuff.
>> Java is still available at zero-cost [blog.joda.org]
Despite the rumors, Java is still free, but be prepared to shell out big bucks if you insist on remaining on older versions and still rely on Oracle for support.
>> Migrate Maven Projects to Java 11 [winterbe.com]
A solid resource if you simply want to run your applications on JDK 11 but don't care about the new Jigsaw module system.
Also worth reading:
>> String.valueOf(Object) versus Objects.toString(Object) [marxsoftware.blogspot.com]
>> How to fix the Hibernate “No Dialect mapping for JDBC type” issue [vladmihalcea.com]
>> TomEE: Using JCache with CDI [tomitribe.com]
Time to upgrade:
>> Hibernate Validator 6.0.13.Final released [in.relation.to]
>> JDK 11: First Release Candidate [mail.openjdk.java.net]
2. Technical and Musings
>> How to extract a data-rich service from a monolith [martinfowler.com]
Another promising series – this installment prescribes a pattern for this task as a series of steps aimed at minimizing disruptions to service consumers. A great approach.
>> Back to basics: Dependency Injection [blog.frankel.ch]
A quick refresher course touts the merits of DI, even as many are questioning its value due to misinformation.
>> Why certificate pinning with HPKP is a bad idea [advancedweb.hu]
A study of HTTP Public Key Pinning — it may sound good at first but comes with unacceptable risks. Steer clear.
>> Orange Code [michaelfeathers.silvrback.com]
An insightful analogy compares — wait for it — apples to oranges, where the apples are monolithic methods, and the oranges are their carefully crafted equivalents, achieved through method extraction.
>> The State of Agile Software in 2018 [martinfowler.com]
A thoughtful write-up outlines some of the challenges that Agile must overcome, such as “faux agile” and the “Agile Industrial Complex”.
A fascinating look into the dynamics that influence programmer hiring practices.
Also worth reading:
>> Setting up Netdata monitoring with Slack alarms [blog.arnoldgalovics.com]
>> Lessons learned after serving thousands of concurrent users in a devops team for a year [vanwilgenburg.wordpress.com]
>> Setting expectations [dandreamsofcoding.com]
>> Understanding IoT (Part 1) [blog.codecentric.de]
>> Understanding IoT (Part 2) [blog.codecentric.de]
>> Part 2: Scheduling Notebooks at Netflix [medium.com]
>> The Future of Software Delivery is Code. And It’s Here [the-composition.com]
And my favorite Dilberts of the week:
>> Time Management According to Dogbert [dilbert.com]
>> Wally as a Mentor [dilbert.com]
>> We Like Databases [dilbert.com]
4. Pick of the Week
This week I’ve finally announced the new stuff that’s coming down the pike in my REST With Spring course – all related to Spring Boot 2 and Spring 5.1 (along with the upcoming price change):