`
小哀好困
  • 浏览: 1489 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
最近访客 更多访客>>
社区版块
存档分类
最新评论

JVM的方式来管理数据的讨论

阅读更多
首先,我不知道该题目是否是我想表达的内容。我希望在下面的可以表达清楚

提要:
起初我一直不明白,为什么当一个持久态对象属性改变后,Hibernate会,或者说要 自动将其与数据库同步,而不要求我们用调用session.save方法
后来,我想:假如这个PO不是持久化到数据库中,而是到某个List中。 修改po的属性,当然会修改List中对象的属性。而Hibernate这样处理,就让人感觉好像你的po就是保持到某个集合中一样。

假如这是Hibernate的设计理念,那的确是个很好的想法。
但JVM的内存模型和数据库最大的区别就在于删除。 对于JAVA而言。 你无法直接把某个对象删除掉、因为它是由根引用决定的。 而数据库不同,我们可以把表中的记录移除。


假设我们有对象A和对象B, A持有B对象引用。

JAVA:
我们把A实例保存于A集合,B对象保存于B集合。 假设这2个集合一直有根引用存在。
那么当我们从B集合取出B,并改变它属性时,自然改变结果会被直接保存(一样)。
但是,当我们从B集合删B时,B这个实例其实依旧存在,虽然它已经被从B集合中删除。

Hibernate:
我们把A实例保存于A表,B对象保存于B表。 A表有一个字段放B的id。 假设删除外键约束。
那么当我们从B集合取出B,并改变它属性时,自然改变结果会被直接保存(一样)。
但是,当我们从B集合删B时,B就被删除了。 而A持有的引用也许会被删除(有inverse),也许不会。 但这和内存模型已经不同,因为B已经不在了。

很多时候,我们会为对象来做假删除,因为任何数据都是宝贵的。 但我在想,是否可以设计一种表结构(有根表和事实表)。 让ORM框架,完全模拟JVM的内存模型。 删除的,是根表中的数据,当从任意根表都无法到达某一事实时,再自动把事实删除)。

我在想,以上想法是否可行。 假如大家有任何意见,或者有任何其他地方已经讨论过,请告诉我
:)

分享到:
评论

相关推荐

    推荐一些JVM原理,JVM调优,JVM内存模型,JAVA并发 电子书1

    内存管理涉及JVM内存区域,包括堆、栈、方法区、程序计数器和本地方法栈,每部分都有其特定的用途和管理方式。 2. JVM内存模型:JVM内存模型定义了内存中各个部分的关系,以及在多线程环境下如何共享和分配内存。...

    JVM内存管理和JVM垃圾回收

    Java虚拟机(JVM)内存管理和垃圾回收是Java编程中至关重要的概念,它们直接影响着程序的性能和稳定性。本文将详细解析JVM内存结构以及垃圾回收机制。 首先,JVM内存主要分为四个区域: 1. **堆(Heap)**:这是...

    深入理解jvm虚拟机

    3. 运行时数据区:JVM在执行Java程序的过程中,会将其划分成不同的区域以管理不同的数据。主要包括方法区(Method Area)、堆(Heap)、Java栈(Java Stack)、本地方法栈(Native Method Stack)、程序计数器...

    SAP JVM 7.1 64 bits

    下面将详细讨论SAP JVM的关键组成部分和相关知识点。 1. **SAP JVM的特性**: - **64位支持**:64位版本的JVM可以访问超过4GB的内存,这对于处理大量数据或运行内存密集型应用至关重要。 - **性能优化**:SAP JVM...

    ebs原版本jvm.dll文件

    根据提供的文件信息,我们可以了解到这是关于一个特定版本的 `jvm.dll` 文件的讨论,该文件位于 `C:\Program Files\Oracle\JInitiator 1.3.1.21\bin\hotspot` 目录下,并且被标记为“老版本”。接下来,我们将深入...

    JVM Diagnostics Guide 1.4.2

    10. **代码优化**:提供代码级别的优化建议,如何避免不必要的对象创建,优化数据结构,以及使用适当的并发模式来提高多线程环境下的性能。 这份《JVM诊断指南1.4.2》的PDF文件将为Java开发人员提供丰富的实践经验...

    jvm-nmt-tracing-master.zip

    7. **可视化工具**: Python有各种数据可视化库,如`matplotlib`和`seaborn`,可以用于创建图表,将复杂的内存使用情况以直观的方式呈现出来,帮助团队理解和讨论问题。 通过深入理解NMT的使用和Python脚本的辅助...

    JVM调优.pdf

    本文将基于提供的资料,深入探讨JVM调优的相关知识,包括数据类型的基本概念、堆与栈的区别及其对性能的影响,并重点讨论参数调优策略。 #### 二、数据类型 在Java虚拟机中,数据类型主要分为两大类:基本类型和...

    jvm高级特性与最佳实践

    在讨论Java虚拟机(JVM)的高级特性和最佳实践时,首先需要了解JVM的基本组成和运行原理。JVM是运行Java字节码的虚拟机,它负责将Java程序编译成平台无关的代码,并在不同的操作系统上执行。JVM主要包括类加载器...

    一个jvm启动多个springboot服务

    虽然这里讨论的是单个JVM上的运行,但值得注意的是,Docker容器提供了一种更轻量级的方法来隔离服务,即使在物理或虚拟主机上,也可以通过多个容器运行多个SpringBoot服务。每个容器都有自己的JVM和应用实例。 五、...

    java获得jvm内存大小

    在Java编程语言中,了解和控制JVM(Java虚拟机)的内存管理是至关重要的,尤其是在性能调优、资源管理和避免内存泄漏等方面。本文将深入探讨如何在Java中获取JVM内存大小,包括堆内存的总量、最大值以及剩余空间,并...

    JVM调优总结.pdf

    在典型配置举例部分,文档提供了实例来说明如何设置JVM参数来优化垃圾回收和内存分配。此外,文档还提到了新一代垃圾回收算法,例如G1垃圾回收器,它旨在解决之前算法的一些限制,比如暂停时间过长的问题。 最后,...

    监测JVM各项性能指标

    - 使用`WatchTest`这样的测试工具来模拟实际场景,验证不同配置和调整对JVM性能的影响。 - 结合日志分析,找出性能下降的原因。 - 配合应用性能管理(APM)工具,如Dynatrace、AppDynamics等,获取更深入的洞察。...

    深入理解jvm

    书中会详细介绍JVM的结构,包括类加载子系统、运行时数据区、执行引擎等组成部分,让读者明白Java程序是如何在JVM上运行的。 2. **内存管理**:这部分内容会深入剖析JVM的内存模型,包括堆、栈、方法区、本地方法栈...

    jvm-profiler,jvm分析器向kafka、控制台输出或自定义报告器发送度量.zip

    开源项目的特性也使得这个工具拥有良好的社区支持,遇到问题时可以通过查阅文档、参与讨论或提交issue等方式寻求帮助。 总结起来,Uber的JVM Profiler是一款强大的性能监控工具,尤其适用于Hadoop和Spark等大数据...

    Qcon2011杭州-莫枢(RednaxelaFX)演讲-JVM@Taobao

    此外,JVM的JMX(Java Management Extensions)接口也可能是讨论的重点,通过JMX,淘宝能够实现对JVM内部参数的远程管理和监控,这对于大型分布式系统来说至关重要。 在JVM的性能优化过程中,莫枢可能强调了持续...

    inside_jvm.rar_Inside the JVM_gettingloaded.html_inside jvm_insi

    首先,我们来详细讨论一下JVM的类加载机制。在Java中,类的生命周期始于加载,经过链接、初始化,直至被卸载。加载是找到类的.class文件,读取并转换为运行时数据结构的过程。链接则包括验证、准备和解析三个阶段,...

    JVM高级特性与最佳实践

    1. 内存模型:JVM定义了一套内存模型来规范对象、变量、数据类型等的存储。内存模型主要包含堆、栈、方法区、程序计数器以及本地方法栈等内容。了解JVM内存模型是理解Java程序如何在虚拟机上运行的基础。 2. 垃圾...

Global site tag (gtag.js) - Google Analytics