We used to use lots of PLSQL and we are moving to Hibernate (been using it for a year). We are at a University with lots of apps, lots of app servers, lots of databases. For our web apps we were synchronizing Java objects to PLSQL objects.
It seems like Hibernate might be a performance hit since it has to take data over the wire to the app server to process it, and might select more data than you need.
In actuality for our purposes, we got a performance wash or gain, and a better architecture.
With PLSQL (which we still will use for some batch processes and reports), you have the opposite performance problem... web params which could be processed on the app server need to go over the wire to the DB when they might not need to.
As far as scalability, if you can have a load balanced app server layer, you can scale much easier as the demand increases (we use Linux LVS with Tomcat). Keep the data access simple (Select / Insert / Update / Delete) and keep any logic off the DB that you can. Now you dont need to add processors to the DB, move databases around, etc. Just add more nodes to the app server layer. It is easier to add nodes to the app server node than to cluster the DB.
Also, you can now maintain one technology (Java), and you can debug through web transactions (painful or impossible with PLSQL).
Procedural languages are not as fully featured as Java, there are not as many third party packages, and Hibernate makes SQL seem like assembly language. You shouldnt need to write a lot of it to make an app.
Regards,
Chris
|