Ejb vs Hibernate
To get to EJB, it is good to understand the background of where it emanates from. There are two types of entity beans. These are the CMP and the BMP. The CMP refers to the Container Managed Persistence while the BMP refers to the Bean Managed Persistence. The EJB is specially used for object formulation and serialization when dealing with Relational Databases in SQL.
When the development of a complex application comes to play, it begins with modeling. Classes and objects are preferred to be used over the tables, as they come with complex interrelations which can cause a lot of problems if not well implemented. This in essence means that we deal with a system that employs the design of thinking in objects and not in tables. The use of relational databases is quite fast and tested in time. This compared to object serialization saves time as complex object serialization is a very slow process. The use of relational database technology is a fast and time tested and popular amongst many developers and hence the reason it is preferred.
It is possible to purely deal with tables in development and employ session beans in the data manipulation and reading of data. In as much as this is possible, its practicality is not possible, especially when dealing with really complex projects to use the above method. This is the basis that follows the use of entity beans in EJB.
CMP in EJB1 came designed to be suitable for use with simple tables which do not come with a complex relationship with other tables. The use of CMP avoids references that refer to the underlying database. This in fact means that it is more portable and vendor lock in does not occur. EJB 1 also persist data to object databases besides relational databases.
EJB 2.0 has come with a revolutionary design that is aimed at improving overall functionality. The main change with it is the format it proposes for writing CMP. It provides relationships and also proposes use of a simple query language that is referred to as the EBJ-QL. This language aims at minimizing network traffic through calling an entity bean a session bean.
Hibernate on the other hand is an ORM tool that does not have a steep learning curve that is common with EJB and is not as error prone as EJB. Hibernate is preferred due to its flexibility, allowing Servlets and JSP its use. Hibernate is built in line with the J2EE specification that makes it applicable in most of the applications a developer will have. Hibernate is a special ORM tool as it can not only be used in EJB containers but also are applicable in standalone containers and web containers too. This is the main difference that stands out between EJB and Hibernate. Development with Hibernate is therefore much easier and less complicated as opposed to the use of EJB.
Hibernate is seemingly more popular amongst users of the J2EE environment and if EBJ continues with the development of complex features that take a while to have users acquaint with, Hibernate will be the dominant one in the field, and EJB might find itself being locked out of J2EE as of currently, it is not in touch with most of the developers that it seeks to target in the market.
EJB is an entity bean that is specially used for object formulation
There is a possibility of using tables and use of session beans in data reading and manipulation though not practical
EBJ provides a relatively simple query language for development referred to as EJB-QL
EBJ error prone
Hibernate is relatively easy to understand and implement
Hibernate not as error prone as EJB