IMO, there really is no such thing as a 'good' long term deal.
That said, in terms of the way contracts go for free agent players like JD, it's a good contract, relatively speaking. Yes, it could end up being horrific, but without the benefit of hindsight, I'd call it a good deal. Again, I'm speaking in relative terms compared to other long term deals.