我的Hibernate学习笔记-之一
DAO模式的优缺点
优点:实现业务逻辑与数据访问的解耦,符合模块化编程的思想,符合面向对象的编程思想。可以快速的定位错误,维护成本低。 缺点:开发成本高。 DAO其它优点数据源除DB外还有可能是XML文件,文本文件等,不同的数据源存在不同的访问方式,即便是相同的数据源也存在不同的访问方式。DAO模式可以很好的解决这些问题
定义共通的DAO接口(面向接口编程,业务逻辑层声明接口,提高程序的可扩展性) 针对不同的数据源编写不同的实现(Impl) 相同的数据源,针对不同的访问方式编写不同的实现。 DAO组件?
DAO 工厂类 DAO 接口 (一个) 实现了 DAO 接口的具体类 (一个或多个) 数据传输对象(有时称为值对象)?
PO-VO-DTO-POJO-ENTITYpo(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()对象变为游离态,游离态数据库中有与之对应的数据,游离态一定是由持久态转变的。以上内容为学习西安云工厂旺旺老师的视频总结。