When to Use a Framework

I’ve come across this interesting article titled “Don’t Reinvent the Wheel! Use a Framework!” They All Say. The essence of the article lies in this little fact:

[When should “they” use a framework?”] When they understand the basics of the language and would be able to code what the framework/library does anyway

Frameworks and libraries are great because someone out there had spent a lot of time thinking about a very specific problem domain. Chances that they have gotten it right are very high BUT if you had enough time and money, you could build at least the useful parts of that framework yourself. Nonetheless, it’s cheaper to use/buy their code and have them maintain that part for you.

This is very true with JPA / Hibernate, for instance. If you know SQL and you know SQL well, then JPA does a great deal of helping you getting all that repetitive and often complex CRUD right, and you’ll even know how to tweak and tune JPA or the generated SQL where needed. Gavin King himself has said time and again:

Just because you’re using Hibernate, doesn’t mean you have to use it for everything. A point I’ve been making for about ten years now.

Hibernate helps you write some of your SQL, it doesn’t replace SQL. If you’re new to programming, you shouldn’t use Hibernate right away. You should first learn to write SQL and get a good understanding of your RDBMS. From my experience at conferences and JUG talks, this doesn’t only apply to junior programmers, though. It is very interesting to see how few seniors and architects know about window functions, for instance.

So, if you’re using an RDBMS and Hibernate/JPA, have your team be trained on all the layers of your technology. SQL, HQL/JPQL, and Java.

2 thoughts on “When to Use a Framework

  1. I am on the same wave-length and my next article theme will be “Read your current DB documentation and surprise your DBA”. My idea is that if only everybody would treat the data layer with the same apprehension they have for writing concurrent programs, things would be so much easier. Threading is tough everybody knows it but so it is a proper data persistence logic. Stay tuned ;)

    1. It’s crazy how little we know about those awesome (and overly expensive) beasts that are called RDBMS. Once you figure out all that, you start to appreciate that they’re worth every penny. At least if you’re a dev and you don’t have to pay for the licenses :-)

Leave a Reply