Überlegungen zum Java Persistence Framework 2017 (5) Iciql

Korrekturgeschichte

  1. 2017/11/14 Der Titel wurde in "Framework" anstelle des interessanten Namens "Permanent Frame" geändert.

Vorherigen Post

Vorwort

Da ich mit der Lückenzeit schreibe, würde ich es begrüßen, wenn Sie auf Teile mit geringer Genauigkeit hinweisen könnten. Schließen Sie zunächst diejenigen aus, die EOL sind. Wir werden kostenpflichtige Funktionen in Betracht ziehen, diese jedoch aufgrund des Taschenproblems nicht verwenden. Die verwendete Datenbank ist aus einem dummen Grund wie "Nun, vielleicht kann Postgre verwendet werden, auch wenn es nicht angegeben ist" auf Postgre festgelegt.

Umgebung

Tabellenstruktur

employeeテーブルからpostテーブルにID紐づけ

Korrespondenzbereich

ORM Transaction Data Model DSL
× ×

○: Korrespondenz ×: Nicht unterstützt

Impressionen

―― "Es gibt keine leistungsstarke DSL-Funktion wie jOOQ und Query DSL, und es handelt sich nicht um ein Unternehmens-ORM wie Hibernate oder mybatis."

Stichprobe

Einzeltabellensuche

Suche alle

Main.java


public static void main(String... args) {
    try (Db db = Db.open("jdbc:postgresql:example", "postgres", "pass")) {
        Employee e = new Employee();
        List<Employee> list = db.from(e).select();

        list.stream().forEach(em -> {
            System.out.println(em.id + ":" + em.first_name + " " + em.middle_name + " " + em.last_name);
        });
    }
}

Primärschlüsselsuche

Main.java


List<Employee> list = db.from(e).where(e.id).is(BigDecimal.ONE).select();

Tabellenverknüpfung

Main.java


// 「com.iciql.IciqlException: ERROR:Spaltenreferenz"id"Ist mehrdeutig ", können Sie mir eine Kennung mit join geben ...
//List<EmployeePost> list = db.from(e).innerJoin(p).on(p.employee_id).is(e.id).select();
EmployeePost[] list = db.open(EmployeePostDao.class).getAllEmployeePost();

Arrays.asList(list).stream().forEach(em -> {
    System.out.println(
        em.id + ":" + em.employee_id
            + "/" + em.first_name + " " + em.middle_name + " " + em.last_name + " " + em.name);
    });

EmployeePostDao.java


public interface EmployeePostDao extends Dao {
    //Irgendwie ist hier nur ein Array und List ist nicht erlaubt
    @SqlQuery("SELECT e.id AS employee_id, e.first_name, e.middle_name, e.last_name, p.id AS id, p.name FROM employee AS e INNER JOIN post AS p ON e.id = p.employee_id")
    EmployeePost[] getAllEmployeePost();
}

EmployeePost.java


@Iciql.IQSchema("public")
@Iciql.IQIndex(name="Id", type= Iciql.IndexType.UNIQUE, value={ "id" })
public class EmployeePost {

    @Iciql.IQColumn(primaryKey=true, nullable=false, defaultValue="0", name = "id")
    public BigDecimal id;
    public String first_name;
    public String last_name;
    public String middle_name;
    @Iciql.IQColumn(nullable=false, defaultValue="0")
    public BigDecimal employee_id;
    public String name;

    public EmployeePost() {}
}

Generiertes Datenmodell

Es kommt etwas wirklich Einfaches heraus. Die durch das Zeichen (60) festgelegte Spalte wird von bpchar nicht unterstützt.

Employee.java


@IQSchema("public")
@IQTable(name="employee")
@IQIndex(name="Id", type=IndexType.UNIQUE, value={ "id" })
public class Employee implements Serializable {

	private static final long serialVersionUID = 1L;

	@IQColumn(primaryKey=true, nullable=false, defaultValue="0")
	public BigDecimal id;

	// unsupported type bpchar
	public Object first_name;

	// unsupported type bpchar
	public Object last_name;

	// unsupported type bpchar
	public Object middle_name;

	public Employee() {
	}
}

Der Punkt

Suchtpunkte

Glauben Sie an die Quelle, weil die offizielle Dokumentation anders ist.

Nach dem Post

Ist noch nicht.

Referenzartikel

Recommended Posts

Überlegungen zum Java Persistence Framework 2017 (5) Iciql
Berücksichtigung des Java Persistence Framework 2017 (Zusammenfassung) -1
Berücksichtigung des Java Persistence Framework 2017 (7) EclipseLink
Überlegungen zum Java Persistence Framework 2017 (1)
Berücksichtigung des Java Persistence Framework 2017 (8) Hibernate5
Überlegungen zum Java Persistence Framework 2017 (2) Doma2
Java-Framework
Erraten Sie das Java Persistence Framework 2017 (3) Reladomo
Java Framework Vergleich
[Java] Sammlungsframework
Spielen Sie Framework2.5 (Java) -Tipps
Installieren Sie Java auf dem Mac
Führen Sie PostgreSQL unter Java aus
[Entwicklung] Java Framework Vergleich
Lernen von Java Framework # 1 (Mac-Version)
Java-Versionsverwaltung unter macOS
Installieren Sie OpenJDK7 (JAVA) unter Ubuntu 14.04
Reflexion über die Manipulation von Java-Strings
Beim Übergeben von Java Gold SE 8
Oracle Java 8 unter Docker Ubuntu
Überprüfungshinweise zum Java Collections Framework
Installieren Sie Java unter WSL Ubuntu 18.04
Führen Sie das Java-Applet auf Ubuntu aus
Fügen Sie Oracle Java 8 in CircleCI 2 ein
Ändern Sie die Java-Version unter CentOS
Installieren Sie Java 1.8.0 unter Amazon Linux2