Considération sur le framework de persistance Java 2017 (5) Iciql

Historique des corrections

  1. 2017/11/14 Le titre a été changé en "Framework" au lieu du nom intéressant "Permanent Frame".

Post précédent

Préface

Étant donné que j'écris en utilisant le temps d'intervalle, je vous serais reconnaissant si vous pouviez indiquer les parties avec une précision médiocre. Tout d'abord, excluez ceux qui sont EOL. Nous considérerons les fonctions payantes, mais nous ne les utiliserons pas réellement, en raison du problème des poches. La base de données utilisée est fixée à Postgre pour une raison stupide telle que "Eh bien, peut-être que Postgre peut être utilisé même s'il n'est pas spécifié."

environnement

Structure de la table

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

Gamme de correspondance

ORM Transaction Data Model DSL
× ×

○: Correspondance ×: non pris en charge

Impressions

―― "Il n'y a pas de fonction DSL puissante comme jOOQ et Query DSL, et ce n'est pas un ORM d'entreprise comme Hibernate ou mybatis."

échantillon

Recherche de table unique

Rechercher tout

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);
        });
    }
}

Recherche de clé primaire

Main.java


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

Jointure de table

Main.java


// 「com.iciql.IciqlException: ERROR:Référence de colonne"id"Est ambigu ", pouvez-vous me donner un identifiant avec jointure ...
//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 {
    //D'une manière ou d'une autre, il n'y a qu'un tableau et la liste n'est pas autorisée
    @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() {}
}

Modèle de données généré

Quelque chose de vraiment simple sort. La colonne définie par le caractère (60) n'est pas prise en charge par bpchar.

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() {
	}
}

Le point

--Fournir uniquement les fonctions minimales en mettant l'accent sur la légèreté de la bibliothèque elle-même --POJO, définition d'interface uniquement, politique pour éliminer toute complexité d'héritage

Points addictifs

Croyez en la source car la documentation officielle est différente.

Après la publication

N'est pas encore.

Article de référence

Recommended Posts

Considération sur le framework de persistance Java 2017 (5) Iciql
Considération sur le cadre de persistance Java 2017 (résumé) -1
Considérations sur le cadre de persistance Java 2017 (7) EclipseLink
Considération sur le framework de persistance Java 2017 (1)
Considérations sur le cadre de persistance Java 2017 (8) Hibernate5
Considérations sur le cadre de persistance Java 2017 (2) Doma2
framework java
Devinez le cadre de persistance Java 2017 (3) Reladomo
Comparaison du framework Java
[Java] Cadre de collection
Conseils pour Play Framework2.5 (Java)
Installez Java sur Mac
Exécutez PostgreSQL sur Java
[Développement] Comparaison du framework Java
Apprentissage du framework Java # 1 (version Mac)
Gestion des versions Java sur macOS
Installez OpenJDK7 (JAVA) sur ubuntu 14.04
Réflexion sur la manipulation de chaînes Java
En passant Java Gold SE 8
Oracle Java 8 sur Docker Ubuntu
Notes de révision de Java Collections Framework
Installez Java sur WSL Ubuntu 18.04
Exécutez l'applet java sur ubuntu
Mettez Oracle Java 8 dans CircleCI 2
Changer la version java sur CentOS
Installez java 1.8.0 sur Amazon linux2