Guess about the 2017 Java Persistence Framework (3) Reladomo

Previous post

-Discussion on Java Persistence Framework for 2017 (1) -Consideration of 2017 Java Persistence Framework (2) Doma2

Preface

Since I am writing using the gap time, I would appreciate it if you could point out any parts with poor accuracy. First, exclude those that are EOL. We will consider paid functions, but we will not actually use them, due to the problem of pockets. The DB used is fixed to Postgre for a stupid reason such as "Well, maybe Postgre can be used even if it is not specified."

environment

** Operation has not been confirmed due to network environment problems. ** ** Please note that neither gradle nor maven can connect to the repository and it does not work, so it is a guess article ... You should be able to hit Mithra Generator with ant, but this is troublesome ...

Correspondence range

ORM Transaction Data Model DSL
※1 ※2

○: Correspondence ×: Not supported

Impressions

――A feeling of "definition from convention" --A configuration that produces everything from XML, table DDL and even index DDL are generated depending on the definition of XML --Sign of lazy evaluation felt from DSL --Supports temporal data model and bitemporal data model, but does not need to be used --Since it is SQL generation from DSL, the user needs to be familiar with the behavior. --Overall, it looks like a DSL with the purpose of "producing highly systematic content under a clear common understanding."

sample

Single table search

EmployeeSearchTest.java


//Primary key search
MithraManagerProvider.getMithraManager().executeTransactionalCommand(tx -> {
    Employee employee = EmployeeFinder.findOne(EmployeeFineder.id().eq(BigDecimal.ZERO));
});
//Search all
MithraManagerProvider.getMithraManager().executeTransactionalCommand(tx -> {
    EmployeeList list = new EmployeeList(EmployeeFiner.all());
});

Employee.xml


<MithraObject
    objectType="transactional"
    xmlns:xsi="http://www.w3.org/2001/XML-Schema-instance"
    xsi:noNamespaceSchemaLocation="mithraobject.xsd">

    <PackageName>jp.co.qualsyite.</PackageName>
    <ClassName>Employee</ClassName>
    <DefaultTable>employee</DefaultTable>

    <Attribute
        name="id"
        javaType="java.util.BigDecimal"
        columnName="id"
        primaryKey="true"
        primaryKeyGeneratorStrategy="SimulatedSequence">

        <SimulatedSequence
            sequenceName="employee"
            sequenceObjectFactoryName="jp.co.qualysite.ObjectSequenceFactory"
            hasSourceAttribute="false"
            batchSize="1"
            initialValue="0"
            incrementSize="1"/>
    </Attribute>
    <Attribute name="firstName"  javaType="java.lang.String" columnName="first_name"  nullable="false" maxLength="60" />
    <Attribute name="middleName" javaType="java.lang.String" columnName="middle_name" nullable="false" maxLength="60" />
    <Attribute name="lastName"   javaType="java.lang.String" columnName="last_name"   nullable="false" maxLength="60" />
    <Attribute name="from"       javaType="java.util.Date"   columnName="from"        nullable="false" />
    <Attribute name="thru"       javaType="java.util.Date"   columnName="thru"        nullable="false" />
    <Attribute name="in"         javaType="java.util.Date"   columnName="in"          nullable="false" />
    <Attribute name="out"        javaType="java.util.Date"   columnName="out"         nullable="false" />

    <Relationship
        name="posts"
        relatedObject="Post"
        cardinality="one-to-many">
            this.id = Post.employeeId
    </Relationship>
</MithraObject>

Table join

The point

--Cover range is ORM + data model logic --Since DSL is a Java implementation, the complementary function of the IDE works. ――It is strong because there is no need to reinvent the wheel on the data model side. ――It seems that the structure needs to be solid with the system in order to harden it with XML.

Addictive points

I'm addicted to it or it's not working.

After post

-Discussion on Java Persistence Framework for 2017 (4) jOOQ

Reference article

Recommended Posts

Guess about the 2017 Java Persistence Framework (3) Reladomo
Consideration on the 2017 Java Persistence Framework (1)
Guess the character code in Java
Consideration on Java Persistence Framework 2017 (Summary) -1
Consideration on Java Persistence Framework 2017 (6) Ebean
Consideration on Java Persistence Framework 2017 (5) Iciql
Consideration on Java Persistence Framework 2017 (7) EclipseLink
About the current development environment (Java 8)
I tried the Java framework "Quarkus"
Consideration on Java Persistence Framework 2017 (8) Hibernate5
Consideration on Java Persistence Framework 2017 (2) Doma2
java framework
About the procedure for java to work
About the new Java release model @ Seki Java (2018/07/20)
About the initial display of Spring Framework
About Java interface
[Java] About Java 12 features
About the confusion seen in startup Java servers
About the official start guide of Spring Framework
About the description order of Java system properties
About the idea of anonymous classes in Java
A story about the JDK in the Java 11 era
[Java] About arrays
Understanding the MVC framework with server-side Java 1/4 View
Understanding the MVC framework with server-side Java 3/4 Controller
Something about java
Where about java
About Java features
About the method
About Java threads
[Java] About interface
About Java class
Java framework comparison
About Java arrays
About java inheritance
About interface, java interface
About the package
Understanding the MVC framework with server-side Java 2/4 Model
About List [Java]
About java var
About Java literals
About Java commands
[Java] Collection framework
A story about introducing Evolutions into the Play Framework
Think about the JAVA = JAVAscript problem (needed in the future)
A survey of the Kubernetes native Java framework Quarkus
Get started with serverless Java with the lightweight framework Micronaut!
About Java log output
Output about the method # 2
About Java functional interface
Java, about 2D arrays
Play Framework2.5 (Java) Tips
About the StringBuilder class
About class division (Java)
Commentary: About the interface
About [Java] [StreamAPI] allMatch ()
About Java StringBuilder class
About the asset pipeline
About the function double-java
[Java] About Singleton Class
About Java method binding