深入浅出hibernate1-持久层概述

1.持久层概述

持久的概念理解容易,层说明了需要解耦合,

2.持久层设计

2.1解耦合

解耦合的演变过程

过程1.完成一个功能时在action中完成 1.连接,statement,statement设值 ,获取resultset   这个阶段持久化的代码嵌套在业务层,完全耦合

过程2.用配置文件配置数据库的连接参数,出现管理connection的获得和关闭的DBhelper, 并采用单例

持久层解耦合的目标:

1.应用逻辑和数据逻辑分离

2.逻辑结构和物理结构(数据库)分离

也就是持久层应该向上不与逻辑层耦合,向下应该不与数据库耦合 目的就是底层的变动不会影响到上层的实现

过程3.因为现在一个业务需要频繁操作resultset preparstatement,所以一个业务会十分繁琐复杂,所以DAO模式出现

DAO模式(Data  Access Object) 包括Data Access 和 Data Domain Object   前者是封装 业务原子操作 后者是Bean的使用

DAO模式的目的:

1.数据存储逻辑分离

2.数据访问底层实现的分离  (前两点我觉得可以归为一点)

3.资源管理和调度的分离

4.数据抽象



 过程4.因为要屏蔽下层数据库所以不同数据库要有不同的Dao方法实现,所以需要不同dao方法的实现,采用factory模式进行管理,

2.2资源管理模式

资源的管理主要在于 connection,preparedstatement的管理,

过程5.数据库连接池+动态代理模式,管理连接 且  因为考虑到Connection的close方法可能会被在Dao中调用,所以用动态代理使原生的connection.close()方法变成释放到连接池

过程6.statement的管理池,写法与connectionPool相同,(考虑可能出现connection已经删除,他所产生的statement还在池中的情况)(偷懒不想写这个案例了)

3.持久层设计与ORM

ORM的定义使Object/Relational Mapping  即对象-关系数据映射,定义感觉上像是DAO中的domain Object,没甚么好讲的,很好懂

null

时间: 2024-10-18 15:59:21

深入浅出hibernate1-持久层概述的相关文章

数据持久层(二)

在对象-关系数据库之间提供一个成功的企业 级映射解决方案,尽最大可能弥补这两种范例之间的差异. 持久就是对数据的保持,即对程序状态的保持.通常通过数据库实现持久层是把数据库实现这块当作一个独立逻辑拿出来.说白了,就是数据库程序是在内存中的,为了使程序运行结束后状态得以保存,就要保存到数据库使用ORM(对象关系数据库映射)技术可以避免代码直接操作数据库,增加可移植性,可扩展性,可维护性. J2EE 的三层结构是指表示层( Presentation ),业务逻辑层( Business Logic )

Java数据持久层框架 MyBatis之背景知识二

对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习是最好的办法.J 一.概述 iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架.iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO) iBATIS框架 二.历史变迁 MyBatis 本是apache的一个开

mybatis与hibernate的区别持久层对比【面试题】

Mybatis技术特点: 好处: 通过直接编写SQL语句,可以直接对SQL进行性能的优化: 学习门槛低,学习成本低.只要有SQL基础,就可以学习mybatis,而且很容易上手: 由于直接编写SQL语句,所以灵活多变,代码维护性更好. 缺点: 不能支持数据库无关性,即数据库发生变更,要写多套代码进行支持,移植性不好. Mysql:limit Oracle:rownum 需要编写结果映射. Hibernate技术特点: 好处: 标准的orm框架,程序员不需要编写SQL语句. 具有良好的数据库无关性,

业务层将持久层方法调用

主要业务层和持久层的联系 员工实体Bean package com.project.bean; import java.sql.Date; /** * 员工信息实体类 * @author 45470 * */ public class EmployeeBean { /**员工id*/ private int empId; /**员工登录名*/ private String empAccount; /**员工登录密码*/ private String empPwd="123456"; /

面向对象——三层架构(表现层、业务层、持久层)

三层架构:即表现层.业务层.持久层. ① 持久层:采用DAO模式,建立实体类和数据库表映射(ORM映射).也就是哪个类对应哪个表,哪个属性对应哪个列.持久层 的目的就是,完成对象数据和关系数据的转换. ② 业务层:采用事务脚本模式.将一个业务中所有的操作封装成一个方法,同时保证方法中所有的数据库更新操作,即保证同时成 功或同时失败.避免部分成功部分失败引起的数据混乱操作. ③ 表现层:采用MVC模式. M称为模型,也就是实体类.用于数据的封装和数据的传输. V为视图,也就是GUI组件,用于数据的

UWP开发之ORM实践:如何使用Entity Framework Core做SQLite数据持久层?

选择SQLite的理由 在做UWP开发的时候我们首选的本地数据库一般都是Sqlite,我以前也不知道为啥?后来仔细研究了一下也是有原因的: 1,微软做的UWP应用大部分也是用Sqlite.或者说是微软推荐使用Sqlite吧! 2,简单!就只有一个类库没有多余的参照什么的.不像其他数据库还得做复杂配置什么的麻烦! 3,不需要数据库服务,数据服务和客户都在同一个进程里面.如下图: 4,作为存储系统它只支持一个用户一个数据实体. 5,跨平台跨结构,这个好! Sqlite主要使用内容 如果想充分使用好S

c++ 数据持久层研究(一)

C++ORM框架自动生成代码数据库 用过Java的都知道SSH框架,特别对于数据库开发,Java领域有无数的ORM框架,供数据持久层调用,如Hibernate,iBatis(现在改名叫MyBatis),TopLink,JDO,JPA……非常方便实用. 用过C#的同学们也都知道通过CodeSmith软件,生成微软的PetShop分层模式,达到数据持久层的代码,也非常方便. 那么我们用C++的怎么办,我们也是面向对象编程,在工作中也有数据库需要管理.我们需要完全手工去写那些重复性的代码吗? 特别我现

MyBatis持久层框架使用总结

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis . 2013年11月迁移到Github,MyBatis的Github地址:https://github.com/mybatis/mybatis-3. iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架.iBATIS提供的持久层框架包括SQL Maps和Dat

数据持久层

1.数据持久化 数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称. 数据模型可以是任何数据结构或对象模型, 存储模型可以是关系模型.XML.二进制流等. cmp和Hibernate只是对象模型到关系模型之间转换的不同实现. 数据持久化的好处: 1.程序代码重用性强,即使更换数据库,只需要更改配置文件,不必重写程序代码. 2.业务逻辑代码可读性强,在代码中不会有大量的SQL语言,提高程序的可读性. 3.持久化技术可以自动优化,以减少对数据库的访问量,提高程