Hibernate原理与应用

Hibernate原理与应用

一、JDBC数据库连接

1JDBC的优点:直接底层操作,提供了很简单、便捷的访问数据库的方法,跨平台性比较强。灵活性比较强,可以写很复杂的SQL语句。

2JDBC的缺点:

1.因为JAVA是面向对象的,JDBC没有做到使数据能够面向对象的编程,使程序员的思考仍停留在SQL语句上。

2.操作比较繁琐,很多代码需要重复写很多次。

3.如果遇到批量操作,频繁与数据库进行交互,容易造成效率的下降。

二、引入

1、模型不匹配(阻抗不匹配)Java面向对象语言,对象模型,其主要概念有:继承、关联、多态等;数据库是关系模型,其主要概念有:表、主键、外键等。

2、解决办法

       1)、使用JDBC手工转换。

       2)、使用ORM(Object Relation Mapping对象关系映射)框架来解决。

3Hibernate是一个开源ORM框架。

4ORM全称ObjectRelation Mapping,即对象关系映射。它是一种用来完成对象模型到关系模型的映射技术。就是把应用程序中的对象数据持久化到关系数据库的表的一种技术。

5、使用ORM ObjectRelation Mapping )框架来解决。主流的ORM框架有JBoss公司的HibernateOracle公司的TopLinkApache组织的OJBSun公司的JDO

6、简单的说:ORM能利用面向对象的思想开放基于关系型数据库的应用程序,它的主要工作是将对象数据保存到关系数据库的表中,以及将关系数据库表中数据读入到对象中。

三、安装配置

1、下载地址http://www.hibernate.org,使用3.3版本。

2、解压获取必需类库文件

3、将下载目录/hibernate3.jar/lib下的hibernate运行时必须的包加入classpath中:

如图:

4、配置文件hibernate.cfg.xmlhibernate.propertiesXMLproperties两种,这两个文件的作用一样,提供一个即可,推荐XML格式,下载目录/etc下是示例配置文件。

可以在配置文件指定:数据库的URL、用户名、密码、JDBC驱动类、方言等。启动时Hibernate会在CLASSPATH里找这个配置文件。

5、映射文件(hbm.xml,对象模型和关系模型的映射)

6、编写示例步骤:

           1.新建java项目,并加入相应的jar包,及jdbc驱动。

           2.创建持久化类

           3.准备数据库表

           4.创建配置文件 hibernate.cfg.xml

           5.创建映射文件 xxx.hbm.xml

       6.创建测试文件

7、使用事项:

1Hibernate.connection.url  表示要链接的数据库地址

2Hibernate.connection.driver_class    表示要链接的数据库的驱动类

3Hibernate.connection.username     要连接的数据库的用户名

4Hibernate.connection.password      要连接的数据库的密码

5Hibernate.dialect   表示要使用的数据库的类型

         org.hibernate.dialect.MySQL5Dialect       mysql数据库

        org.hibernate.dialect.Oracle9Dialect        oracle数据库

         org.hibernate.dialect.SQLServerDialect    SQLServer数据库

6hibernate.hbm2ddl.auto

          validate:加载hibernate时验证创建表结构

          update:加载hibernate自动更新数据库结构,如表存在不创建,如不存在创建。

          create:每一次加载hibernate时都创建表结构

          create-drop:加载hibernate时创建,退出时删除

四、基本概念和CURD

1、开发流程

1)、由Domainobject -> mapping->db(官方推荐)

2)、由DB开始,用工具生成mappingDomain object(使用较多)

3)、由映射文件开始。

2Domain Object限制

        1)、默认的构造方法(必须的)

       2)、有无意义的标示符id(主键)(可选)

       3)、非final的,对懒加载有影响(可选)

3对象关系映射文件:把面向对象中的实体类对象映射到数据库中的实体(表的记录),把实体类之间的关联关系也映射到数据库中多个表之间的相互关系中。这样,在Hibernate中对这些实体对象的操作就直接转换为对数据库表的记录的操作。

4、使用的类和接口

1.Configuration类:是Hibernate的入口,它负责配置并启动HibernateHibernate通过Configuration的实例加载配置文件信息,然后读取指定对象关系映射文件的内容并创建SessionFactory实例。

2.SessionFactory接口:负责初始化Hibernate。一个SessionFactory实例对应一个数据库。应用程序从SessionFactory中获得Session实例。

3.Session接口:Session被称为持久化管理器,负责管理与持久化相关的操作:存储、更新、删除和加载对象。

4.Transaction接口:是Hibernate框架的事务接口。它对底层的事务接口做了封装。包括:JDBC APIJTA

5Session的缓存(一级缓存):SessionCRUD方法以及调用查询接口的list()iterate()方法时,如果session缓存中不存在相应的对象,Hibernate就会把该对象加入到第一级缓存中,如果session缓存中已经存在这个对象,就不需在去数据库加载,而直接使用缓存中的对象。

    flush: 进行清理缓存(此时缓存中的数据并不丢失)的操作,让缓存和数据库同步执行一些列sql语句,但不提交事务,

    commit:先调用flush() 方法,然后提交事务. 则意味着提交事务意味着对数据库操作永久保存下来。  

session的缓存一般交由hibernate框架自动管理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值