我的Hibernate学习笔记-之一

DAO模式的优缺点

  • 优点:实现业务逻辑与数据访问的解耦,符合模块化编程的思想,符合面向对象的编程思想。可以快速的定位错误,维护成本低。
  • 缺点:开发成本高。

DAO其它优点

数据源除DB外还有可能是XML文件,文本文件等,不同的数据源存在不同的访问方式,即便是相同的数据源也存在不同的访问方式。DAO模式可以很好的解决这些问题

  • 定义共通的DAO接口(面向接口编程,业务逻辑层声明接口,提高程序的可扩展性)
  • 针对不同的数据源编写不同的实现(Impl)
  • 相同的数据源,针对不同的访问方式编写不同的实现。

DAO组件

 

  • DAO 工厂类
  • DAO 接口 (一个)
  • 实现了 DAO 接口的具体类 (一个或多个)
  • 数据传输对象(有时称为值对象)

 

PO-VO-DTO-POJO-ENTITY

  • po(persistant object):持久化对象。最简单的PO就是对应数据库中某个表中的一条记录的实体类,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作
  • VO(value object):值对象:用于业务层之间的数据传递,仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要. 同DTO(数据传输对象)相同
  • DTO:数据传输对象
  • POJO(Plain Ordinary Java Object):无格式普通java对象,Hibernate使用,实现Serializable接口

DAO与持久化的关系

DAO一种程序数据访问层(持久化层)的设计思想。或者说DAO模式是持久化层的一个实现

 

映射文件知识点

  • catalog指的数据库名称。name指向实体类,必须是全名包名+类名
  • id只能出现一次,表示主键。
  • column 一定是指的数据库表列名。property,id指的实体类属性名

 

主键生成方式

 

  • native表示自增长,hibernate强烈建议给每个表加一个子增长的列,此列为主键。
  • assigned普通主键,自己赋值。
  • foreign较少使用,此主键又为其他表外键。

Hibernate即时加载与延迟加载

 

  • 即时加载:不管是否使用,马上会加载(从数据库取出放入内存),如session.get()方法。优点:响应速度快,不需要session一直打开状态。缺点:占用资源多。
  • 延迟加载:代码执行后并不马上执行sql语句从数据库获取数据,而是在使用对象时才加载,如session.load()方法。注意,如果使用延迟加载,session要一直处于open状态,否则报异常。优点:占用资源少。缺点:响应速度慢,需要session一直打开状态。

 

对象删除

使用hql可以删除。hql中出现的只用pojo类名与属性名,不能出现表名与字段名。query.executeUpdate();

Hibernate对象的三种状态

 

  • 临时态(未受管理状态):新创建的对象,临时态不一定有。
  • 持久态(受管理状态):对对象进行持久化操作,包括save,update,saveOrUpdate,get,load操作对象会变为持久状态。持久态的数据在事务提交时会自动与数据库对应表记录自动匹配(把程序对象值赋给数据库表值)
  • 游离态(未受管理状态):session.clear(),session.close()对象变为游离态,游离态数据库中有与之对应的数据,游离态一定是由持久态转变的。

以上内容为学习西安云工厂旺旺老师的视频总结。

你可能感兴趣的:(VO,POJO,DAO,Hibernate,DTO)