hibernate深入理解-点滴记录

来源:互联网 发布:网络大电影盈利模式 编辑:程序博客网 时间:2024/05/01 08:30

1.什么是hibernate  方言,如何配置方言?


通常我们会在hibernate.cfg.xml文件中这样配置:

<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>  

其实这就是配置方言。

那为什么要配置方言呢?

答:

Hibernate底层依然使用SQL语句来执行数据库操作,虽然所有关系型数据库都支持使用标准SQL语句,但所有数据库都对标准SQL进行了一些扩展,所以在语法细节上存在一些差异,因此Hibernate需要根据数据库来识别这些差异。

举例来说,我们在MySQL数据库里进行分页查询,只需使用limit关键字就可以了;而标准SQL并不支持limit关键字,例如Oracle则需要使用行内视图的方式来进行分页。同样的应用程序,当我们在不同数据库之间迁移时,底层数据库的访问细节会发生改变,而Hibernate也为这种改变做好了准备,现在我们需要做的是:告诉Hibernate应用程序的底层即将使用哪种数据库——这就是数据库方言。

一旦我们为Hibernate设置了合适的数据库方言,Hibernate将可以自动应付底层数据库访问所存在的细节差异。

以下提供一个方言配置表供参考:


RDBMS方言DB2org.hibernate.dialect.DB2DialectDB2 AS/400org.hibernate.dialect.DB2400DialectDB2 OS390org.hibernate.dialect.DB2390DialectPostgreSQLorg.hibernate.dialect.PostgreSQLDialectMySQLorg.hibernate.dialect.MySQLDialectMySQL with InnoDBorg.hibernate.dialect.MySQLInnoDBDialectMySQL with MyISAMorg.hibernate.dialect.MySQLMyISAMDialectOracle (any version)org.hibernate.dialect.OracleDialectOracle 9i/10gorg.hibernate.dialect.Oracle9DialectSybaseorg.hibernate.dialect.SybaseDialectSybase Anywhereorg.hibernate.dialect.SybaseAnywhereDialectMicrosoft SQL Serverorg.hibernate.dialect.SQLServerDialectSAP DBorg.hibernate.dialect.SAPDBDialectInformixorg.hibernate.dialect.InformixDialectHypersonicSQLorg.hibernate.dialect.HSQLDialectIngresorg.hibernate.dialect.IngresDialectProgressorg.hibernate.dialect.ProgressDialectMckoi SQLorg.hibernate.dialect.MckoiDialectInterbaseorg.hibernate.dialect.InterbaseDialectPointbaseorg.hibernate.dialect.PointbaseDialectFrontBaseorg.hibernate.dialect.FrontbaseDialectFirebirdorg.hibernate.dialect.FirebirdDialect





2.hibernate访问数据库用户权限问题(这里只说oracle)

通常我们会在hibernate.cfg.xml文件中这样配置:

<property name="hibernate.default_schema">GSL_PT</property>

这里是配置oracle数据库中访问权限,设置默认数据库用户名。


熟悉hibernate的人应该知道一些hibernate注解,

@Table(name = "PT_LINK", schema = "GSL_PT")
当javabean上出现这样注解,解释为:映射数据库中表名为PT_LIKE,这个表只能用户名为GSL_PT的用户访问。

1 0
原创粉丝点击