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()对象变为游离态,游离态数据库中有与之对应的数据,游离态一定是由持久态转变的。
以上内容为学习西安云工厂旺旺老师的视频总结。
分享到:
相关推荐
目录 课程内容 1 HelloWorld 2 Hibernate原理模拟 - 什么是O/R Mapping以及为什么... 4 一级缓存和二级缓存和査询缓存(面试题)(详见hibernate_3000_Hibernate_3KindsOf_Cache) 5 事务并发处理(面试的意义更大)
JavaEE学习笔记之Hibernate表关系之一对多(inverse详解)
Java相关课程系列笔记之一Java学习笔记 Java相关课程系列笔记之四JDBC学习笔记 Java相关课程系列笔记之六HTML学习笔记 Java相关课程系列笔记之七CSS学习笔记 Java相关课程系列笔记之八JavaScript学习笔记 Java相关...
Java相关课程系列笔记之八JavaScript学习笔记(建议用WPS打开) Java相关课程系列笔记之二Oracle学习笔记(建议用WPS打开) Java相关课程系列笔记之九Servlet...Java相关课程系列笔记之一Java学习笔记(建议用WPS打开)
这篇iBatis 学习笔记是跟着传智播客的视频学习整理的,理解上难免有些错误,请以视频为 根本,有些地方笔记中没有整理到,因为这是我之后看着自己做的工程项目总结的,和视频 不完全一致。请谅解。
java内容介绍 java编程可以分成三个方向: 1、java se (j2se)桌面开发 java中的基础中的基础 2、java ee (j2ee)web开发 3、java me (j2me)手机开发 ...1995 sun正式发布java第一个版本,目前最新是jdk7.0
java 开发,常用框架笔记(hibernate,spring,springmvc等)
本课件大部分资料由作者完成,另一部分来源于教科书及网络,经作者整理、加工、完善后发布。 与本课件相关的源代码程序为Struts2Demo、Spring2Demo、Hibernate3Demo、Struts2Spring2Demo、Struts2Spring2Hibernate3...
客户关系管理(Customer Relationship Management,缩写 CRM),企业活动面向长期的客户关系,以求提升企业成功的管理方式,其目的之一是要协助企业管理销售循环:新客户的招徕、保留旧客户、提供客户服务及...
ext学习笔记一 小试iBatis RIA(Rich Internet Application)的现状和未来 Java应用中域名解析不过期的解决方法 Java编程那些事儿45—数组使用示例1 一步步熟悉OFBiz 用Java做客户端调用.NET写...
为了督促自己学习,同时也是为了及时总结,并与大家分享,近期准备写一个mybatis学习笔记的系列博文。请有兴趣的朋友多多关注、督促并批评指正!不胜感激! 在拙作《纯手工编写第一个Hibernate程序》和《对“纯...