Hi,
I am not an expert in hibernate but I can give you an overview to start the discussion :-)
Hibernate is an ORM framework. It will map your
java objects to database relations. Each database supports its own set of data types. In java , the properties can be of any type from primitives (int, long) to Date,
String ...etc. While persisting the java object in the database, hibernate has to know which datatype (DB datatype) should be used for a particular column (like varchar, int..etc).
Hibernate datatype acts as a bridge between java types and DB datatypes. Based on the database dialect , it will choose the correct datatype while creating the tables.
We use hibernate datatypes while creating hibernate mapping files (*.hbm.xml). For example, in the below code snippet, the type="string" is a hibernate type. (not that is all small , unlike java String type). Based on database we use, hibernate will map this "name" property to varchar or something similar.