I am not using J2EE so am unable to uses any tool that need the container.
Hibernate is "powerful, ultra-high performance object/relational persistence and query service for Java" and nothing more, it doesn't need container for doing ORM. You can get everything (transactions, cache, etc) without AppServ.
I am now confused about the fact the Hibernate states that it is an ORM and not a JDO. Can someone help?
See topic "My favorite ORM tool and why" I've spend some hours to write in it concectning this question. Main idea is JDO is made for everything and RDBMS, but Hibernate is only for for RDBMS therefore you can get some sugar in terms of persomance. Also when you are using JDO you can leave your knoledge of SQL aside, because JDO (I mean specification) will never give you a chanse to use it, Hibernate also have it's own query language but it's SQL based and you can get Connection every time you need it.
Any pointer of Hibernate vs CastorJDO would also be appreciated.
Hm... it's evident that JDO in pure form (specification) isn't used, I mean without any cheats. Every vendor add it's own improvemens in JDOQL for example, some of them is already used by most of the vendors (like count(*) ).
Is CastorJDO the best free JDO tool available?
It semms for me that definitely not.
By the way about byte code manipulation, in J2EE it is not in specification.
And also Hibernate is also doing some of it (See CGLIB )