JDBC和数据库类型的问题
大牛们:
不同数据库之间,字段类型都多少有些差异,JDBC在获取查询结果时是怎么将JAVA的各种类型和数据库类型对应的?有没有什么资料可查?HIbernate自己还有个类型映射,但是Hibernate底层就是用的JDBC。这3个部分的类型是怎么协调的?
------解决方案--------------------数据库字段由各家厂商自己决定
JDBC不关心实际数据库的类型差异,只尝试可能的,符合SQL标准的数据类型转换
相应数据库的转换规则请参考各厂商给出的DOC,以及说明文件
Hibernate用方言(Dialect)来构造不同的SQL语句,这其实是一种代理模式的应用
------解决方案--------------------不同的厂商在实习JDBC API时都会有自己的数据库类型和Java类型映射过程。而在使用Hibernate的时,Hibernate提供一套统一的代理类型,它会根据实际连接的数据以及数据库方言进行语句解释。
------解决方案--------------------这没什么好纠结的啊??不知道你在纠结什么东西...
JDBC不代表任何数据库,他是一组访问数据库的接口
各厂商推出的JDBC驱动实现,只是实现了这组接口
而你调用JDBC的接口,也不需要关心底层驱动是怎样处理的,你只要符合T-SQL就好了啊
比如SQLSERVER的SQLJDBC4 DRIVER,他自然会把数据库的integer对象转成int,varchar等转成String
MYSQL的驱动,把无符号int转成long,有符号int转成Integer
具体的规则,看说明文件撒...
------解决方案--------------------jdbc是sun提供的接口,具体实现是数据库厂家的事,我们只要参考api来使用就行了。
hibernate是封装过的,是可以跨数据库的,配置映射文件时,用hibernate的数据类型,比如string,那么它会按照所定义数据库言语自己去适应不同数据库了,这个我们就不用管了