DEV Community ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป

DEV Community ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป is a community of 968,547 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

Create account Log in
Steve Crow
Steve Crow

Posted on • Originally published at Medium on

Quick Tip: Kotlin, Spring Data, and Optionals

Quick Tip: Kotlin Extension Functions and Spring Data


Photo by Diego PH on Unsplash

When working with Spring Data and Kotlin, you may have noticed that the default findById returns an Optional . This super-short post will show you how you can leverage Kotlin extension functions to customize this logic.

What is Optional ?

Optional was introduced in Java 8 as a solution to handle nullability. It serves as a container that might contain a value, freeing you up from using null to mean optionally defined.

Kotlin addresses this using a different approach: being null-safe.

What are extension functions?

Extension functions allow you to extend a class with additional functionality without using decorators or having direct access to modifying the class.

They can be really useful when you want to add things to third-party libraries as if the function was part of the library.

Extending Spring Data

Spring Data added an extension function in 2.1.4 to CrudRepository called findByIdOrNull . However, this method doesnโ€™t work in some of the other interfaces, like JpaSpecificationExecutor .

Hereโ€™s one I use for JpaSpecificationExecutor that wraps the findOne method:

By defining this extension function, I can now bypass the optional entirely and work directly with the nullable return value:

Conclusion

While Kotlin is fully interoperable with Java, we can do some things to improve the overall user experience. Stay tuned for more Quick Tips to help you on your Kotlin journey.

Top comments (0)

โฌ‡๏ธ The only reason people scroll to the bottom...

...is because they want to read more. Create an account to bookmark, comment, and react to articles that interest you.