首先比较一下JDBC的优缺点
JDBC的优点
直接底层操作提供了很简单便捷的访问数据库的方法跨平台性比较强灵活性比较强可以写很复杂的SQL语句
JDBC的缺点
因为JAVA是面向对象的JDBC没有做到使数据能够面向对象的编程使程序员的思考仍停留在SQL语句上
操作比较繁琐很多代码需要重复写很多次
如果遇到批量操作频繁与数据库进行交互容易造成效率的下降
Jdbc是一个比较底层的东西 灵活写SQL语句
注册驱动
获得连接
产生一个Statement
进行操作
返回数据ResultSet
new List对象
把ResultSet数据放入List过程中
A a = new A()
asetXXX(rsgetString(xxx))
代码比较繁琐
纯的JDBC是没有缓存的
模型不匹配(阻抗不匹配)
Java面向对象语言对象模型其主要概念有继承关联多态等数据库是关系模型其主要概念有表主键外键等
对象模型中对象与对象之间的关联关系与关系模型中数据库表之间的关系无法一一对应
对象模型中对象的继承关系在关系模型中无法直接表示
对象模型中对象的等值性(equals)在关系模型中无法直接实现
对象模型中有关联的对象之间的导航访问在关系模型中无法直接实现
解决办法
使用JDBC手工转换
使用ORM(Object Relation Mapping对象关系映射)框架来解决
Hibernate是一个开源ORM框架
ORM全称Object Relation Mapping即对象关系映射它是一种用来完成对象模型到关系模型的映射技术
就是把应用程序中的对象数据持久化到关系数据库的表的一种技术
使用ORM( Object Relation Mapping )框架来解决主流的ORM框架有JBoss公司的HibernateOracle公司的TopLinkApache组织的OJBSun公司的JDO
简单的说ORM能利用面向对象的思想开放基于关系型数据库的应用程序它的主要工作是将对象数据保存到关系数据库的表中以及将关系数据库表中数据读入到对象中
下载地址使用版本
解压获取必需类库文件
将下载目录/hibernatejar和/lib下的hibernate运行时必须的包加入classpath中
安装配置
配置文件hibernatecfgxml和hibernatepropertiesXML和properties两种这两个文件的作用一样提供一个即可推荐XML格式下载目录/etc下是示例配置文件
可以在配置文件指定
数据库的URL用户名密码JDBC驱动类方言等
启动时Hibernate会在CLASSPATH里找这个配置文件
映射文件(hbmxml对象模型和关系模型的映射)在/eg目录下有完整的hibernate示例
步骤
新建java项目并加入相应的jar包及jdbc驱动
创建持久化类
准备数据库表
创建配置文件 hibernatecfgxml
创建映射文件 xxxhbmxml
创建测试文件
nnectionurl 表示要链接的数据库地址
nnectiondriver_class 表示要链接的数据库的驱动类
nnectionusername 要连接的数据库的用户名
nnectionpassword 要连接的数据库的密码
Hibernatedialect 表示要使用的数据库的类型
orghibernatedialectMySQLDialect mysql数据库
orghibernatedialectOracleDialect oracle数据库
orghibernatedialectSQLServerDialect SQLServer数据库
hibernatehbmddlauto
validate:加载hibernate时验证创建表结构
update:加载hibernate时自动更新数据库结构如果表存在不用创建如果不存在就创建
create:每一次加载hibernate时都创建表结构
createdrop:加载hibernate时创建退出时删除
<hibernatemapping package=comhbsidomain>
<class name=User table=user>
<id name=id>
<generator class = native />
</id>
<property name=name />
<property name=birthday type=datetime />
</class>
</hibernatemapping>
<hibernateconfiguration>
<sessionfactory name=foo>
<property name=nnectiondriver_class>commysqljdbcDriver</property>
<property name=connectionurl>jdbc:mysql:///test</property>
<property name=connectionusername>root</property>
<property name=connectionpassword>root</property>
<property name=dialect>orghibernatedialectMySQLDialect</property>
<property name=connectionpassword>root</property>
<property name=show_sql>true</property>
<property name=hbmddlauto>update</property>
<mapping resource=com/hbsi/domain/Userhbmxml/>
</sessionfactory>
</hibernateconfiguration>
这些都是配置文件还需要创建一个domain类