Class Loader Bytecode Injection for Data Persistence

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The labor-intensive process of persisting values in computer programs, particularly the need for extensive configuration and dependency on frameworks like Hibernate, makes data persistence a complex and time-consuming task for developers.

Innovation Solution

A developer-centric method that allows for simple data persistence by using a specially configured class loader to scan for persistence-annotated fields, inject byte code to ensure data values are stored, and utilize a persistence manager to automatically update values in a data store without external framework dependencies.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If traditional frameworks like Hibernate are used for data persistence, then reliability of data storage is improved, but device complexity and ease of operation deteriorate due to extensive configuration requirements and service overhead

Engineering Contradiction:
Improvedata persistence reliabilityVSAvoidpersistence configuration complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system performs self-service by automatically scanning classes for persistence-annotated fields and injecting the necessary byte code without requiring developer configuration. The class loader autonomously identifies fields marked with persistence annotations and modifies the bytecode to enable automatic persistence, eliminating the need for manual framework setup while maintaining reliable data storage.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The persistence mechanism performs preliminary action by injecting byte code into classes during the class loading phase, before the actual runtime execution. This advance preparation embeds the persistence logic directly into the class structure, so that when objects are instantiated and fields are modified, persistence is automatically triggered without requiring additional configuration or setup steps.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If traditional frameworks like Hibernate are used for data persistence, then data storage capability is improved, but ease of operation deteriorates due to labor-intensive configuration processes

Engineering Contradiction:
Improvedata storage capabilityVSAvoidpersistence implementation ease
Core Design Contradiction:
ReliabilityVSEase of operation

Solution Approach 1:

The system enables developers to simply annotate fields with a persistence annotation, and the framework automatically handles all persistence operations. The class loader scans for these annotations and injects the necessary byte code, making the process as easy as adding a annotation while maintaining full data storage capability.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The invention extracts the complex configuration and setup tasks from the developer's workflow and relocates them to the class loader's automatic processing. By separating the annotation syntax (simple) from the implementation complexity (handled automatically by the class loader), the system maintains full persistence capability while dramatically simplifying the developer's task.

Inventive Principle:
Principle #2Taking out (Extraction)

3Reliability

If extensive framework configuration is used for data persistence, then persistence functionality is improved, but productivity deteriorates due to time-consuming setup and development processes

Engineering Contradiction:
Improvepersistence functionalityVSAvoiddevelopment speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system performs all necessary persistence setup in advance during class loading, before runtime execution begins. The class loader scans for persistence annotations and injects byte code during the initialization phase, so that when development proceeds, persistence is already configured and operational, eliminating time-consuming setup steps.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The framework performs self-configuration by automatically identifying fields that require persistence and embedding the necessary logic during class loading. This autonomous setup process eliminates the need for manual configuration steps, allowing developers to maintain full persistence functionality while working at full speed without interruption for setup tasks.

Inventive Principle:
Principle #25Self-service

4Reliability

If external framework dependencies are used for data persistence, then persistence reliability is improved, but device complexity deteriorates due to service overhead and external dependencies

Engineering Contradiction:
Improvepersistence reliabilityVSAvoidframework dependency complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The invention merges the persistence functionality directly into the class loading process and the application's own bytecode. Instead of relying on external framework services, the persistence logic is embedded within the application's class structure through byte code injection, eliminating external dependencies while maintaining persistence reliability.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The class loader acts as an intermediary that bridges the gap between simple field annotations and complex persistence operations. It translates the high-level persistence annotation into the low-level byte code modifications needed for automatic persistence, eliminating the need for external framework mediators while maintaining the same functional reliability.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS11068282B2Apparatuses, methods and systems for persisting values in a computing environment
Publication Date: 2021.07.20 REFINITIV US ORGANIZATION LLC
  • US11068282B2 patent drawing
  • US11068282B2 patent drawing
  • US11068282B2 patent drawing

AI summary

The present disclosure is directed to persisting values in a computing environment, particularly using computer programs that run on a virtual machine. An illustrative method includes first launching a computer program, preferably within the environment of a virtual machine. The method further includes loading a plurality of classes associated with the computer program into memory by way of a special class loader. This class loader scans at least one class of classes loaded into memory for at least one persistence-annotated field within that class. The special class loader further writes byte code into a class that contains the at least one persistence-annotated field. The byte code that is added to the class causes a first object that is later instantiated from the at least one class to have the persistence-annotated field.