hibernate之面向设计的细分

在Hibernate中,常常会听见:“fine-grained object model”,大致上是”适当的细粒度对象模型“;何为“适当的”?怎么才算的上是适当的,分寸的拿捏很大程度上取决与系统本身的特性,及设计者对应用逻辑的理解和项目经验的积累;何为“细粒度”?将原本业务逻辑中的对象加以细分,从而得到更加精细的对象模型(划分出更多的对象),在计算机世界中,有这样一句话:再复杂的系统,也就是由1和0组成;总而言之,对于hibernate来言,所谓的细粒度对象模型,主要针对实体类设计的对象细分,对象的细分出于2个目的:1.面向设计的粒度细分,通过对对想更精细的划分,从而更加清晰的展现系统逻辑;2.面向性能的粒度细分,针对业务逻辑,通过合理的细粒度对象,提供系统的能耗比(性能/资源消耗);

 

  • 面向设计的粒度细分
  • Component

 

对于单表的对象细分,在Hibernate中可以借助Component节点的定义完成;Component可翻译为:组件!就是从属某一整体的一个组成部分,在Hibernate中,可以根据某个实体对象中的一个逻辑组成称为Component;Component与实体对象的差别在于:Component没有标识,而实体对象有标识;因为Component是完全从属于实体对象的;

比如:一个门户网站中的用户管理,用户信息可分为:登录时所需要的帐号密码,用户的基本信息,和一些比较大型的属性如:用户的图像,个人简介(还可用继续往下分)!这个大的实体对象中就包含了3个逻辑组成部分:1.账户密码;2.基本信息;3.用户的大字段(图像,个人简介...)

例:TUser这样:

 

public class TUser implements java.io.Serializable {
	private static final long serialVersionUID = 1L;
	
	private Integer tId;
	private String tName;
	private String pwd;
	private TUserBase userBase;
	private TUserImg userImg;
	get()/set()
}
 

 

 

其中的将TuserBase和TuserImg分开了:TuserBase:

 

public class TUserBase implements java.io.Serializable{
	private static final long serialVersionUID = 1L;
	
	private String realName;
	private String sex;
	private String age;
        get()/set()
}

 

 TUserImg:

 

import java.sql.Blob;
import java.sql.Clob;

public class TUserImg implements java.io.Serializable{
	private static final long serialVersionUID = 1L;
	private Blob image;
	private Clob info;
        get()/set()
}

 

 写下测试类:

 

	public static void saveTest() throws Exception {
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		
		TUser tuser = new TUser();
		tuser.settName("root");
		tuser.setPwd("keith");
		
		TUserBase userBase = new TUserBase();
		userBase.setAge("21");
		userBase.setRealName("kejianjun");
		userBase.setSex("man");
		
		TUserImg userImg = new TUserImg();
		FileInputStream img = new FileInputStream("/home/keith/桌面/hankouku.jpg");
		Blob bimg = Hibernate.createBlob(img);
		userImg.setImage(bimg);
		
		Clob info = Hibernate.createClob("to many info..................");
		userImg.setInfo(info);
		
		tuser.setUserBase(userBase);
		tuser.setUserImg(userImg);
		
		session.save(tuser);
		session.getTransaction().commit();
	}

 

 看下日志文件:这是其中的建表SQL;

 

    create table TUser (
        tId integer not null auto_increment,
        tName varchar(255),
        pwd varchar(255),
        realName varchar(255),
        sex varchar(255),
        age varchar(255),
        image longblob,
        info longtext,
        primary key (tId)
    )

 

 看下添加的SQL:

 

Hibernate: insert into TUser  (tName, pwd, realName, sex, age, image, info) values  (?, ?, ?, ?, ?, ?, ?)

当然,在实际开发中并不会像上面那么设计,只是一个简单的例子而已!

  •  面向性能的粒度细分

第二个目的就是针对性能的细分,比如登录的时候,我只需要登录即可,详细信息或者是一些重量级的信息时,如果我不发送请求就不会去数据库里查询,可以提高系统的能耗比;在hibernate3中提供了延迟加载也可称为“懒加载”;

在配置文件中可以这样:

 

<property name="summary" not-null="true" length="200" lazy="true"/>

 这是hibernate文档中的例子,可以做下实验,so Easy的!

 

 

从Peer到脉冲地震波:免费Python工具全流程配置教程(PyCharm+Anaconda) 本文详细介绍了如何使用Python工具链(PyCharm+Anaconda)实现从Peer数据库获取地震波数据到生成脉冲地震波的全流程配置。通过开源工具EQTOOL和PySeismicGen,结合Python环境搭建、数据格式转换和脉冲地震动生成技术,为结构抗震分析提供高效、灵活的解决方案。 阅读详情

相关推荐

STRING数据库的蛋白质相互作用(PPI)网络分析

在转录调控相关的文献中,我们经常能够看到这样的蛋白质相互作用网络(protein protein interaction network,PPI network)。具体而言,这些相关的文献中首先通过RNA-seq、表达谱芯片或者蛋白质组分析等,找到了在不同分组样本间一系列的差异表达基因或蛋白。

weixin_43029125的博客 9455

hibernate的优点 &设计思想

hibernate的优点 &设计思想 1.hibernate框架的作用和优点     hibernate框架是一个数据访问(持久层框架)框架。通过hibernate框架可以对数据库进行增删改查操作。     hibernate优点:         --简单,可以简化数据库操作代码。         --hibernate可以自动生成SQL,可以将ResultSet记录和实体

龙腾四海365的专栏 1165

波士顿咨询最新发布《2025年全球支付报告:未来不稳定》:到2029 年,支付收入将预计达到 2.4 万亿美元

波士顿咨询最新发布《2025年全球支付报告:未来不稳定》:到2029 年,支付收入将预计达到 2.4 万亿美元

face light~ 917

hibernate 使用的设计模式(一) 观察者

  以hibernate.get(String, Serializable)方法为例:   get()的方法实现为:    图1: public Object get(String entityName, Serializable id, LockMode lockMode) throws HibernateException { LoadEvent event = new Loa...

abc123maxiaolong的专栏 585

ESP32—C3实现网页跳转

用户点击HTML页面中的按钮。浏览器根据按钮的href属性向服务器发送HTTP GET请求。服务器根据请求的URL调用相应的回调函数。服务器发送包含新页面HTML内容的HTTP响应。浏览器解析并显示新的HTML页面。这个过程对于用户来说是无缝的,看起来就像是直接从一个页面跳转到另一个页面。实际上,背后发生了HTTP请求和响应的过程。

qq_59527512的博客 1023

告别黑窗口!用VSCode+Native Debug调试C/C++程序,比GDB命令行舒服多了

本文介绍了如何使用VSCode配合Native Debug扩展来调试C/C++程序,替代传统的GDB命令行方式。通过可视化调试环境,开发者可以更高效地管理断点、查看变量和调用栈,大幅提升调试效率。文章详细讲解了环境配置、核心调试功能及高级技巧,帮助开发者快速上手这一现代调试工具。

weixin_26833139的博客 250

Hibernate框架设计之ORM思想

Hibernate框架是比较流行的持久化框架,是一个完整的持久化层解决方案,通过Hibernate的支持,可以以面向对象的方式进行各种数据库操作,从而取代传统的JDBC数据库操作。     ORM的全称是Object/Relation Mapping,即对象/关系映射,对象是指使用的编程语言是面向对象的,而关系则是指使用的数据库是关系型数据库。对象/关系映射是指完成面向对象到关系型数据库的映

王树钰的博客 985

链路监控pinpoint3.0.3安装部署(2)

本文详细介绍了Pinpoint 3.0.3分布式链路监控系统的安装部署过程。主要内容包括:1)数据库安装(HBase、MySQL、Redis、Pinot)的详细配置步骤;2)中间件Zookeeper和Kafka的安装;3)Pinpoint三大组件的部署:Collector、Web和Batch的配置文件修改和启动脚本。文章特别强调了使用-starter-exec.jar包的重要性,并提供了各组件所需的详细参数配置,包括数据库连接、Zookeeper地址、Kafka配置等关键信息。

zouzou_888的博客 1376

hibernate设计一棵普通的树

请设计一个树型结构,完成下列需求:1、  任意一个节点只能有一个(或0个)父节点2、  任意一个节点可以包含多个子节点3、  给定任意一个节点,可以输出这个节点的父节点,以及父节点的父节点,一直到顶级节点,要求输出的时候,从顶级节点开始一直输出到给定的节点为止 要求:给出实体类代码、hibernate映射文件代码以及测试代码:  实体类:树节点:Node.java pack

每天=生命的最后一天 918

使用ShaderGraph制作URP各向异性

URP上用shaderGraph实现各向异性效果,解决只能用shader的问题

dreamform的专栏 1098

YOLO11多个点组合创新:GC10-DET缺陷检测 | DCNv4结合SPPF+11Detect创新性结合

DCNv4结合SPPF+11Detect创新性结合,原始mAP50为0.633 提升至0.651

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1290

Hibernate多表设计及映射

1.多表设计 在开发中,前期进行需求分析,需求分析提供E–R图,根据ER图编写表结构。 表之间关系存在3种:一对多、多对多、一对一。(回顾) 一对多:1表(主表)必须主键 和 多表(从表)必须外键,主表的主键 与 从表外键 形成主外键关系 多对多:提供中间表(从表),提供2个字段(外键)分别对应两个主表。 一对一:??? 面单对象描述 对象与对象 之间关系?【掌握】 一对...

weixin_41653442的博客 697

AMBA-CHI协议详解(一)

CHI体系结构是一种可扩展、一致性的集线器接口和片上互联,可由多个组件使用。CHI体系结构允许根据性能、功耗和面积系统要求灵活地进行组件连接拓扑。硬件一致性使系统组件能够共享内存,而无需维护软件缓存以保持一致性。如果两个组件对同一存储器位置的写入可被所有组件以相同的顺序观察到,则存储器区域是一致的。

Crazzy_M的博客 1万+

hibernate之component对象细分(面向设计的粒度细分)

各研发管理 75

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

《深入浅出Hibernate》(1)

5。1从福州回来前,还是买了这本书,因为一直想对hibernate做一下深入了解,过去都是自己读文档,纸上得来终觉浅。因为过去看过同事买的此书,前面3章很迅速,也按照他的示范做了下例子。第4章开始介绍hibernate的基础知识,看到 Hibernate O/R映射 这一节,收获颇多。如UserType的实现,hibernate3中新增了3个方法。如Hibernate3提供了Dynamic Mod

花非花 1273

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

实体映射策略----细粒度

547

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

实体映射策略

一,实体粒度设计 fine-grained object model grained object model(细粒度模型):就是将原本业务模型中的对象加以细分,从而得到更加精细的对象模型(也就是划分出更多的对象)。对于Hibernate主要是针对实体类设计的对象细分。 对象的细分目的: 1,面向设计的粒度细分:通过对象细化,实现更加清晰的系统逻辑。 2,面向性能的粒度细分:...

DCTM + SAP 256

Hibernate3学习笔记(二) —— 实体粒度设计

实体粒度设计Fine-grained Object Model    “设当的细粒度模型”。“细粒度”,将原本业务模型中的对象加以细分,得到更加精细的对象模型。两个目的:    面向设计的粒度细分:通过对象细化,实现更加清晰的系统逻辑;    面向性能的粒度细分:针对业务逻辑,通过合理的细粒度对象,提高系统的能耗比(性能/资源消耗)。1、面向设计的细粒度细分    在H

593

论Java架构设计

一种业务有其在一段时间内稳定存在的理由(暂且不谈),业务内部有许多用例,每一种用例都有固定的规则,每一规则都有一些可供判定的项,每一项从某一维度来观察都是可测量的,我们的架构首先必须保证完美适应每一项每一种测量方式,很多失败的架构都是因为很多项的测量方式都发生变更这种微观变化中。每个用例都有规则,我们在作业务用例分析,常常假定一些规则是先验的,持久稳定的,然而后来的业务改变常常又证明这种看法是错误的,然而常常我们的架构已经为之付出了不可挽回的代价。业务中的一些用例之间的关系常常和一些常规的模式很相似。

欢迎朋友,我是一名十多年开发经验的新手,希望多多指教。 200

hibernate之面向性能的粒度细分

l1976135784 1322

hibernate缓存机制详细分析

在本篇随笔里将会分析一下hibernate的缓存机制,包括一级缓存(session级别)、二级缓存(sessionFactory级别)以及查询缓存,当然还要讨论下我们的N+1的问题。 随笔虽长,但我相信看完的朋友绝对能对hibernate的 N+1问题以及缓存有更深的了解。 一、N+1问题 首先我们来探讨一下N+1的问题,我们先通过一个例子来看一下,什么是N+1问题: list()获得对象...

飞翔小猪的博客 3732

hibernate查询缓存详细分析

hibernate查询缓存详细分析  更新时间:2017年09月07日 10:40:11   作者:动力节点   我要评论 这篇文章主要介绍了hibernate查询缓存详细分析,包括查询缓存配置方法及关闭二级缓存的...

lgxzzz的博客 370

详细分析Hibernate技术

Hibernate有很多值得学习的地方,这里我们主要介绍Hibernate技术,包括介绍实体CMP-EJB等方面。J2EE领域热切的盼来了一种非常流行的开源技术,它就是Hibernate技术.这个技术被提升到JCP(一种Java规范组织)标准中去了。从J2EE开发者反馈的信息来看,掌握Hibernate知识是所有想在J2EE领域有所作为的人的必修课。Hibernate是一个对象关系映射的技

futurerock的专栏 594
上一篇: hibernate之Blob,Clob字段
下一篇: jsp:userBean:The value for the useBean class attribute is invalid 问题
keithJava
博客等级 码龄16年 2粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值