首页 > 其他分享 >Hibernate框架的搭建

Hibernate框架的搭建

时间:2024-04-10 09:59:21浏览次数:24  
标签:关系 化层 Hibernate 持久 框架 对象 模型 public 搭建

Hibernate框架的搭建

分层体系结构与持久化

三层体系结构
分层体系结构

        指的是将系统的组件分隔到不同的层中,每一层中的组件应保持内聚性; 每一层都应与它下面的各层保持松散耦合。 

        层与层之间存在自上而下的依赖关系,即上层组件会访问下层组件的API,而下层组件不应该依赖上层组件。

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

持久化层是怎么来的

为了把数据访问细节和业务逻辑分开,可以把数据访问作为单独的持久化层。

什么是持久化

瞬时状态:保存在内存的程序数据,程序退出后,数据就消失了,称为瞬时状态。

持久状态:保存在数据库(磁盘)的程序数据,程序退出后,数据依然存在,称为程序数据的持久状态。

持久化:将程序数据在瞬时状态和持久化状态之间转换的机制。

 

 持久化层的作用

持久化层封装了数据访问细节,为业务逻辑层提供面向对象的API,使业务逻辑层可以专注于实现业务逻辑。

MVC设计模式与四层结构的对应关系
 
持久化层设计目标

持久化层的设计目标:

        代码可重用性高,能够完成对象持久化操作;

         如果需要的话,能够支持多种数据库平台;

        具有相对独立性,当持久层发生变化时,不会影响上层实现。

Hibernate是持久化层框架。 

软件的模型及ORM

软件的模型

在软件开发的不同阶段,需要为目标系统创建不同类型的模型:

        在分析阶段,需要创建概念模型;

        在设计阶段,需要创建域模型和数据模型。

概念模型 

        概念模型用来模拟问题域中的真实实体。

        概念模型描述了每个实体的概念和属性,以及实体之间的关系。

        概念模型并不描述实体的行为。

关系数据模型

关系数据模型是在概念模型的基础上建立起来的,用于描述这些关系数据的静态结构,它由以下内容组成:

        一个或多个表;

        表与表之间的参照完整性;

        表的所有索引;

        触发器;

        视图。

域模型

域模型是面向对象的,在面向对象术语中,域模型也可称为设计模型。

域模型由以下内容组成:

        具有状态和行为的域对象;

        域对象之间的关系。

域对象

域对象可以代表业务领域中的人、地点、事物或概念等。

域对象分为以下几种:

        实体域对象:业务领域的名词;

        过程域对象:业务领域的动词;

        事件域对象:业务领域中的事件。

域对象关联关系

从Order到Customer的多对一单向关联。

从Customer到Order的一对多单向关联。

 从Customer到Order的一对多双向关联。

 

对象-关系映射

一般情况下,一个持久化类和一个表对应,类的每个实例对应表中的一条记录。 

域模型与关系模型之间存在许多不匹配之处

        域模型中有继承关系,关系模型不能直接表示继承关系。

        域模型中有多对多关联关系,关系模型通过连接表来表示多对多关联关系。

        域模型中有双向关联关系,关系模型只有单向参照关系,而且总是many方参照one方。

        域模型提倡精粒度模型,而关系模型提倡粗粒度模型。

对象-关系映射

对象-关系映射(Object Relational Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。用来把域模型表示的对象映射到关系数据模型对应的数据库结构中去。

通过ORM模式在操作实体对象的时候,就不需要再去和复杂的 SQL语句打交道,只需简单的操作实体对象的属性和方法,ORM 技术是在对象和关系之间提供了一条桥梁,对象型数据和数据库中的关系型的数据通过这个桥梁来相互转化。

ORM框架

通过ORM框架实现

通过JDBC实现 

直接通过JDBC API来持久化实体域对象。

public interface CustomerManger {
    public void saveCustomer(Customer customer);
    public void deleteCustomer(Customer customer);
    public void updateCustomer(Customer customer);
    public Customer loadCustomer(long id);
    public List findCustomerByName(String name);
    public List findCustomerByAge(int age);
    public List findCustomerByNameAndAge(String name,
                                         int age);
    public List findCustomer(String sqlstr);
}
通过JDBC实现的缺点

业务逻辑和关系数据绑定,如果关系数据模型发生变化,例如修改了表的结构,那么必须手工修改程序代码中所有相关的SQL语句,增加了软件维护的难度。

如果程序代码中的SQL语句包含语法错误,在编译时不能检查这种错误,在运行时才能发现这种错误,这增加了调试程序的难度。 

持久化层产生大量冗余代码,如下3个查询方法,程序代码都很相似,仅仅是 SQL SELECT 语句中的查询条件不一样。

public List findCustomerByName(String name);
public List findCustomerByAge(int age);
public List findCustomerByNameAndAge(String name, int age);

findCustomer()方法是供业务逻辑层调用,使得业务逻辑层需要了解数据库的访问细节,无法达到软件分层的效果。 

标签:关系,化层,Hibernate,持久,框架,对象,模型,public,搭建
From: https://blog.csdn.net/LIUCHANGSHUO/article/details/137550632

相关文章

  • 肖sir__接口测试之python+rquest+unittest分层自动化框架
    接口测试之接口po框架一、新建一个项目  接口自动化框架设计实战:第一包:config  案例:#登录接口dl_url='http://cms.duoceshi.cn/cms/manage/loginJump.do'dl_d={'userAccount':'admin','loginPwd':'123456'}dl_h="Content-Type:applic......
  • 打造个性化聊天机器人:用Ollama和Open WebUI搭建你的私有ChatGPT!
    一简介Ollama官网:https://github.com/ollama/ollamaOllama是一个开源的人工智能(AI)和机器学习(ML)工具平台,特别设计用于简化大型语言模型(LLM)的部署和使用流程。用户可以通过Ollama在本地环境中便捷地运行各种大型语言模型,比如Llama2和其他开源模型。该工具的主要优势和特......
  • OneFlow深度学习框架介绍
    OneFlow深度学习框架介绍OneFlow是一个高性能、易用的深度学习框架,由中国初创公司OneFlow开发。它旨在提供一个统一的深度学习平台,支持各种不同的硬件和部署环境。OneFlow的主要特点高性能:OneFlow采用了独特的设计,可以充分利用现代硬件的计算能力,实现高效的并行计......
  • 肖sir__接口测试之unittest框架(14.1)
    接口测试之unittest框架importunittestimportrequestsfromtimeimport*fromjk.HTMLTestRunner3_NewimportHTMLTestRunnerclassCms(unittest.TestCase):@classmethoddefsetUpClass(cls)->None:#类的开始cls.s=requests.Session()@classmethod......
  • python web 开发 - 基于flask框架的 Hello World 示例
    pythonweb开发-基于flask框架的HelloWorld示例文章目录pythonweb开发-基于flask框架的HelloWorld示例1、主要步骤2、flask安装3、创建程序4、运行程序5、通过浏览器访问1、主要步骤(1)安裝flask:pip3installflask(2)編寫並......
  • GO——6分布式锁分布式id___自己使用redis实现,(官方),,分布式id,,go协程,,gin框架,,
    分布式锁分布式id#锁的作用:保证多线程并发情况下,数据的安全-互斥锁-递归锁只能保证同一个进程下的线程#django项目---》部署在多台机器上---》下单场景---》悲观锁--》同一时刻,必须获得锁才能进入下单流程,释放锁--》别人才能进入下单流程-用my......
  • 2024年幻兽帕鲁专用服务器搭建费用揭秘:大促价格表一览无余
    随着幻兽帕鲁Palworld的风靡,越来越多的玩家开始关心起搭建一个专属的游戏服务器需要多少钱。腾讯云作为云服务行业的佼佼者,为广大玩家推出了幻兽帕鲁Palworld专用的游戏服务器,不仅性能卓越,而且价格亲民。对于小型团队或个人玩家,4核16G的游戏服务器已然足够,它能支持最多8位玩家......
  • 2024年幻兽帕鲁/Palworld专用服务器搭建指南:小白版,轻松上手!
    对于热爱《幻兽帕鲁》的玩家们来说,能够与好友一同联机冒险,无疑是增添游戏乐趣的一大方式。但如何轻松搭建一个稳定的联机服务器,却常常成为困扰大家的难题。今天,我将为大家带来一篇简单易懂的服务器搭建攻略,让你从此告别烦恼,与好友尽享游戏时光!首先,我们要访问的是阿里云的游戏......
  • 搭建幻兽帕鲁/Palworld游戏服务器费用全攻略:2024年价格表助你轻松选择
    对于热爱幻兽帕鲁的玩家们来说,拥有一个属于自己的游戏服务器无疑是极致体验。但很多玩家可能对于部署服务器的价格和流程感到迷茫。今天,就为大家揭秘这一神秘的面纱。首先,我们来看看阿里云上的幻兽帕鲁Palworld游戏服务器价格。根据不同的配置,价格也有所差异。4核16G10M的服务......
  • 场景描述--system verilog的场景搭建
    模板-V1模型功能建立场景的概念实现场景的信号传输明确场景的描述内容模型框图场景与实际情况的对应实现步骤场景的概念场景是仿真针对的情况的一种综合描述一般仿真场景和实际场景相对应,且由简单到复杂分布比如,从最理想的数据模型,到引入随机数的干扰模型,再到最后......