`
nplw668
  • 浏览: 7544 次
社区版块
存档分类
最新评论

Hibernate之方言篇

阅读更多

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));
	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics