Since the rise of web applications, abstraction levels has become nearly impossible to trace. For smaller teams with limited time and resources ORM, high level abstraction and deployability is important, yeah; but until when?
I’ve started to work at another software company two months ago. I had to quit my job at an R&D company I worked before as the head of software department at the end of May; but being an indie game developer and independent author, without a certain income nothing was going to work for me (and it didn’t, a rough couple of months), so I searched for a job and finally a colleague presented me where he works, where I have been working for two months now.
Using Grails, (built on Groovy, which is built on Java, which is built on…) ORM is inevitable, also you tend to overlook many things as deadlines and other issues are pushing. In the end, as a relatively new developer, issues that were assigned to me (respond times, load tests, other problems), I had no idea how to investigate (trace the problem to its core) since I am so used to use JDBC as most sophisticated bridge and Java as the highest level language. You may see why in various discussions on the net, especially here in this particular StackOverflow question.
As per issue I encountered, either Google is my best friend or I have to build a solution myself. Turned out Google indeed was my best friend as my first answer was JavaMelody plugin.
JavaMelody is a system monitoring tool.
I took the liberty to proceed without consulting anyone except my colleague who helped me being hired, I was able to see not only generated queries, but also response and hit times, per HTTP request, and much more. It was like breaking into a blackbox, seeing through it. Bang, generated queries were sh*t and I had to use ‘executeUpdate’s.
Now, if only Unity had a better Profiler. I am still suffering with optimization work and I cannot pinpoint what causes problem without manually disabling things and that doesn’t work actually, because everything is entangled with a complexity. When I disable something, scripts and renderers and physics are also disabled.
That’s why there has been no word of Paralycid for so long.