27,657 research outputs found

    Performance Analysis of Java Persistence API Providers

    Get PDF
    Nowadays, fast and accurate access to data is very important. Usually data is managed and processed through software applications. In recent years, the most preferred programming model by most application developers is Object Oriented Programming (OOP) where data is represented through objects. These data must be persistent and therefore needs to be stored, and storage can be done on a variety of databases. The most common databases are Relational Database Management Systems (RDBMS). While persistence of objects in RDBMS is limited by object-relational mismatch which is the inconsistency of the direct interaction between two components based on different approaches, OOP object on one side and RDBMS table data on the other, Object-relational mapping (ORM) can be used as a solution. ORM maps the data stored in database tables into the application objects. In other words, ORM persists data from application environment to that of the database. In this paper, we use the Java Persistence API (JPA) specification which provides the characteristics of the ORM technique for developing Java applications. A comparison of three JPA providers was performed by implementing three JPA applications in order to conclude which JPA provider has a better performance

    IceDust: Incremental and Eventual Computation of Derived Values in Persistent Object Graphs

    Get PDF
    Derived values are values calculated from base values. They can be expressed in object-oriented languages by means of getters calculating the derived value, and in relational or logic databases by means of (materialized) views. However, switching to a different calculation strategy (for example caching) in object-oriented programming requires invasive code changes, and the databases limit expressiveness by disallowing recursive aggregation. In this paper, we present IceDust, a data modeling language for expressing derived attribute values without committing to a calculation strategy. IceDust provides three strategies for calculating derived values in persistent object graphs: Calculate-on-Read, Calculate-on-Write, and Calculate-Eventually. We have developed a path-based abstract interpretation that provides static dependency analysis to generate code for these strategies. Benchmarks show that different strategies perform better in different scenarios. In addition we have conducted a case study that suggests that derived value calculations of systems used in practice can be expressed in IceDust
    • 

    corecore