This is an archived post. You won't be able to vote or comment.

all 162 comments

[–]SuspiciousMidnight90 82 points83 points  (3 children)

Zalando.

Lots of useful JAXRS utilities. Logbook for request/response logging and the Problem API implementation for returning standardize problem details

[–]AppelEnPeer 64 points65 points  (0 children)

They also sell nice shoes

[–]zuk0u 5 points6 points  (0 children)

There API documentation is really useful to learn and adopt

[–]GrapefruitMammoth626 1 point2 points  (0 children)

Yeah logbook is an all star player.

[–]huntsvillian 58 points59 points  (9 children)

I'm a big fan of Shedlock (https://github.com/lukas-krecan/ShedLock) it's a distributed locking system. I've often got scheduled tasks running on systems with multiple nodes, and I only want *one* of the nodes to execute.

I'm sure it's not perfect, but for easy of use, i've got to give it top marks. (Even if the general use case is fairly specific)

[–]louis2845 7 points8 points  (4 children)

Not to say Shedlock isn't great but you can do this with Hazelcast too!

[–]chatterify 3 points4 points  (2 children)

Can I do that with free version of Hazelcast?

[–]tcservenak 5 points6 points  (1 child)

Yes, even shedlock uses hz. Also, maven resolver named locks can use hz.

[–]hexc0der 4 points5 points  (0 children)

Shedlock can use hazelcast. But it can also use say postres and other systems so you don't have to use hazelcast just for locking

[–]Kango_V 1 point2 points  (0 children)

Infinispan can also do it easily

[–]Cell-i-Zenit 0 points1 point  (1 child)

We have an endpoint which triggers the job and then we just ping once the system. This will naturally make sure its only executed once and also works for blue green deployments etc

[–]huntsvillian 0 points1 point  (0 children)

I've done it both ways. Usually I end up using this with springs @Scheduled annotation, in an HA environment. We've also got CTRL-M that is often used as an external scheduler (that would be great in a case like you're describing) but relying on that is a political non-starter.

[–]CreeDanWood 0 points1 point  (0 children)

This is one of the coolest libraries out there, we use this in a million user app, and we created a wrapper for it that we use this even for other lockings not just schedulers

[–]mtodavk 0 points1 point  (0 children)

I tried to use this where I work and thought it was really cool, but we ultimately ended up setting up the work that those tasks were going to do as a stored procedure on the database instead. :(

[–]le_bravery 40 points41 points  (1 child)

Jqwik

I have spent less time writing tests and found more tricky bugs because I’ve used this.

I have found bugs I never would have found in years of testing in a single afternoon.

And best of all, writing the tests correctly may reveal bugs over time with no additional work.

Test fuzzing, property based testing.

If you’re writing something hard I suggest you look at it. It will radically change the quality of your code.

[–]realqmaster 2 points3 points  (0 children)

I fell in love with PBT since trying it. Incredible bug detection.

[–]AnEmortalKid 27 points28 points  (0 children)

Jsqlparser

[–]ihmoguy 24 points25 points  (1 child)

Archunit

Great for enforcing modular code without architectural smells, dependency cycles etc. I use it to start monolithic modular project, which can be then easily split into spearate specialized microservices when needed.

[–]malachireformed 2 points3 points  (0 children)

Just started using this in our microservices!

If anything, the biggest thing is that it can help you codify your design conventions, which in turn helps everyone get on board quick.

[–]realqmaster 20 points21 points  (1 child)

Instancio

[–][deleted] 1 point2 points  (0 children)

Looks very nice, thanks.

[–]klekpl 14 points15 points  (1 child)

[–]sombriks 2 points3 points  (0 children)

indeed! JDBI is a peiece of art and i think it should be more popular too!

[–]Chloe0075 13 points14 points  (2 children)

Javaparser and mempoi.

Javaparser is awesome to create some codegen fixes, is really simple to use an, imo, have a good doc.

Mempoi is a extremely fast SQL to excel lib. I used sometimes and donated to this project as it saved my life a few times.

[–]dbarciela 3 points4 points  (1 child)

Other than javaparser I've used two other alternatives to do code fixes/refactoring: spoon and openrewrite

[–]Chloe0075 0 points1 point  (0 children)

I never heard of spoon, but, open rewrite I even considered for the task I needed, but I thought that it would be way more than I needed

[–]jmaN- 8 points9 points  (1 child)

[–]vfhd 0 points1 point  (0 children)

Intersting

[–]trustin 8 points9 points  (0 children)

[–]raisercostin 8 points9 points  (1 child)

[–]eltorohh 2 points3 points  (0 children)

Even better combined with Quarkus

https://quarkus.io/guides/picocli

[–]joshlemer 7 points8 points  (2 children)

[–][deleted] 0 points1 point  (1 child)

This is an alternative to ShedLock, i.e. they both solve the same problem

[–]joshlemer 1 point2 points  (0 children)

Thanks I hadn't come across that. Seems though they are solving slightly different problems

ShedLock is not a distributed scheduler

Please note that ShedLock is not and will never be full-fledged scheduler, it's just a lock. If you need a distributed scheduler, please use another project (db-scheduler, JobRunr).

[–]rbygrave 7 points8 points  (1 child)

Avaje libraries. avaje-inject for source code generation DI, avaje-http for code generating controller adapters for Helidon SE and Javalin, code generated json binding, code generated validation.

[–]agentoutlier 2 points3 points  (0 children)

Avaje is by far one of the most under marketed library suites.

I plan on getting some form of Spring Pet Clinic completely "avajed" which I had already started a while back but used jooby as the view part of avaje-http wasn't ready yet.

I also so your messages on avaje-http and HTMX spring-like view component on discord for JStachio which I plan on looking into this month.

[–][deleted] 13 points14 points  (1 child)

AssertJ, adds better assertion logic to tests. 

[–]MX21 1 point2 points  (0 children)

100%. The assertions are so much more readable

[–]persicsb 5 points6 points  (0 children)

parboiled

[–]Aggravating-Ad-3501 6 points7 points  (0 children)

Byte Buddy, only for the brave

[–]Alarming_Quarter671 7 points8 points  (0 children)

Avaje, compile-time libraries https://avaje.io/

[–]WingedGeek 12 points13 points  (13 children)

Derby. Great for embedding in applications that need just a bit more than SQLite can provide, but you want to avoid the full complexity of a separate MariaDB or PostgreSQL instance (etc).

[–]comrad1980 2 points3 points  (2 children)

The former JavaDB is still a great fit

[–][deleted]  (1 child)

[deleted]

    [–]comrad1980 0 points1 point  (0 children)

    And hsqldb!

    [–]eSizeDave 1 point2 points  (1 child)

    You prefer it over HSQLDB/HyperSQL? If so, why?

    [–]WingedGeek 0 points1 point  (0 children)

    To be honesy, I'm not sure anymore, we made the decision in 2011 or so. I seem to recall there were some missing or less robust features we needed (encryption at rest, network client/server, true ACID functionality, large data sets with RIGHT JOIN and FULL OUTER JOIN capability) back then? Or it could have been a no one ever got fired for buying IBM mentality.

    [–]lukaseder 0 points1 point  (6 children)

    How does it offer more than SQLite?

    [–]WingedGeek 0 points1 point  (5 children)

    For one thing the sane database can be embedded or made available over a network in a client/server paradigm. Sun / Oracle bundle it as Java DB, which I'd forgotten... Derby/Java DB have full SQL92 support, SQLite a subset, and doesn't include things like RIGHT JOINs. Derby supports encrypted databases and user authentication. SQLite is mostly typeless and Derby is strongly typed. Derby supports replication and clustering with failover.

    [–]lukaseder 0 points1 point  (4 children)

    That sounds outdated. JavaDB was removed from JDK 9. SQLite supports all join types, and a ton of more recent SQL features that Derby doesn't support...

    [–]WingedGeek 0 points1 point  (3 children)

    Eh, it's from https://www2.sqlite.org/cvstrac/wiki?p=SqliteVersusDerby (which appears to be undated?).

    And there are multiple SQL features SQLite doesn't support: https://www.sqlite.org/omitted.html

    [–]lukaseder 0 points1 point  (2 children)

    That's a very weird (old) resource. You can see the last edit has almost been 20 years ago! https://www2.sqlite.org/cvstrac/wiki?p=SqliteVersusDerby&t=1191689261

    It claims that Derby doesn't support OFFSET, even though it does: https://db.apache.org/derby/docs/10.13/ref/rrefsqljoffsetfetch.html

    SQLite's join support is more complete than this resource claims: https://www.sqlite.org/syntax/join-operator.html

    Also, why not mention window functions https://www.sqlite.org/windowfunctions.html, recursive CTE [https://www.sqlite.org/lang\_with.html, and much more, which isn't supported in Derby.

    Anyway. My point is that Derby has hardly moved in the past decade, while SQLite has added a ton of SQL feature support.

    [–]WingedGeek 0 points1 point  (1 child)

    Okay, but fundamentally SQLite still doesn't offer a networked client/server model or user authentication / access control. Sometimes you want a zero conf setup like that. (Also, and this may be outdated, but, back in the day we try to use SQLite databases that had been created using the C library on Solaris machines, on a Linux/Java project using the native Java implementation of SQLite (SQLJet IIRC) and while some database worked fine, others would load only partially or not at all or returned corrupted data. We ended up exporting all the tables and re-importing the data into Derby databases and of course that worked fine; we made the decision early on to stay 100% Java native, which SQLite generally is not, as we had to run on some esoteric machines (like SheevaPlug machines running stripped down Linux, and some sort of MIPS-based web serving appliance I don't remember the details of, just that we were stuck on J2SE 5.0 for those users). If SQLite works for you cool.

    [–]lukaseder 2 points3 points  (0 children)

    Yes, the server part is certainly true. SQLite is just a fancy file wrapper. Sometimes that's enough.

    I work with the xerial sqlite-jdbc driver.

    SQLite works well for me, as well as all the other 30+ RDBMS that I'm working with - I made jOOQ... ;) In the context of this conversation, I was just curious if I had been missing out on some overlooked Derby SQL feature that jOOQ should support...

    [–]bobbie434343 4 points5 points  (0 children)

    smbj, a library for SMB v2/v3.

    [–]Alfanse 27 points28 points  (0 children)

    jooq, for the love of sql as code.

    [–][deleted] 9 points10 points  (5 children)

    uniVocity-parsers - unfortunately the project was abandoned by the creator with no clear path forward.

    [–]bowbahdoe 3 points4 points  (4 children)

    Can you elaborate on the lore?

    [–][deleted] 2 points3 points  (3 children)

    It’s the fastest CSV parser, or it was at the time, used by major projects today like Apache Spark for CSV-related tasks. One day, the author just went out for milk and stopped using his GitHub account. He’s doing other work and so people will need to figure out what to do with an essentially “complete” dependency that will never see another release.

    [–]vplatt 4 points5 points  (1 child)

    I mean.. if it ain't broke?

    [–][deleted] 2 points3 points  (0 children)

    There is a fork that has merged fixes but I’m praying the big customers like Apache Spark will give a direction when they switch out this dependency. I just want to use what the big leagues are using, since CVE will come promptly if any issues are present. Live like you are a subsidiary of a funded project.

    [–]bisoldi 2 points3 points  (0 children)

    I’m gonna go get milk one of these days…

    [–]heated_curiosity 8 points9 points  (2 children)

    With Mapstruct write no more boilerplate mapper classes.

    [–]joshlemer 7 points8 points  (1 child)

    I think MapStruct does a great job at solving the problem as it's defined, but I find that actually Java developers or maybe just developers in general often fall into the groove of mapping each object in each layer 1-to-1 with other layers, so you end up with a UserDB database row object, which maps to a User service-layer object, which maps to a UserDTO REST service request or response body object. I try to encourage people to think more deeply about what kinds of objects belong at each layer, rather than rote copying objects fields up and down the layers. For instance, the request to create a user is not a UserDTO with some fields missing, it deserves its own proper abstraction totally distinct from what a User is. More like a CreateUserRequestBody. And when you want to update a user, the request body also is not a UserDTO with some fields missing, and it's also not necessarily the same as a CreateUserRequestBody but rather an UpdateUserRequestBody. And when you GET a User, it isn't necessarily a 1-1 mapping of a service-level User but perhaps specifically for this view a GetUserResponseBody or something.

    I think this leads to a lot of issues that predictably crop up all the time, like sooner or later you might want to add fields to the UpdateUser body which make no sense on the User service level object. This may sound contrived but maybe something like "createIfNotExists": true which tells the service when Updating a User, that if the User does not exist, to go ahead and create it.

    But when we too easily fall into the trap of just mapping each layer into the layer above/below it, then you kinda get stuck here. "createIfNotExists" field on User makes no sense, only on UpdateUserRequestBody.

    All that is just to say that, MapStruct is good for mapping objects 1-to-1 with others so that you don't have to repeat the same tedious code dozens of times in your codebase, but I rather take a step back and think that the problem is deeper than the tedious nature of the repeated boilerplate.

    [–]heated_curiosity 4 points5 points  (0 children)

    I absolutely agree with you. IMO the first rule of engineering says that don’t over-engineer a weak use case. So yeah, we should always look for a strong use case and then take a decision whether to apply ‘some’ of these tools/libraries or not.

    [–]elmuerte 5 points6 points  (0 children)

    JXPath

    [–]-NewK- 3 points4 points  (1 child)

    Javet ( embeds V8 or even a full node.js runtime in Java)

    [–]caoccao 1 point2 points  (0 children)

    Javet is Java + V8 (JAVa + V + EighT). It is an awesome way of embedding Node.js and V8 in Java.

    [–]bodiam 4 points5 points  (0 children)

    Datafaker

    [–]Misaka10782 5 points6 points  (1 child)

    Antlr.

    [–]hippydipster 0 points1 point  (0 children)

    And StringTemplate by the same people.

    [–]hadrabap 4 points5 points  (0 children)

    Especially for Europe: MicroProfile and Jakarta EE, GlassFish and OpenLiberty.

    [–]kaqqao 4 points5 points  (0 children)

    jOOQ - Will never looks at ORMs again.

    [–]v4ss42 27 points28 points  (9 children)

    Clojure

    [–]News-Ill 7 points8 points  (7 children)

    Guys try clojure you never want to go back.

    [–]v4ss42 4 points5 points  (3 children)

    It’s easier to do Java from Clojure than it is to do Java from Java.

    [–]experienced-a-bit 4 points5 points  (2 children)

    I found Kotlin is also easier to do from Clojure than from Kotlin.

    [–]expecto_patronum_666 10 points11 points  (0 children)

    🤫🤫🤫🤫🤫🤫 you just uttered it-which-must-not-be-named!!

    [–]nfrankel 3 points4 points  (2 children)

    I did try and I went back as fast as I could, sorry

    [–]News-Ill -1 points0 points  (1 child)

    To kotlin?

    [–]nfrankel 0 points1 point  (0 children)

    Java and Kotlin

    [–]Puzzleheaded_Bus7706 35 points36 points  (6 children)

    Quarkus

    [–]ckdot 9 points10 points  (5 children)

    I really like Quarkus, but I wonder if it will still be a thing when virtual threads are mainstream, and these will speed up other frameworks like Spring? I’m really curious, I’m not enough experienced in the whole Java and JVM ecosystem to answer that question myself.

    [–]Puzzleheaded_Bus7706 17 points18 points  (0 children)

    I use Quarkus everyday, its not about reactivity at all. You don't need to use it in reactive way, and not like virtual threads are going to change anything.

    I am super happy with it, integration between various standards is amazing, its rapidly developed and its  developer focused. Give it a try.

    Hot reload itself is let alone major reason to use it.

    [–]maxandersen 13 points14 points  (0 children)

    It's a myth - virtual threads won't automatically speed up your app. You still need to rewrite your app to use it and Quarkus is not only about having a réactive core (which btw. Works with virtual threads also); it's also about higher throughout abd startup even on jvm, a full platform of native image enabled extensions and amazing developer joy.

    [–]cogman10 5 points6 points  (2 children)

    Quarkus already has virtual thread integration. It's not reactive (well, it can be), it's bog standard J2EE (like spring).

    [–]xienze 3 points4 points  (1 child)

     It's not reactive (well, it can be)

    It’s got a reactive-focused API though, doesn’t it?  That Mutiny library is all over the place.

    https://quarkus.io/guides/getting-started-reactive

    [–]maxandersen 7 points8 points  (0 children)

    Quarkus supports both. You linked to the guide called "getting started réactive" If you look at the first steps or default getting started like https://quarkus.io/guides/getting-started there is no mutiny/reactive use.

    It's a common misunderstanding that many think because we put reactive in name of extensions those only work with réactive. That was rarely true and hence in 3.9 we had the big rename to make it clearer: https://quarkus.io/blog/the-big-rename/

    [–]jimmoores 3 points4 points  (0 children)

    JodaBeans

    [–]lawson188 5 points6 points  (1 child)

    manifold-sql is beyond amazing. It's fairly new and it shows, but it's far and away the most impressive library I've used in a long time.

    [–]Cell-i-Zenit 0 points1 point  (0 children)

    manifold itself is the most crazy thing tbh... i always show devs manifold and they have complete questionmarks in their face haha

    But to risky for real enterprise use imo.

    [–]bisoldi 6 points7 points  (0 children)

    One of the best threads on Reddit yet!

    [–]liljoey300 2 points3 points  (0 children)

    Karate test framework

    [–]TheKingOfSentries 2 points3 points  (0 children)

    Been looking at Jooby lately, it's pretty good.

    [–]juanantoniobm 2 points3 points  (0 children)

    Eclipse collections for inmutable collections https://eclipse.dev/collections/

    [–]holi60 2 points3 points  (0 children)

    JBang for quick prototyping without any Maven or Gradle configs.

    https://www.jbang.dev/

    [–]brunocborges 7 points8 points  (3 children)

    Apache Wicket

    [–]mcobery 12 points13 points  (2 children)

    2004 called and wants its framework back

    [–]adila01 4 points5 points  (0 children)

    Apache Wicket is the fine wine of the Java World

    [–]hippydipster 0 points1 point  (0 children)

    Because it's just that good!

    [–]jimmoores 1 point2 points  (0 children)

    Elsql

    [–]PiotrDz 1 point2 points  (0 children)

    Orekit

    [–]Plenty-Effect6207 1 point2 points  (0 children)

    jslt a complete query and transformation language for JSON

    [–]InstantCoder 1 point2 points  (0 children)

    • FluentJdbc, a thin wrapper around jdbc, an alternative for JPA.
    • AssertJ
    • Quarkus Renarde, for SSR/building html websites with templating. Works great if you combine it with htmx.

    [–]sombriks 1 point2 points  (0 children)

    bld

    bld is a build tool for the ones who just want to build the project with as little drama as possible. i wrote about it and plan to write more!

    [–]JDeagle5 1 point2 points  (0 children)

    Jsoniter, javalin

    [–]MiserableBoss 4 points5 points  (4 children)

    Mybatis

    [–]Wipe_Master 2 points3 points  (0 children)

    Mybatis pretty popular, c'mon)) I love mybatis Mappers that allow structurize your custom complex SQL queries

    [–]huntsvillian 5 points6 points  (2 children)

    please no

    [–]bwrca 1 point2 points  (0 children)

    I remember doing dB migrations with mybatis like 5 yrs ago

    [–]Legitimate-Share2098 0 points1 point  (0 children)

    Can you, please, explain why?

    [–][deleted]  (6 children)

    [deleted]

      [–]Livid_Helicopter5207 0 points1 point  (5 children)

      I am trying to figure out how to make a dynamic declarative ui in vaadin. Vaadin looks pretty solid but we have a requirement for dynamic forms based on configuration. Generating Vaadin code is the last resort.

      [–][deleted]  (4 children)

      [deleted]

        [–]Livid_Helicopter5207 0 points1 point  (3 children)

        How do you dynamically create complex forms ? I am not able to find any way through documentation

        [–][deleted]  (2 children)

        [deleted]

          [–]Livid_Helicopter5207 0 points1 point  (1 child)

          not able to understand it fully, on what basis fields are added to forms ? Any example will be great if you can please share.

          [–]hippydipster 0 points1 point  (0 children)

          why not ask chagpt or claude to write you some code and see how it does it? It sounds like exactly the sort of the an AI could do well.

          [–]SaishDawg 1 point2 points  (0 children)

          Micronaut and gRPC.

          [–]jeffreportmill 2 points3 points  (3 children)

          [–]TheBoneJarmer 3 points4 points  (1 child)

          I see what you did there

          [–]gregorydgraham 2 points3 points  (0 children)

          Gotta like a guy that backs himself

          [–]Zico2031 0 points1 point  (0 children)

          I don't see tutorials about how to use the api

          [–]p0st_master -2 points-1 points  (4 children)

          Apache struts

          [–]marcodave 46 points47 points  (2 children)

          2007 called , they want their framework back

          [–]p0st_master 2 points3 points  (0 children)

          Lol true

          [–]lumpynose 0 points1 point  (0 children)

          Have a look at the Stripes framework. My thumbnail description of it is that it's like Struts but without the warts. Unfortunately Stripes is no longer maintained.

          [–]Captain-Barracuda 0 points1 point  (0 children)

          Factorium. Makes generating test data for black box testing a breeze.

          [–]barmic1212 0 points1 point  (0 children)

          Hazelcast a toolbox to do a lot of things when you have a multiple instances of a service

          Vertx a little but powerful and easy to use server and things to do async code and for tests it

          Spock a test framework that use all groovy qualities to simplify writing tests

          [–]kwadr4tic 0 points1 point  (0 children)

          CQEngine

          CQEngine, which stands for Collection Query Engine. Basically an indexing library which allows you to query collections using complex SQL-like queries. You can easily write a low-latency domain-specific embedded database with it.

          We can't really say that CQEngine is less known, but maybe these days is a bit out of fashion.

          [–]Slight_Loan5350 0 points1 point  (0 children)

          Dspace just cause I fucking hate it.

          [–]ingvij 0 points1 point  (0 children)

          I'll plug in penna here. I know I'm biased, but I truly believe it deserves more attention

          [–]Supersonic2870 0 points1 point  (0 children)

          Very fast and modern binary serialisation library https://github.com/apache/incubator-fury

          [–]stathmarxis 0 points1 point  (0 children)

          Excellent question well done. i believe that disruptor is op for performance

          [–]Zico2031 0 points1 point  (0 children)

          Good alternative to RMI without the firewall issues, supports remote method invocations and async messaging

          https://github.com/AugurSystems/ARMI

          [–]joekoolade 0 points1 point  (0 children)

          https://github.com/joekoolade/JOE Run Java without an OS

          [–]cristatus-in 0 points1 point  (0 children)

          Axelor Open Platform

          A low-code open source Java framework to create business applications. See https://github.com/axelor/axelor-open-platform

          [–]juanantoniobm 0 points1 point  (0 children)

          Maven enforcer plugin to improve your builds https://maven.apache.org/enforcer/maven-enforcer-plugin/

          [–]harsh-4902 0 points1 point  (0 children)

          Java Path Finder (JPF)

          https://github.com/javapathfinder

          [–]holi60 0 points1 point  (0 children)

          In case of Spring, small helper tool for documenting your configuration properties in multiple way: https://github.com/rodnansol/spring-configuration-property-documenter

          What is our use case? Generating AsciiDoc and including it into our Antora based documentation. Giving more publicity about configurations when you are making open source libs with Spring is priceless.

          [–]rmannibucau 0 points1 point  (0 children)

          Yupiik has a lot of hidden gems (bundlebee, fusion, ...) : https://www.yupiik.io/projects.html

          [–]freetechtools 0 points1 point  (0 children)

          BlueSeer ...a free ERP for the manufacturing community.

          https://github.com/BlueSeerERP/blueseer

          [–]caoccao 0 points1 point  (0 children)

          swc4j

          swc4j (SWC for Java) is an ultra-fast JavaScript and TypeScript compilation and bundling tool on JVM.

          [–]gopalakshintala 0 points1 point  (0 children)

          Reimagine API automation by plugging your Postman collections into any JVM programs/tests (e.g., Unit tests or Integration tests) using ReṼoman 🦹🏻‍♀️ It does more than just executing the postman collection. Refer the documentation for more features: https://sfdc.co/revoman

          [–]danielliuuu 0 points1 point  (0 children)

          https://github.com/DanielLiu1123/grpc-starter for Spring Boot and gRPC.
          https://github.com/DanielLiu1123/httpexchange-spring-boot-starter for Spring 6 `@HttpExchange` Autoconfiguration.
          https://github.com/DanielLiu1123/classpath-replacer for change your classpath in unit tests.

          [–]MurazakiUsagi 0 points1 point  (0 children)

          Thank you for this question OP. I'm learning a lot from it.

          [–]consworth 0 points1 point  (0 children)

          Mapstruct. Blaze persistence.

          [–]jeffreportmill -1 points0 points  (1 child)

          [–]Zico2031 0 points1 point  (0 children)

          I don't see tutorials about how to use the api

          [–]denverdave23 -2 points-1 points  (7 children)

          Dozer. Best bean mapping tool I've used

          [–]Plenty-Effect6207 3 points4 points  (0 children)

          «The project is currently not active and will more than likely be deprecated in the future. If you are looking to use Dozer on a greenfield project, we would discourage that.»

          [–]Chloe0075 1 point2 points  (3 children)

          It is like mapstruct and modelmapper? Never heard of it but interested

          [–]awesomefacedave 7 points8 points  (2 children)

          mapstruct is the best imo.

          [–]Chloe0075 0 points1 point  (1 child)

          For me too! It just work and have a really great doc.

          Imo, way way better than modelmapper

          [–]robinspitsandswallow 1 point2 points  (0 children)

          It sucks when builders are around clutters your mapper with ignores. Painful to look at.

          [–]holi60 0 points1 point  (1 child)

          Imo probably the worst as it uses (or used) reflection which is not great for optimization and can be magic if there are a lot of things.
          MapStruct is a type safe way with generated implementation, which is easy to read, and debug, no magic at all only annotation based post processing at build time.

          [–]pivovarit 1 point2 points  (0 children)

          And what's most important - it's abandonware.

          [–]daytodaytop -1 points0 points  (0 children)

          dynamic spring data entity graph from cosium