1) EDM system.
???
2) Aproximately 10-40 concurrent users maximum.
Hibernate is suitable.
3) Need to store a lot of history information and to achive desired performance need to use precalculated data which will be modified if entities connected to it were modified.
Second-level cache...
http://www.hibernate.org/hib_docs/reference/en/html/performance.html#performance-cache
Native SQL Queries...
http://www.hibernate.org/hib_docs/refer ... rysql.html
4) Also I need to use free databases (MySQL or PostgreSQL etc).
Yeah!!! PostgresSQL, MySQL supported both.
5) System shuld have 3 tiers (not neccessary distributed) clients (web, gui), business logic and db due to use of different clients.
It is your architecture decision, Hibernate does not limit you.
Quote:
No special interface has to be implemented for persistent classes nor do we have to subclass from a special root persistent class. Hibernate also doesn't use any build time processing, such as byte-code manipulation, it relies solely on Java reflection and runtime class enhancement (through CGLIB). So, without any dependency in the POJO class on Hibernate, we can map it to a database table.
The following app. server JBoss, Weblogic, ect are supported.
I am not sure whether I can make such mappings using Hibernate. For example when I store record I need to delete cache data and later it will be regenerated during selection (or something like this). Changes happens quite seldom.
The following second-level cache politics are supported
<!ATTLIST cache usage (read-only|read-write|nonstrict-read-write|transactional) #REQUIRED>
Quote:
If the application only occasionally needs to update data (ie. if it is extremely unlikely that two transactions would try to update the same item simultaneously) and strict transaction isolation is not required, a nonstrict-read-write cache might be appropriate.
A Comparison of Hibernate and Toplink
http://www.calextech.com/articles.html can be helpful.
--
Regards,
Leonid