Hibernate
- Inheritance, Polymorphism Support
- Custom Data Types
- Collections
- Uni and Bi-directional entity Associations
- Transactions and concurrency
- Caching
- Connection Pooling
- HQL – Advanced Object Query Language etc
iBatis
- Needs SQL Statements to be coded in its Mapping files
- Good when developer needs control over the SQL
TopLink
- Very similar and quite powerful but costs
- Vendor lockin
JPA (Java Persistence API)
- Java EE 5 ORM Solution
- Part of EJB 3 Specification
- Supported by all Java EE vendors
- Designed based on popular ORM solutions like iBatis, JDO, TopLink including Hibernate
- Replaces Entity Beans
- It’s a more of specification; you can use any provider like TopLink etc
- Depends on provider which may implement more than standard specification
- JPA lags in defining Caching and other advanced features
- Useful in case of standard Java based solution using Java EE platform.