目前在写一个存数据到mysql的方法,写的时候在想这么一个问题,按照传统的getconnection和prestatement的做法,其实代码是和数据库绑定的,如果哪天换了一个数据库,这个代码就不能用了。 |
|
5分
#1 |
hibernate和mybatis可以了,只不过不同数据库配置不一样啊!例如:数据库方言,驱动,主键生成方式等等;其他的框架搞定!
|
#2 |
回复楼: 我后来查了查资料,hb的hql是跨数据库的,不过对复杂查询支持得不好,而且建模也很麻烦。mybatis的sql依然是各数据库的native sql,不通用 |
15分
#3 |
其实标准sql语句是数据库通用的,如果不使用一些数据库的特性的话,直接写标准sql就可以。
你的根本问题是写一套代码能够实现跨库(更换了数据库,不需要调整java代码),从这个层面上来说,hibernate是可以满足需要的; 单独写javaBean和映射配置文件是很麻烦,但有相关的工具可以直接通过数据库表生成javaBean和映射配置文件; HQL对有些情况下的复杂查询是无能为力的,这个时候一般使用hibernate的原生SQL查询功能,原生SQL禁止使用特定数据库的特性就行了(比如mysql的limit,sqlServer的top,oracle的to_char等等); |
#4 |
回复3楼: 有道理,可以参考参考 |