Hibernate使用方言(dialect)来实现数据库的操作的跨平台性。
1、如何使用
使用者必须在hibernate的配置文件比如hibernate.cfg.xml里对所使用的hibernate方言加以设置。
org.hibernate.dialect.Oracle9Dialect
2、hibernate支持的方言:
| RDBMS | 方言 |
|---|---|
| DB2 | org.hibernate.dialect.DB2Dialect |
| DB2 AS/400 | org.hibernate.dialect.DB2400Dialect |
| DB2 OS390 | org.hibernate.dialect.DB2390Dialect |
| PostgreSQL | org.hibernate.dialect.PostgreSQLDialect |
| MySQL | org.hibernate.dialect.MySQLDialect |
| MySQL with InnoDB | org.hibernate.dialect.MySQLInnoDBDialect |
| MySQL with MyISAM | org.hibernate.dialect.MySQLMyISAMDialect |
| Oracle (any version) | org.hibernate.dialect.OracleDialect |
| Oracle 9i/10g | org.hibernate.dialect.Oracle9Dialect |
| Sybase | org.hibernate.dialect.SybaseDialect |
| Sybase Anywhere | org.hibernate.dialect.SybaseAnywhereDialect |
| Microsoft SQL Server | org.hibernate.dialect.SQLServerDialect |
| SAP DB | org.hibernate.dialect.SAPDBDialect |
| Informix | org.hibernate.dialect.InformixDialect |
| HypersonicSQL | org.hibernate.dialect.HSQLDialect |
| Ingres | org.hibernate.dialect.IngresDialect |
| Progress | org.hibernate.dialect.ProgressDialect |
| Mckoi SQL | org.hibernate.dialect.MckoiDialect |
| Interbase | org.hibernate.dialect.InterbaseDialect |
| Pointbase | org.hibernate.dialect.PointbaseDialect |
| FrontBase | org.hibernate.dialect.FrontbaseDialect |
| Firebird | org.hibernate.dialect.FirebirdDialect |
3、自定义方言
实际使用时,hibernate自带的方言会不满足实际应用要求,这时我们就要自定义方言了。
注意了,不要重新造轮子,自定义的方言继承于原生方言,这样可以保证原生方言提供的东西还能继续使用。例如
public class MySQL5Dialect extends org.hibernate.dialect.MySQL5Dialect
来一段代码示例:
public class MySQL5Dialect extends org.hibernate.dialect.MySQL5Dialect {
public MySQL5Dialect(){
super();
//时间秒数比较函数,返回值为秒数,如果?1 > ?2,返回值为正数,反之为负数
registerFunction("timediffsecond",new SQLFunctionTemplate(Hibernate.INTEGER,"time_to_sec(timediff(?1,?2))"));
/**
* 字符串定位函数,即子字符串是否在查询字符串中。
* 返回值为0:子字符串不在查询字符串中;
* 返回值大于0:子字符串在查询字符串中.
* 示例:locate(('bar', 'foobarbar').
*/
registerFunction("locate",new StandardSQLFunction("locate",Hibernate.INTEGER));
}
}
本文介绍了Hibernate如何通过方言实现跨数据库平台操作,列举了多种数据库及其对应的方言,并提供了自定义方言的示例。
1万+

被折叠的 条评论
为什么被折叠?



