hibernate底层依然使用sql语句来执行数据库操作,虽然所有关系型数据库都支持使用标准sql语句,但所有数据库都对标准sql语句进行了一些扩展,所以在语法细节上存在一些差异。因此,hibernate需要根据数据库来识别这些差异。
举例来说,当mysql数据库里进行分页查询,只需使用limit关键字就可以了;而标准sql并不支持limit关键字,例如oracle则需要使用行内视图的方式来进行分页。同样的应用如果需要在不同的数据库之间进行迁移,底层数据库的访问细节会发生改变,而hibernate也为这种改变做好了准备,开发者需要做的是,告诉hibernate应用程序的底层即将使用哪种数据库——这就是数据库方言。