传智播客-----Hibernate得介绍

传智播客-----Hibernate得介绍
今天佟老师咯我们讲Hibernate含义与相关概念的理解:

是连接Java应用程序与关系数据库之间的中间件.;

是一种ORM映射工具,建立的是关系数据模型与面向对象的域模型之间的映射;

对JDBC API进行封装,负责数据持久化(轻量级).

在分层的软件架构中位于持久化层,封装的数据访问的细节,使业务逻辑层能够专注于

实现业务逻辑.




中间件:

ORM:在单个组件中实现所有实体域对象的持久化,封装数据访问细节.采用原数据(xml文件)来描述对象关系描述的细节

轻量级:创建和销毁不必消耗太多的资源.

重量级:

业务逻辑:

数据访问:在应用程序代码中生成相应的SQL语句,调用JDBC API访问数据库,进行删改查操作!

分层的软件架构:

(1) 分层的含义:

物理上的分层(每层都运行在单独的机器上,即建立分布式的软件系统)与逻辑上的分层(在单个模块中完成特定的功能),本书中的软件分层指的是逻辑上的分层.

(2) 层的特点:

层是由一组类或组件构成,共同完成特定的功能.

层与层之间存在自上而下的依赖关系, 上层组件访问下层组件的API,下层组件不依赖于上层组件.(如表现层与业务逻辑层的关系).

每个层向上公开API,但具体实现细节对外透明.当某一层的实现发生变化,只要API没有发生变化,不会影响其他层的实现.

(3) 软件分层的优缺点

:优点:可维护性;可扩展性;可重用性;

缺点:设计复杂,调试困难,不适合小型项目.

(4) 软件分层的发展:

单层(单层应用程序,数据存储在文件里)------两层(应用程序,数据存储在数据库,典型如jsp Model 1,缺点是页面生成代码与业务逻辑代码相混合,难于维护)-----三层(表现层负责页面代码的生成,业务逻辑层负责业务逻辑的处理,数据库层存储并管理业务数据,缺点是业务逻辑层既负责业务代码的生成,又涉及数据访问细节(如对数据库的操作),不利于阅读代码,可维护性不强,不利于扩展)—四层(表现层—业务逻辑层---持久化层---数据库层)

(5) 好的持久化层的标准:可重用性高,能够支持多种数据库,相对独立性.

(6) 实现持久化层的技术:JDBC(不推荐),Hibernate,JDO,EJB中的CMP等等.

软件的模型:

(1) 含义:在软件开发中,模型表示真实世界的实体.在开发的不同阶段,需要建立不同的模型.在软件分析阶段,需要建立概念模型;在软件设计阶段,需要建立域模型(面向对象)与数据模型(面向关系).

(2) 概念模型:用来分析问题域,识别系统中的实体.(很有可能转化为类),描述实体的概念和属性,以及实体之间的关系(一对一,一对多,多对多),并不涉及实体的行为.便于技术人员与非技术人员的研究.

(3) 域模型(设计模型):域对象(实体域,过程域,事件域对象),及域对象之间的关系.(关联(例:类A,B相关联,可以把被引用的类B作为类A的属性,即private B b ),依赖(类之间的访问关系,如果类A负责访问类B中的方法或属性,或者类A负责实例化类B,则说类A以来类B,比如过程域对象依赖于实体域对象),聚集(整体与部分的关系,部分类的对象不能单独存在),一般化(继承关系))

Hibernate的几个主要接口:

(1) Configration:配制并根启动Hibernate,应用通过Configration的实例来指定对象-关系映射关系文件的位置,或动态配制Hibernate的属性,然后创建SessionFactory的实例.

(2) SessionFactory:对应着一个数据存储源.应用从中产生Session的实例.特点是线程安全的(一个实例可被多个线程共享),重量级(不能随意创建或销毁他的实例,需要很大的缓存,存放预定义的SQL语句与映射元数据).

(3) Session:持久化管理器,负责持久化相关的操作.他的特点是不是线程安全的(避免多线程共享同一Session),轻量级(可以随意的创建和销毁)

(4) Transaction: 封装底层事务接口(JDBC API,JTA,CORBA),应用可以跳过Transaction接口,直接访问底层事务,但不推荐(不利于移植).

(5) Query和Criteria:查询接口.




Java应用中使用Hibernate的基本步骤:

1.编写Hibernate配制文件,可以有xml或properties文件类型.应位于应用中的classpath中.

默认的属性文件名为hibernate.properties.



2.创建持久化类:符合JavaBean规范,包含一些属性,及相应的setXxx()与getXxx()方法.

Hibernate并不要求持久化类必须实现java.io.serializable接口,但对采用分布式结构的Java应用,当Java对象在不同的进程结点间传输时,这个对象所属的类必须实现serializable接口.

此外,如果要在Web应用中,对HttpSession中的对象持久化,也必须实现该接口.Hibernate中持久化类可以运行在任何Java环境中(而实体EJB必须运行在容器中).

3.创建表

4.建立关系对象映射文件:文件命名规范:类名+hbm.xml

5.调用Hibernate API进行测试.

持久化类的属性与访问方法:

属性私有化,设置具体的set和get方法,好处是可以控制对属性的访问权限.

对访问方法的调用者:Java应用程序(调用setXxx()把用户输入的信息写进该持久化类里,调用getXxx()方法把持久化类中的信息输出给用户,只能调用公有的方法)Hibernate(调用setXxx()把数据库里读出的信息写入持久化类里,调用getXxx()读取持久化类中信息,保存到数据库,能访问各种访问权限的方法)

访问方法里可以加入程序逻辑:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值