Speedment is a Stream ORM Java Toolkit and Runtime

Overview

Spire the Hare

Java Stream ORM

Maven Central Javadocs Build Status Hex.pm Join the chat at https://gitter.im/speedment/speedment

Speedment is an open source Java Stream ORM toolkit and runtime. The toolkit analyzes the metadata of an existing SQL database and automatically creates a Java representation of the data model. This powerful ORM enables you to create scalable and efficient Java applications using standard Java streams with no need to type SQL or use any new API.

Speedment was originally developed by researchers and engineers based in Palo Alto with the purpose to simplify and streamline the development of Java database applications by leveraging the Java Stream API.

Speedment is licensed under the business-friendly Apache 2 license. Contribution from users is encouraged. Please feel free to request new features, suggest improvements and file bug reports. Read more about contributing here.

Spire the Hare

Quick Start

Assuming you have Maven installed and a relational database available, you can start using Speedment in a minute:

Expressing SQL as Java Streams

There is a remarkable resemblance between Java streams and SQL as summarized in the simplified table. This means there is no need for manually writing SQL-queries any more. You can remain in a pure Java world!

Streams to SQL

Example

Search in a film database for a film with a length greater than 120 minutes:

// Searches are optimized in the background!
Optional<Film> longFilm = films.stream()
    .filter(Film.LENGTH.greaterThan(120))
    .findAny();

Results in the following SQL query:

SELECT 
    `film_id`,`title`,`description`,`release_year`,
    `language_id`,`original_language_id`,`rental_duration`,`rental_rate`,
    `length`,`replacement_cost`,`rating`,`special_features`,
    `last_update` 
FROM 
     `sakila`.`film
WHERE
    (`length` > 120)

Features

Speedment is equipped with the features listed below and more.

View Database Tables as Standard Java Streams

Stream API

  • Pure Java - Stream API instead of SQL eliminates the need of a query language
  • Dynamic Joins - Ability to perform joins as Java streams on the application side
  • Parallel Streams - Workload can automatically be divided over several threads

Short and Concise Type Safe Code

Type Safety

  • Code Generation - Automatic Java representation of the latest state of your database eliminates boilerplate code and the need of manually writing Java Entity classes while minimizing the risk for bugs.
  • Null Protection - Minimizes the risk involved with database null values by wrapping to Java Optionals
  • Enum Integration - Mapping of String columns to Java Enums increases memory efficiency and type safety

Lazy Evaluation

Lazy Evaluation for Increased Performance

  • Streams are Lazy - Content from the database is pulled as elements are needed and consumed
  • Pipeline Introspection - Optimized performance by short circuiting of stream operations

Tutorials

The tutorials are divided into three sections. The basics are covered in the first section without any expected prior knowledge of Speedment. This builds a foundation of knowledge needed to fully benefit from the following tutorials.

Basics

Sample applications

Extending Speedment

Resources

  • Documentation - Read the Speedment User Guide.
  • JavaDocs - Latest Speedment JavaDocs.
  • Examples - There are 15 detailed examples here and more can be found in the User Guide provided above.
  • Gitter Chatroom - Reach out to the Speedment developers and other community members via the Gitter chatroom.
  • Creating a Pull Request - Pull requests and improvement suggestions from the community are gladly accepted. Find more information here.

Requirements

Java Version

Speedment requires Java 8 or later. Make sure your IDE is configured to use JDK 8 (version 1.8.0_40 or newer).

Database Connectors

Speedment Open Source comes with support for the following databases out-of-the-box:

  • MySQL
  • MariaDB
  • PostgreSQL
  • SQLite

Enterprise database connectors include:

  • AS400
  • Cassandra
  • DB2
  • Informix
  • Oracle
  • Snowflake
  • SQL Server

For more information, see Speedment Licensing and Pricing.

Licenses

  • Speedment Open Source - This site covers the Speedment Open Source project available under the Apache 2 license.
  • Speedment Stream - The same great features as Speedment OSS with support for commercial databases. Learn more at speedment.com/stream.
  • Speedment HyperStream - An extension av Speedment Stream which also includes hypersonic query performance enabled by a unique in-JVM-memory management model. Learn more at speedment.com/hyperStream.

Copyright

Copyright (c) 2014-2019, Speedment, Inc. All Rights Reserved. Visit www.speedment.com for more info.

Analytics

Github activity visualized

Comments
  • No TypeSerializer found for the specified column

    No TypeSerializer found for the specified column

    Adding a custom TypeMapper results in runtime exception at code generation.

    I've tried both, adding the TypeMapper as a component, and directly to the typeMappers section of the pom file. I can confirm that the TypeMapper is in the class path it's available under the TypeMapperComponent in the GUI.

    This is the TypeMapper in question:

    public class Vector2Mapper implements TypeMapper<String, Vector2> {
        public String getLabel() {
            return "String to Vector2";
        }
    
        public Type getJavaType(Column column) {
            return Vector2.class;
        }
    
        public Category getJavaTypeCategory(Column column) {
            return Category.REFERENCE;
        }
    
        public Vector2 toJavaType(Column column, Class<?> entityType, String value) {
            if (value == null) {
                return null;
            }
    
            return new Vector2(value);
        }
    
        public String toDatabaseType(Vector2 value) {
            if (value == null) {
                return null;
            }
    
            return value.toString();
        }
    
        public Ordering getOrdering() {
            return Ordering.RETAIN;
        }
    }
    

    This is my pom file:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.example</groupId>
        <artifactId>demo</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <packaging>pom</packaging>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.10</maven.compiler.source>
            <maven.compiler.target>1.10</maven.compiler.target>
            <speedment.enterprise.version>1.1.17</speedment.enterprise.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.mariadb.jdbc</groupId>
                <artifactId>mariadb-java-client</artifactId>
                <version>2.2.1</version>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>com.speedment.enterprise</groupId>
                <artifactId>virtualcolumn-runtime</artifactId>
                <version>${speedment.enterprise.version}</version>
            </dependency>
            <dependency>
                <groupId>com.speedment.enterprise</groupId>
                <artifactId>datastore-runtime</artifactId>
                <version>${speedment.enterprise.version}</version>
            </dependency>
            <dependency>
                <groupId>com.speedment</groupId>
                <artifactId>runtime</artifactId>
                <version>3.0.22</version>
                <type>pom</type>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>com.speedment.enterprise</groupId>
                    <artifactId>speedment-enterprise-maven-plugin</artifactId>
                    <version>${speedment.enterprise.version}</version>
    
                    <configuration>
                        <typeMappers>
                            <typeMapper>
                                <databaseType>java.lang.String</databaseType>
                                <implementation>com.manulaiko.kalaazu.persistence.database.Vector2Mapper</implementation>
                            </typeMapper>
                        </typeMappers>
                        <components>
                            <component>com.speedment.enterprise.virtualcolumn.tool.VirtualColumnToolBundle</component>
                            <component>com.speedment.enterprise.datastore.tool.DataStoreToolBundle</component>
                        </components>
                        <parameters>
                            <parameter>
                                <name>licenseKey</name>
                                <value>omited</value>
                            </parameter>
                        </parameters>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
        <repositories>
            <repository>
                <id>speedment-enterprise</id>
                <name>Speedment Enterprise Repositories</name>
                <url>https://repo.speedment.com/nexus/content/repositories/releases/</url>
            </repository>
        </repositories>
    
        <pluginRepositories>
            <pluginRepository>
                <id>speedment-enterprise</id>
                <name>Speedment Enterprise Repositories</name>
                <url>https://repo.speedment.com/nexus/content/repositories/releases/</url>
            </pluginRepository>
        </pluginRepositories>
    </project>
    

    This is the output of speedment:generate:

    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building demo 1.0.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO] 
    [INFO] --- speedment-enterprise-maven-plugin:1.1.17:generate (default-cli) @ demo ---
    MavenProject: com.example:demo:1.0.0-SNAPSHOT @ /home/manulaiko/Programming/Java/b/pom.xml
    MavenProject: com.example:demo:1.0.0-SNAPSHOT @ /home/manulaiko/Programming/Java/b/pom.xml
    MavenProject: com.example:demo:1.0.0-SNAPSHOT @ /home/manulaiko/Programming/Java/b/pom.xml
    2018-04-23T19:57:48.246873Z INFO  [main] (LICENSE) - License: 99c7c95aeeb28e8f for [datastore, db2, mssql, oracle, virtual-columns], valid 2018-04-23 to 2018-05-23
    2018-04-23T19:57:48.425323Z INFO  [main] (c.s.c.i.i.InjectorBuilderImpl) - No configuration file '/home/manulaiko/Programming/Java/b/settings.properties' found.
    2018-04-23T19:57:51.174836Z INFO  [main] (LICENSE) - License: 99c7c95aeeb28e8f for [datastore, db2, mssql, oracle, virtual-columns], valid 2018-04-23 to 2018-05-23
    [INFO] Starting speedment:generate
    MavenProject: com.example:demo:1.0.0-SNAPSHOT @ /home/manulaiko/Programming/Java/b/pom.xml
    [INFO] Generating code using JSON configuration file: '/home/manulaiko/Programming/Java/b/src/main/json/speedment.json'.
    MavenProject: com.example:demo:1.0.0-SNAPSHOT @ /home/manulaiko/Programming/Java/b/pom.xml
    Generating code:
    ....................................................................................
    Clearing existing files
    Checking write-once classes:
    ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
    Writing write-always classes:
    2018-04-23T19:58:05.648823Z ERROR [main] (c.s.m.a.AbstractGenerateMojo) - Error parsing configFile file.
    java.lang.RuntimeException: No TypeSerializer found for the specified column 'ColumnImpl {"autoIncrement": false, "biDirectional": false, "databaseType": "java.lang.String", "enabled": true, "expanded": true, "id": "position", "lowCardinality": false, "name": "position", "nameProtected": true, "nullable": false, "nullableImplementation": "OPTIONAL", "ordinalPosition": 5, "typeMapper": "com.manulaiko.kalaazu.persistence.database.Vector2Mapper", "unindexed": false}' table 'accounts_ships'.
    	at com.speedment.enterprise.datastore.generator.component.TypeSerializerComponent.lambda$getOrThrow$0(TypeSerializerComponent.java:49)
    	at java.base/java.util.Optional.orElseThrow(Optional.java:397)
    	at com.speedment.enterprise.datastore.generator.component.TypeSerializerComponent.getOrThrow(TypeSerializerComponent.java:47)
    	at com.speedment.common.mapstream.MapStream.lambda$fromValues$1(MapStream.java:147)
    	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
    	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    	at java.base/java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
    	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
    	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
    	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
    	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
    	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
    	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    	at java.base/java.util.stream.ReferencePipeline.allMatch(ReferencePipeline.java:533)
    	at com.speedment.enterprise.datastore.generator.internal.code.GeneratedEntityStoreSerializerTranslator.lambda$makeCodeGenModel$19(GeneratedEntityStoreSerializerTranslator.java:112)
    	at com.speedment.generator.translator.AbstractJavaClassTranslator$BuilderImpl.lambda$wrap$0(AbstractJavaClassTranslator.java:264)
    	at com.speedment.generator.translator.AbstractJavaClassTranslator$BuilderImpl.lambda$act$2(AbstractJavaClassTranslator.java:286)
    	at java.base/java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:804)
    	at com.speedment.generator.translator.AbstractJavaClassTranslator$BuilderImpl.act(AbstractJavaClassTranslator.java:285)
    	at com.speedment.generator.translator.AbstractJavaClassTranslator$BuilderImpl.lambda$build$6(AbstractJavaClassTranslator.java:302)
    	at java.base/java.util.Optional.ifPresent(Optional.java:172)
    	at com.speedment.generator.translator.AbstractJavaClassTranslator$BuilderImpl.build(AbstractJavaClassTranslator.java:302)
    	at com.speedment.generator.translator.AbstractJavaClassTranslator$BuilderImpl.build(AbstractJavaClassTranslator.java:192)
    	at com.speedment.enterprise.datastore.generator.internal.code.GeneratedEntityStoreSerializerTranslator.makeCodeGenModel(GeneratedEntityStoreSerializerTranslator.java:474)
    	at com.speedment.enterprise.datastore.generator.internal.code.GeneratedEntityStoreSerializerTranslator.makeCodeGenModel(GeneratedEntityStoreSerializerTranslator.java:63)
    	at com.speedment.generator.translator.AbstractJavaClassTranslator.get(AbstractJavaClassTranslator.java:144)
    	at com.speedment.generator.translator.AbstractJavaClassTranslator.get(AbstractJavaClassTranslator.java:62)
    	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1492)
    	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
    	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
    	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
    	at com.speedment.generator.core.internal.translator.TranslatorManagerHelper.accept(TranslatorManagerHelper.java:142)
    	at com.speedment.generator.core.translator.AbstractTranslatorManager.accept(AbstractTranslatorManager.java:54)
    	at com.speedment.enterprise.virtualcolumn.generator.internal.VirtualColumnTranslatorManager.accept(VirtualColumnTranslatorManager.java:53)
    	at com.speedment.maven.abstractmojo.AbstractGenerateMojo.execute(AbstractGenerateMojo.java:68)
    	at com.speedment.maven.abstractmojo.AbstractSpeedmentMojo.execute(AbstractSpeedmentMojo.java:123)
    	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
    	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
    	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
    	at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
    	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
    	at org.codehaus.classworlds.Launcher.main(Launcher.java:47)
    
    [ERROR] Error parsing configFile file.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 24.132 s
    [INFO] Finished at: 2018-04-23T21:58:05+02:00
    [INFO] Final Memory: 18M/64M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal com.speedment.enterprise:speedment-enterprise-maven-plugin:1.1.17:generate (default-cli) on project demo: Error parsing configFile file. No TypeSerializer found for the specified column 'ColumnImpl {"autoIncrement": false, "biDirectional": false, "databaseType": "java.lang.String", "enabled": true, "expanded": true, "id": "position", "lowCardinality": false, "name": "position", "nameProtected": true, "nullable": false, "nullableImplementation": "OPTIONAL", "ordinalPosition": 5, "typeMapper": "com.manulaiko.kalaazu.persistence.database.Vector2Mapper", "unindexed": false}' table 'accounts_ships'. -> [Help 1]
    [ERROR] 
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR] 
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
    

    I've tried with different versions of the plugins since the generated pom file in the website seems outdated.

    I'm running Java 10 and the error persists with JDK 8.

    bug question 
    opened by manulaiko 22
  • Couldn't find any installed JDBC drivers

    Couldn't find any installed JDBC drivers

    Hi there,

    I started a new project with Speedment 3.1.2 community edition, when I executed speedment:tool , an alert showed - "Couldn't find any installed JDBC drivers". When I changed to 3.1.1 , it worked. Below is my pom.

    4.0.0

    <groupId>tc.edu</groupId>
    <artifactId>readingdb</artifactId>
    <version>0.0.1</version>
    <build>
        <resources>
            <resource>
                <filtering>false</filtering>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                <filtering>false</filtering>
                <directory>src/main/java</directory>
                <includes>
                    <include>**</include>
                </includes>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <filtering>false</filtering>
                <directory>src/test/resources</directory>
            </testResource>
            <testResource>
                <filtering>false</filtering>
                <directory>src/test/java</directory>
                <includes>
                    <include>**</include>
                </includes>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </testResource>
        </testResources>
    
        <plugins>
            <plugin>
                <inherited>true</inherited>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <showWarnings>true</showWarnings>
                    <showDeprecation>true</showDeprecation>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>NewMain</mainClass>
                            <classpathPrefix>libs/</classpathPrefix>
                        </manifest>
    
                    </archive>
                </configuration>
            </plugin>
    
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.10</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <id>copy-dependencies</id>
                        <configuration>
                            <outputDirectory>${project.build.directory}/libs</outputDirectory>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>false</overWriteSnapshots>
                            <overWriteIfNewer>true</overWriteIfNewer>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>com.speedment</groupId>
                <artifactId>speedment-maven-plugin</artifactId>
                <version>${speedment.version}</version>
    
                <dependencies>
                    <dependency>
                        <groupId>org.mariadb.jdbc</groupId>
                        <artifactId>mariadb-java-client</artifactId>
                        <version>${mariadb.version}</version>
                        <scope>runtime</scope>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <!-- LOGGING DEPENDENCIES - LOG4J -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <!--  JUNIT DEPENDENCY FOR TESTING -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson.version}</version>
        </dependency>
    
        <dependency>
            <groupId>com.speedment</groupId>
            <artifactId>runtime</artifactId>
            <version>${speedment.version}</version>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>org.mariadb.jdbc</groupId>
            <artifactId>mariadb-java-client</artifactId>
            <version>${mariadb.version}</version>
        </dependency>
    </dependencies>
    
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <slf4j.version>1.7.25</slf4j.version>
        <junit.version>4.12</junit.version>
        <log4j.version>2.7</log4j.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <jackson.version>2.9.5</jackson.version>
        <speedment.version>3.1.2</speedment.version>
        <mariadb.version>2.2.3</mariadb.version>
    </properties>
    
    <repositories>
        <repository>
            <id>Apache Nexus</id>
            <url>https://repository.apache.org/content/repositories/snapshots/</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    
    </repositories>
    
    bug fixed 
    opened by Shengche 14
  • Current position is before the first row

    Current position is before the first row

    Hey! I recently tried to upgrade from 3.0.2 to 3.0.5 and without changing some other code i get this Exception thrown: java.sql.SQLDataException: Current position is before the first row

    This is the line producing the Exception

    return users().stream().filter(User.TOKEN.equal(token)).findAny().orElse(null);
    

    Weirdly enough: The server works fine but prints this exception all the time! Am i doing something wrong here?

    Thanks in advance :)

    bug fixed 
    opened by fablue 14
  • Remove rows not working

    Remove rows not working

    I have three tables with many to many relations, when I try to remove rows, it doesn't work. Below is logs:

    the upper line could find correct row, and second tried to remove row with changed value and did not remove correctly.

    2018-03-03 18:18:01,663 INFO [stdout] (default task-31) 2018-03-03T18:18:01.662Z DEBUG [default task-31] (#STREAM) - SELECT userid,roletype FROM videoconferencing.Roles WHERE ((videoconferencing.Roles.userid = ?) AND (videoconferencing.Roles.roletype = ?)), values:[1, 8] 2018-03-03 18:18:01,673 INFO [stdout] (default task-31) 2018-03-03T18:18:01.673Z DEBUG [default task-31] (#REMOVE) - DELETE FROM videoconferencing.Roles WHERE userid = ? AND roletype = ?, values:[8, 1]

    bug 
    opened by Shengche 13
  • COLLATION 'utf8_bin' is not valid for CHARACTER SET 'utf8mb4'

    COLLATION 'utf8_bin' is not valid for CHARACTER SET 'utf8mb4'

    Getting the title error on my linux machine. Works great with the windows test-server on the same database (cloned) and the same code.

    I am using utf8mb4_general_ci as standard collation, but utf8mb4_bin at column "token". I think the part (`lime`.`user`.`token` = ? COLLATE utf8_bin) should use utf8mb4_bin instead? Interestingly enough: It does not help when I convert the column token to utf8_bin!

    Stacktrace

    2017-06-08T18:10:42.336Z INFO  [http-nio-8080-exec-1] (#APPLICATION_BUILDER) - Speedment (Open Source) version 3.0.10 by Speedment, Inc. Specification version 3.0
    2017-06-08T18:10:42.336Z INFO  [http-nio-8080-exec-1] (#APPLICATION_BUILDER) - Java Platform API Specification 1.8 by Oracle Corporation. Implementation N/A 1.8.0_131 by N/A
    2017-06-08T18:10:42.655Z INFO  [http-nio-8080-exec-1] (#APPLICATION_BUILDER) - MySQL, 10.0.29-MariaDB-0ubuntu0.16.10.1, MariaDB connector/J 2.0.2, JDBC version 4.2
    2017-06-08T18:10:42.852Z ERROR [http-nio-8080-exec-3] (c.s.r.c.i.d.AsynchronousQueryResultImpl) - Error executing SELECT `id`,`token`,`firebase`,`initial`,`timestamp_location`,`distance`,`longitude`,`latitude` FROM `lime`.`user` WHERE (`lime`.`user`.`token`  = ? COLLATE utf8_bin), values=[sometoken]
    java.sql.SQLSyntaxErrorException: (conn:18774) COLLATION 'utf8_bin' is not valid for CHARACTER SET 'utf8mb4'
    	at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:158)
    	at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:118)
    	at org.mariadb.jdbc.MariaDbStatement.executeExceptionEpilogue(MariaDbStatement.java:245)
    	at org.mariadb.jdbc.MariaDbPreparedStatementClient.executeInternal(MariaDbPreparedStatementClient.java:218)
    	at org.mariadb.jdbc.MariaDbPreparedStatementClient.execute(MariaDbPreparedStatementClient.java:153)
    	at org.mariadb.jdbc.MariaDbPreparedStatementClient.executeQuery(MariaDbPreparedStatementClient.java:167)
    	at com.speedment.runtime.core.internal.db.AsynchronousQueryResultImpl.stream(AsynchronousQueryResultImpl.java:95)
    	at com.speedment.runtime.core.internal.component.sql.SqlStreamSupplierImpl.lambda$stream$6(SqlStreamSupplierImpl.java:184)
    	at com.speedment.runtime.core.internal.stream.builder.pipeline.PipelineImpl.getStream(PipelineImpl.java:85)
    	at com.speedment.runtime.core.internal.stream.builder.pipeline.PipelineImpl.getAsReferenceStream(PipelineImpl.java:63)
    	at com.speedment.runtime.core.internal.component.sql.override.def.reference.DefaultFindAnyTerminator.apply(DefaultFindAnyTerminator.java:45)
    	at com.speedment.runtime.core.internal.manager.sql.SqlStreamTerminator.findAny(SqlStreamTerminator.java:176)
    	at com.speedment.runtime.core.internal.stream.builder.ReferenceStreamBuilder.lambda$findAny$16(ReferenceStreamBuilder.java:406)
    	at com.speedment.runtime.core.internal.stream.builder.AbstractStreamBuilder.finallyCloseReference(AbstractStreamBuilder.java:189)
    	at com.speedment.runtime.core.internal.stream.builder.ReferenceStreamBuilder.findAny(ReferenceStreamBuilder.java:406)
    

    Database

    image

    image

    bug fixed 
    opened by fablue 13
  • Refactoring to specialised functional interfaces

    Refactoring to specialised functional interfaces

    Hello, I am a Graduate Student at Oregon State University, studying the impact of autoboxing. I am testing a tool, which analyses the source code to find opportunities to refactor the code to a specialised implementation for primitives, thus eliminating autoboxing. All the changes, have been done manually, and have been verified by me. I have many more such patches, I will be happy to contribute.

    opened by ameyaKetkar 12
  • Add TypeMapper from Integer types to Boolean

    Add TypeMapper from Integer types to Boolean

    It would be good if you could map from integer types like INT and TINYINT to boolean using a default type mapper. They shouldn't be very difficult to create and it is therefore a good issue if any first-time committer wants to start constributing to the project.

    enhancement help wanted verify fixed 
    opened by Pyknic 12
  • Semantic join produce empty result if comparing uuid inside where clause

    Semantic join produce empty result if comparing uuid inside where clause

    Hi speedment team. I'm getting empty result when executing this code:

    List<InstallmentPurchasePayment> result = orm.getOrThrow(JoinComponent.class)
        .from(InstallmentPurchaseManager.IDENTIFIER)
        .where(InstallmentPurchase.BUYER_ID.equal(userId))
        .innerJoinOn(InstallmentPurchasePayment.INSTALLMENT_PURCHASE_ID)
        .equal(InstallmentPurchase.ID)
        .build(Tuples::of)
        .stream()
        .map(Tuple2::get1)
        .collect(Collectors.toList());
    

    But when using ordinary filter method:

    List<InstallmentPurchasePayment> result = orm.getOrThrow(JoinComponent.class)
        .from(InstallmentPurchaseManager.IDENTIFIER)
        .innerJoinOn(InstallmentPurchasePayment.INSTALLMENT_PURCHASE_ID)
        .equal(InstallmentPurchase.ID)
        .build(Tuples::of)
        .stream()
        .filter(e -> e.get0().getBuyerId().equals(userId))
        .map(Tuple2::get1)
        .collect(Collectors.toList());
    

    The result will be normal. This only happen when comparing UUID field with another UUID object in where clause (in this case BUYER_ID and userId). Other data type producing normal result. Thanks

    speedment.zip

    bug 
    opened by ridwanadhip 10
  • How to deal with crowded tables (a.k.a actual tables on production systems)

    How to deal with crowded tables (a.k.a actual tables on production systems)

    This touches #400 #389 #413.

    As far as I understand it there is currently no support in Speedment for:

    • LIMITing the result set size by the dbms. It is always done in-memory by the JVM.
    • WHERE clauses containing OR linked expressions. They will also always be done in-memory.
    • skipping (OFFSET) rows via SQL when using the workaround for OR queries described here: https://speedment.github.io/speedment-doc/predicate.html#or

    Now I've got an actual table currently containing 672807 rows. And I want to offer paging for its data grid on some frontend. I also want to offer a simple search capability where one entered term targets two OR linked fields in the table. I'm sure this has been done before.

    With the current state of affairs in Speedment trying to implement this will:

    1. when no search term was given:
    • always fetch the whole table into JVM memory, then skip, then limit
    1. when any search term was given:
    • execute two queries, one for each term, then fully fetch both results
    • compose both result sets using technique described here: https://speedment.github.io/speedment-doc/predicate.html#or
    • again on the JVM side skip, then limit.

    This is so utterly inefficient and slow that I cannot imagine I'm using Speedment (3.0.6) correctly. But OTOH I take my guidelines from here: https://speedment.github.io/speedment-doc

    Some examples:

    dataManager.stream()
      .sorted(...)                                     << performed by DBMS via SQL
      .skip(10L)                                     << performed by DBMS via SQL
      .limit(10L)                                     << performed by Java 
      .collect(Collectors.toList())
    

    Runtimes Plain SQL: 34ms Speedment: ~6s

    dataManager.stream()
      .filter(predicate1.or(predicate2))  << performed in-memory by Java
      .skip(10L)                                      << performed in-memory by Java
      .limit(10L)                                     << performed in-memory by Java 
      .collect(Collectors.toList())
    

    Runtimes Plain SQL: 34ms Speedment: ~8s

    StreamComposition.concatAndAutoClose(
      dataManager.stream().filter(predicate1),   << fully fetched, probably never reaches heap though
      dataManager.stream().filter(predicate2)    << fully fetched, probably never reaches heap though
    )
    .distinct()                                      << performed in-memory by Java 
    .skip(offset)                                  << performed in-memory by Java 
    .limit(pageSize)                            << performed in-memory by Java 
    .collect(Collectors.toList());
    

    Runtimes Plain SQL: 34ms Speedment: ~8s

    We're not using Speedment in production yet. But if this turns out to be true I don't think we can.

    bug 
    opened by paxbit 8
  • java.lang.UnsupportedOperationException

    java.lang.UnsupportedOperationException

    I am getting

    java.lang.UnsupportedOperationException

    When I try to generate code from postgres 10

    Full stack trace

    java.lang.UnsupportedOperationException at java.util.Collections$UnmodifiableMap.put(Collections.java:1457) at com.speedment.generator.standard.lifecycle.GeneratedMetadataTranslator.makeCodeGenModel(GeneratedMetadataTranslator.java:78) at com.speedment.generator.standard.lifecycle.GeneratedMetadataTranslator.makeCodeGenModel(GeneratedMetadataTranslator.java:46) at com.speedment.generator.translator.AbstractJavaClassTranslator.get(AbstractJavaClassTranslator.java:144) at com.speedment.generator.translator.AbstractJavaClassTranslator.get(AbstractJavaClassTranslator.java:62) at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) at com.speedment.generator.core.internal.translator.TranslatorManagerHelper.accept(TranslatorManagerHelper.java:142) at com.speedment.generator.core.internal.translator.DefaultTranslatorManager.accept(DefaultTranslatorManager.java:58) at com.speedment.tool.core.internal.util.ConfigFileHelper.generateSources(ConfigFileHelper.java:416) at com.speedment.tool.core.internal.component.UserInterfaceComponentImpl.lambda$generate$10(UserInterfaceComponentImpl.java:358) at java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:822) at java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:797) at java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:443) at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

    bug fixed 
    opened by muhdkhokhar 7
  • Compability issue with later versions of MySQL connector

    Compability issue with later versions of MySQL connector

    There appears to be compability issues that prevent you from using Speedment togather with newer version of the MySQL driver. If you try to upgrade to 6.x.x, you get a NullPointerException.

    The bug occurs when Speedment attempts to connect to the database using the connection string seen in the trace bellow.

    Version used:

    • MySQL Driver 6.0.2
    • MySQL 5.6.29
    • Speedment 2.3.1
    java.util.concurrent.CompletionException: com.speedment.exception.SpeedmentException: Unable to get connection for DbmsImpl {"expanded": true, "port": 3306.0, "schemas": [0], "name": database, "typeName": MySQL, "ipAddress": 127.0.0.1, "connectionUrl": jdbc:mysql://127.0.0.1:3306/?useUnicode=true&characterEncoding=UTF-8&useServerPrepStmts=true&useCursorFetch=true&zeroDateTimeBehavior=convertToNull&useSSL=false, "enabled": true, "username": accounting} using url "jdbc:mysql://127.0.0.1:3306/?useUnicode=true&characterEncoding=UTF-8&useServerPrepStmts=true&useCursorFetch=true&zeroDateTimeBehavior=convertToNull&useSSL=false", user = accounting, password = ********
        at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273)
        at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280)
        at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1629)
        at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1618)
        at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
        at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
        at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
        at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
    Caused by: com.speedment.exception.SpeedmentException: Unable to get connection for DbmsImpl {"expanded": true, "port": 3306.0, "schemas": [0], "name": database, "typeName": MySQL, "ipAddress": 127.0.0.1, "connectionUrl": jdbc:mysql://127.0.0.1:3306/?useUnicode=true&characterEncoding=UTF-8&useServerPrepStmts=true&useCursorFetch=true&zeroDateTimeBehavior=convertToNull&useSSL=false, "enabled": true, "username": accounting} using url "jdbc:mysql://127.0.0.1:3306/?useUnicode=true&characterEncoding=UTF-8&useServerPrepStmts=true&useCursorFetch=true&zeroDateTimeBehavior=convertToNull&useSSL=false", user = accounting, password = ********
        at com.speedment.internal.core.db.AbstractRelationalDbmsHandler.getConnection(AbstractRelationalDbmsHandler.java:921)
        at com.speedment.internal.core.db.AbstractRelationalDbmsHandler.lambda$readSchemaMetadata$4(AbstractRelationalDbmsHandler.java:179)
        at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1626)
        ... 5 more
    Caused by: java.sql.SQLNonTransientConnectionException: Could not create connection to database server.
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:676)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:663)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:653)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:638)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:606)
        at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:1857)
        at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1673)
        at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:656)
        at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:349)
        at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:221)
        at java.sql.DriverManager.getConnection(DriverManager.java:664)
        at java.sql.DriverManager.getConnection(DriverManager.java:247)
        at com.speedment.internal.core.platform.component.impl.ConnectionPoolComponentImpl.newConnection(ConnectionPoolComponentImpl.java:111)
        at com.speedment.internal.core.platform.component.impl.ConnectionPoolComponentImpl.getConnection(ConnectionPoolComponentImpl.java:81)
        at com.speedment.internal.core.db.AbstractRelationalDbmsHandler.getConnection(AbstractRelationalDbmsHandler.java:913)
        ... 7 more
    Caused by: java.lang.NullPointerException
        at java.util.Properties$LineReader.readLine(Properties.java:434)
        at java.util.Properties.load0(Properties.java:353)
        at java.util.Properties.load(Properties.java:341)
        at com.mysql.cj.jdbc.util.TimeUtil.loadTimeZoneMappings(TimeUtil.java:163)
        at com.mysql.cj.jdbc.util.TimeUtil.getCanonicalTimezone(TimeUtil.java:109)
        at com.mysql.cj.mysqla.MysqlaSession.configureTimezone(MysqlaSession.java:308)
        at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:2474)
        at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:1817)
        ... 16 more
    
    bug fixed 
    opened by Pyknic 7
  • Bump actions/checkout from 2.4.0 to 3.2.0

    Bump actions/checkout from 2.4.0 to 3.2.0

    Bumps actions/checkout from 2.4.0 to 3.2.0.

    Release notes

    Sourced from actions/checkout's releases.

    v3.2.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/actions/checkout/compare/v3...v3.2.0

    v3.1.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/actions/checkout/compare/v3.0.2...v3.1.0

    v3.0.2

    What's Changed

    Full Changelog: https://github.com/actions/checkout/compare/v3...v3.0.2

    v3.0.1

    v3.0.0

    • Updated to the node16 runtime by default
      • This requires a minimum Actions Runner version of v2.285.0 to run, which is by default available in GHES 3.4 or later.

    v2.5.0

    What's Changed

    Full Changelog: https://github.com/actions/checkout/compare/v2...v2.5.0

    ... (truncated)

    Changelog

    Sourced from actions/checkout's changelog.

    Changelog

    v3.1.0

    v3.0.2

    v3.0.1

    v3.0.0

    v2.3.1

    v2.3.0

    v2.2.0

    v2.1.1

    • Changes to support GHES (here and here)

    v2.1.0

    v2.0.0

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • Bump maven-install-plugin from 2.5.2 to 3.1.0

    Bump maven-install-plugin from 2.5.2 to 3.1.0

    Bumps maven-install-plugin from 2.5.2 to 3.1.0.

    Release notes

    Sourced from maven-install-plugin's releases.

    3.1.0

    Bug

    • [MINSTALL-179] - installAtEnd when module does not use m-install-p

    Improvement

    • [MINSTALL-183] - Don't use metadata from main artifact to fetch pom.xml
    • [MINSTALL-185] - Install all artifacts in one request

    Task

    Dependency upgrade

    3.0.1

    What's Changed

    Full Changelog: https://github.com/apache/maven-install-plugin/compare/maven-install-plugin-3.0.0...maven-install-plugin-3.0.1

    3.0.0

    What's Changed

    New Contributors

    ... (truncated)

    Commits
    • 4a985dc [maven-release-plugin] prepare release maven-install-plugin-3.1.0
    • b8635ab Remove broken link to Release Info example
    • ce0666e [MINSTALL-184] Cleanup IT tests
    • f5980b0 [MINSTALL-185] Install all artifacts in one request
    • 569b31a [MINSTALL-183] Don't use metadata from main artifact to fetch pom.xml
    • c172567 add Reproducible Builds badge
    • 2d1b71c Bump mockito-core from 2.28.2 to 4.8.1
    • f71f946 Update download page
    • b5fbd23 [MINSTALL-179] Fix installAtEnd when module does not use m-install-p
    • 18052b3 [MINSTALL-181] Require Java 8
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 0
  • Bump actions/setup-java from 1 to 3.5.1

    Bump actions/setup-java from 1 to 3.5.1

    Bumps actions/setup-java from 1 to 3.5.1.

    Release notes

    Sourced from actions/setup-java's releases.

    v3.5.1

    In scope of this release we change logic for Microsoft Build of OpenJDK. Previously it had hard coded versions. In this release versions were moved to the separate json file. When a new version of Java is released, it can be added to this file and be used without releasing new version of the action.

    v3.5.0

    Add support for multiple jdks

    In scope of this release we add support for multiple jdks. Customers can specify multiple versions of java through java-version input.

        steps:
          - uses: actions/setup-java@v3
            with:
              distribution: '<distribution>'
              java-version: |
                8
                11
                15
    

    Besides, we added such changes as:

    v3.4.1

    In scope of this release we updated actions/cache package as the new version contains fixes for caching error handling.

    v3.4.0

    In scope of this release we introduce such changes as:

    v3.3.0

    In scope of this pull request we add support for Amazon Corretto Build of OpenJDK (actions/setup-java#312).

    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: Setup-java
        uses: actions/setup-java@v3
        with:
          distribution: corretto
          java-version: 11
    

    Supported distributions

    Currently, the following distributions are supported:

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • Statistics reporter is using the fork-join pool for jobs

    Statistics reporter is using the fork-join pool for jobs

    A customer reports that the statistics reporter is using the fork-join pool and if/when the endpoint service.speedment.com is slow, this job may block the pool.

    Reporting should be done in a separate thread.

    bug 
    opened by minborg 0
  • Bump maven-deploy-plugin from 2.8.2 to 3.0.0

    Bump maven-deploy-plugin from 2.8.2 to 3.0.0

    Bumps maven-deploy-plugin from 2.8.2 to 3.0.0.

    Release notes

    Sourced from maven-deploy-plugin's releases.

    3.0.0-M2

    What's Changed

    New Contributors

    Full Changelog: https://github.com/apache/maven-deploy-plugin/commits/maven-deploy-plugin-3.0.0-M2

    Commits
    • b905235 [maven-release-plugin] prepare release maven-deploy-plugin-3.0.0
    • 16541da [MDEPLOY-296] Streamline plugin (#26)
    • 89c28fb [MDEPLOY-193] Deploy At End feature (no extension) (#20)
    • dd39f5d (doc) Update Fluido Skin to 1.10.0
    • d4bdd05 (doc) drop obsolete Google tracking code
    • 6eb066e [MDEPLOY-291] Update POM parent and Maven (#22)
    • 36a2030 Use Shared GitHub Actions
    • 9929303 [maven-release-plugin] prepare for next development iteration
    • d4a468d [maven-release-plugin] prepare release maven-deploy-plugin-3.0.0-M2
    • f1b3241 Minor improvement to English grammar in usage doc
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 0
  • Bump mockito.version from 3.5.15 to 4.6.1

    Bump mockito.version from 3.5.15 to 4.6.1

    Bumps mockito.version from 3.5.15 to 4.6.1. Updates mockito-core from 3.5.15 to 4.6.1

    Release notes

    Sourced from mockito-core's releases.

    v4.6.1

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.6.1

    v4.6.0

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.6.0

    v4.5.1

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.5.1

    Missing net.bytebuddy.utility.GraalImageCode exception

    If you encounter any issues with missing ByteBuddy classes, make sure you are using ByteBuddy 1.12 or higher.

    v4.5.0

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.5.0

    ... (truncated)

    Commits

    Updates mockito-inline from 3.5.15 to 4.6.1

    Release notes

    Sourced from mockito-inline's releases.

    v4.6.1

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.6.1

    v4.6.0

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.6.0

    v4.5.1

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.5.1

    Missing net.bytebuddy.utility.GraalImageCode exception

    If you encounter any issues with missing ByteBuddy classes, make sure you are using ByteBuddy 1.12 or higher.

    v4.5.0

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.5.0

    ... (truncated)

    Commits

    Updates mockito-junit-jupiter from 3.5.15 to 4.6.1

    Release notes

    Sourced from mockito-junit-jupiter's releases.

    v4.6.1

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.6.1

    v4.6.0

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.6.0

    v4.5.1

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.5.1

    Missing net.bytebuddy.utility.GraalImageCode exception

    If you encounter any issues with missing ByteBuddy classes, make sure you are using ByteBuddy 1.12 or higher.

    v4.5.0

    Changelog generated by Shipkit Changelog Gradle Plugin

    4.5.0

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 0
Releases(3.2.10)
  • 3.2.10(Aug 28, 2020)

    • [bug] codegen: AutoImports distorts rendering of parameterized field types when there are colliding SimpleNames #871
    • [closed] Speedment generator files missing #869
    • [bug] singletonstream: parallel and onClose return a new Stream #851
    • [bug] singletonstream: Streams does not protect from invoking several times #850
    • [bug] Loading class `com.mysql.jdbc.Driver'. This is deprecated. #830
    • [bug] Can't extract module name from runtime-3.2.0-SNAPSHOT.pom: #801
    • [question] Unable to generate a license file #762
    • [enhancement] Tag SQL with trace data #718
    • [enhancement][wontfix][**z-generation**] Refactor Translator to not have to inherit from AbstractJavaClassTranslator #347
    • [enhancement][**z-connector**] Restructure runtime-core to avoid inheritance #317
    • [enhancement][wontfix][**z-api**] Generate copy constructor in entities #311
    • [enhancement][wontfix][**z-connector**] Support for H2 #292
    • [enhancement][wontfix][**z-persistence**] Support for optimistic locking #264
    • [enhancement][wontfix][**z-connector**] Extract information directly from the JDBC driver instead of defining it in the DbmsType #161
    • [enhancement][wontfix][**z-api**] Introduce a new EntityBuilder with mandatory fields #124
    • [enhancement][**z-tool**] Add multiple Dbms and Schema in UI #93
    Source code(tar.gz)
    Source code(zip)
  • 3.2.9(Apr 13, 2020)

    Channing

    New Features

    Custom interfaces (traits) for tables can now be added. A list of provided interface names is added to what the generated class implements. The classes are not generated but are expected to be provided through user code.

    Fixed Issues

    #864 Add interface/trait ability to tables/columns #866 Maven init mojo not working with Java 11 #853 InjectorImpl::newBuilder exposes mutable state #868 Generate application entry point

    Source code(tar.gz)
    Source code(zip)
  • 3.2.7(Feb 24, 2020)

  • 3.2.6(Feb 3, 2020)

    Channing

    New Features

    • Add Tutorials to Speedment Manual

    Fixed Issues

    #459 Standalone UI (wontfix) #707 Add Tutorials to Speedment Manual #854 codegen: AutoGetSetAdd does not add setter type #855 codegen: AutoGetSetAdd does not recognize collection classes #856 codegen: Class::hashcode() and Class::equals erroneous #857 codegen: ConstructorImpl does not consider imports in equals() and hashCode() #858 codegen: EnumConstantImpl does not implement equals() and hashCode() #859 codegen: EnumConstantView does not render inner classes

    Source code(tar.gz)
    Source code(zip)
  • 3.2.5(Dec 16, 2019)

    Channing

    New Features

    • Gradle support documented
    • The mapbuilder module eliminated

    Fixed Issues

    #78 Gradle support #517 Include Gradle Plugin as a module #756 Finders can't be used in transactions #837 Create release scripts #839 tuples: Default get() method throws IllegalArgumentException but should throw IndexOutOfBoundsException #840 TupleOfNullable::streamOf and MutableTuple::streamOf returns Optionals not elements #841 ToBooleanNullable#hash returning incorrect value #842 invariant: reversed logic in requireNonZero() and requireZero() in DoubleRangeUtil #843 invariant: reversed logic in requireEqual() in DoubleRangeUtil #844 invariant: zero inclusive in requireNegative() in DoubleRangeUtil #845 "typemapper: DateIntToShortMapper does not confine to specification #846 Remove module mapbuilder #849 MapStream does not protects its invariant wrt null

    Source code(tar.gz)
    Source code(zip)
  • 3.2.2(Dec 5, 2019)

    Channing

    New Features

    • Add Manager::merge and Manger::merger for merge of Entities. This allows entities to be either persisted or updated depending on if they exist or not.
    • The mapstream module eliminated from the runtime, allowing smaller microservices

    Fixed Issues

    #287 Introduce merge() and merger() #790 codegen: Let all Translators take the Injector as a parameter #794 Make sure all requires transitively are in place #814 Remove wildcard usage in return types #819 Fix jlink maven example #826 Move TypeMapperComponent to a runtime module #827 tool: FK not shown as disabled #828 codegen: public static final modifiers are in wrong order #829 Expression has a redundant type parameter #833 Remove requires com.speedment.common.mapstream from runtime modules

    Source code(tar.gz)
    Source code(zip)
  • 3.2.1(Nov 13, 2019)

    Channing

    New Features

    • Maintenance release

    Fixed Issues

    Deployment on maven central repo failed for 3.2.0 so this release should fix that problem #823 Remove the examples modules and move them to a separate repo #822 Injector shall use InjectorProxy for properties

    Source code(tar.gz)
    Source code(zip)
  • 3.2.0(Nov 12, 2019)

    Channing

    New Features

    • Support for Java Platform Module System (JPMS) to allow the deployment of lightweight microservices
    • The JoinComponent is now optional, allowing even smaller microservices
    • Allow disabling/enabling of all columns or tables in the tool
    • Update JDBC drivers to latest versions
    • Improved rendering of JavaDocs with the latest version of the JavaDoc plugin

    Users must re-generate the domain model to be able to use the new version (just issue the command mvn speedment:generate). Thanks to multi-version JARs, the new version can be run from Java 8 and upwards.

    Fixed Issues

    #488 Runtime: ConnectionPoolComponent exposes unnescessary methods #735 Add Java module system #737 Review the signature of the method TypeMapper::toJavaType #753 Tool: Selector for JDBC Type to Java displays non applicable actions #757 Remove Injector setAccessable code #761 Postgres: JSON types fails under postgres 12 #763 Remove the module "lazy" #765 Tool: JavaFx Exception when launching the tool #777 codegen: Add LicenseTerm to File #778 Remove Split package warnings #779 JPMS: Add tests for deep reflection protection #780 Add a module that transitively adds required modules to run Speedment #781 Generated SqlAdapter objects reference an internal package #782 Remove unused TransactionComponentNoOp #783 Remove unused class SqlPersistenceImpl #784 JPMS: Add a proxy injector creator #785 Run maven speedment:tool under JPMS and test #786 Update initializer to work with modules #787 Create interfaces for import com.speedment.runtime.core.internal.manager.sql.SqlInsertStatement et al. #788 Injector: Wrong oder of injected classes #789 injector: Instances are created twice #792 Add documentation of JPMS #793 Review wiki regarding 3.2.0 #795 Add Manager::create method #796 Remove class StaticClassUtil #797 Make sure that the module-info from main is seen by depending modules #798 Run SonarQube analysis before release #799 Add package-info to the new provided packages #800 tool: Toggle Expand/Collapse does not show up #802 Rename Speedment::close to Speedment::stop #803 runtime-typemapper: Remove usage of SerialBlob and module java.sql.rowset #804 MySQL test fails #805 Tool: Can't connect to database #806 Update JDBC drivers to latest versions #807 Require @ExecuteBefore methods to be public #808 Remove unused FeatureReadinessLevel class #809 Write JUnit tests for StandardBlob #812 Remove OSGI packaging #813 Add InjectorProxy::invoke method #816 Remove module mutable-stream #817 Depend on latest javadoc plugin #818 Remove modules generator-deploy, runtime-deploy and tool-deploy #820 enterprise-tool: Delegate internal components in package provider

    Source code(tar.gz)
    Source code(zip)
  • 3.1.18(Sep 5, 2019)

    Homer

    New Features

    • Added scroll bar for db property panel in the tool

    Fixed Issues

    #769 License header should be a comment #758 injector: Dependency graph does not mandate every version instantiated #755 Let config implementations return a Stream with no wildcard for children #754 Move constants in config Document interfaces like Table to separate util method #749 Tool: Content of GUI cannot be shown due to lack of scroll-bar. #752 Examples cannot be run under Java 8 #751 Add a new banner with Speedment Stream #750 Banner printout is not using the platform-specific newline character(s)

    Source code(tar.gz)
    Source code(zip)
    generator-deploy-3.1.18.jar(2.95 MB)
    runtime-deploy-3.1.18.jar(2.54 MB)
    tool-deploy-3.1.18.jar(4.11 MB)
  • 3.1.17(Aug 9, 2019)

    Homer

    New Features

    • Added support for SqlLite
    • Added ability to regenerate with headless Java (e.g. without JavaFX)
    • Improved alias rendering in the UI tool
    • Dependency Injector support for constructors with parameters

    Fixed Issues

    #743 Create a HasColumn.findColumnOrThrow() #747 Fix annotation in AbstractManager enhancement #746 Json: Need replacement for Json.PRETTY=false #745 Rest: Support HTTP HEAD commands in Rest interface #744 Rest: Better exception error messages #742 Tool: empty text fields in the database connect window are automatically refilled #335 Add constructor with parameters to Injector #708 PhoneHome: Check thread housekeeping in case server goes down #590 Injector: Add support for optional launcher arguments #343 Separate speedment-maven-plugin into modules #282 Add DB support for android.database.sqlite #175 Use FXML loader with ControlFactory to setup UI #561 Tool: Show code dynamically for selected table #733 speedment:generate requires JavaFX to be present #731 DbmsMutator::setLocalPath is missing #98 See a code preview in the UI #560 Tool: The meaning of Java Alias is unclear

    Source code(tar.gz)
    Source code(zip)
    generator-deploy-3.1.17.jar(2.94 MB)
    runtime-deploy-3.1.17.jar(2.53 MB)
    tool-deploy-3.1.17.jar(3.76 MB)
  • 3.1.16(Apr 5, 2019)

  • 3.1.14(Mar 24, 2019)

  • 3.1.13(Mar 10, 2019)

  • 3.1.12(Jan 22, 2019)

  • 3.1.11(Jan 22, 2019)

  • 3.1.10(Jan 22, 2019)

    Homer

    New Features

    • Added support for SQLite databases
    • Added database mapping byte[]
    • Updated JDBC driver versions for MySQL, Postgres, and MariaDB
    • Improved Predicate handling for Join .where() statements (AND, OR composition)

    Fixed Issues

    #711 AutoClosingReferenceStream may call its close handle several times #713 API: DbmsOperationalHandler is leaking internal interface #712 Add default ResultSetMapping for byte[]-columns #698 Stream Optimizer fails for Enum bug #702 Update JDBC Drivers to latest version #679 Tool: settings.xml-overrides gets saved into speedment.json #691 TypeMapper is overwritten when running speedment:reload #617 Wrong style of un-disabled fields #702 Fix code coverage report once migration to JUnit5 is done #533 Use JUnit 5 for tests #512 Collations are not used in ORDER BY rendering #659 Add tests for Speedment streams #704 Semantic join produce empty result if comparing uuid inside where clause #527 AutoClosingReferenceStream and its Int,Long,Double variants does not support Java9 #363 Is Byte not boolean #624 AutoClosingReferenceStream does not implement Java9StreamAdditions #593 Speedment instances that are stopped does not prevent managers from being used #364 bit(64) is translated to int not long #365 Return wrong value in "BIT(64)" #515 Rework the AutoClose stream property #602 SqlPersistenceImpl is rendering String predicates the wrong way #601 Allow Predicate compositions in Join builders. #700 Add support for SQLite #705 AbstractDbmsOperationHandler: ConnectionInfo is not closed

    Source code(tar.gz)
    Source code(zip)
  • 3.1.9(Nov 27, 2018)

  • 3.1.8(Nov 2, 2018)

  • 3.1.6(Aug 31, 2018)

    Homer

    New Features

    • Persistence now supports INSERT and UPDATE with DEFAULT values and generated values via the new ability to select which fields to use. See Manual
    • The Spring Plugin has been updated and moved to Enterprise and Enterprise Free.

    Fixed Issues

    #495 Optimize PredicateView #257 Add support for for DEFAULT values #491 Spring Plugin: Add capability to override builder configurations #692 Spring Plugin: Remove spring plugin

    Source code(tar.gz)
    Source code(zip)
    generator-deploy-3.1.6.jar(2.85 MB)
    runtime-deploy-3.1.6.jar(2.44 MB)
    tool-deploy-3.1.6.jar(3.66 MB)
  • 3.1.5(Aug 22, 2018)

    Homer

    New Features

    Plugins now have additional control over the Speedment Tool. They can add additional menu buttons, toolbar elements and so on. The speedment:edit Maven goal can now be used to delete nodes that match a particular predicate.

    Fixed Issues

    #689 Tool: Make it possible to add new Menu items from plugin #688 Tool: Make it possible to add new Toolbar items from plugin #184 Atomic selective UPDATEs #183 Combine .filter() and .map() to create atomic selective DELETEs #xxx Alert dialogue size now depends on message length

    Source code(tar.gz)
    Source code(zip)
    generator-deploy-3.1.4.jar(2.84 MB)
    runtime-deploy-3.1.4.jar(2.44 MB)
    tool-deploy-3.1.4.jar(4.48 MB)
  • 3.1.4(Jun 22, 2018)

    Homer

    New Features

    • Join Streams can merge some stream operations into SQL (e.g. skip, limit, findFirst, findAny)
    • Added Maven goal "edit" for editing the speedment.json configuration file
    • Added Maven flag "-DskipClear" for the "generate" target
    • Improved Code Generator with better output code style
    • Improved Code Generator API simplifying code generation logic
    • Available processors and memory is logged upon start

    Fixed Issues

    #600 Check Join predicates so they use collations #625 AutoClosingReferenceStream is internal but used by other modules #677 Join.stream() doesn't optimize limit(), findAny() and findFirst() bug #577 Warning is shown if VIEW is missing a Primary Key #409 Add -DskipClear parameter to speedment:generate goal enhancement #410 When more than one dbms is specified in JSON, then the first is cleared before the second #540 RDS #522 Document the Enum Plugin #436 Codegen: Generics::asType does not take generics into account #661 Some modules are exporting private references #662 runtime-field: Javadoc warnings bug #682 Maven: Add goal for editing the speedment.json from the command line enhancement #678 Maven: InitMojo doesn't specify typeMappers and components params #680 Runtime: Stop printing warnings that views lack primary keys #511 Enable tests after Mockito works under Java 9 #676 CodeGen: Add a AutoConstructor controller #674 CodeGen: Add an easier way to create SimpleParameterizedTypes #675 CodeGen: Add a way to get a Generator implementation without using internal classes #673 CodeGen: Add some missing constructors to DefaultType #672 CodeGen: Generate IDEA-style import statements #669 CodeGen: Add convenience methods to help creating models #670 CodeGen: Make it possible to add imports to all models #671 CodeGen: Add a HasParent trait so that models can be traversed in any direction #646 CodeGen: TransformFactory uses depricated method Class.newInstance #667 Print out available processors and max memory upon startup

    Source code(tar.gz)
    Source code(zip)
    generator-deploy-3.1.4.jar(2.84 MB)
    runtime-deploy-3.1.4.jar(2.44 MB)
    tool-deploy-3.1.4.jar(4.48 MB)
  • 3.1.3(Jun 8, 2018)

  • 3.1.2(Jun 6, 2018)

    Homer

    New Features

    • Added withLogging(LogType.JOIN) to enable JOIN logging
    • Support for MySQL version 8.0

    Fixed Issues

    #660 AbstractAutoClosingStream and descendants gives erroneous results #616 Wrong JDBC-connector is used by Maven Plugin #657 Compute: compose() method returns non-nullable expressions #656 Add logger for JOIN #631 Add integration test for MariaDB 10.2 #630 Add integration test for MySQL 8.0 #653 Compute: ComposedExpression trait is lost when performing operations on it #651 Join: joinComponent uses javaName instead of databaseName #652 Manager.IDENTIFIER != ColumnIdentifier.asTableIdentifier() bug fixed #650 Split package com.speedment.runtime.core #643 Update Tutorials with new API #640 Update Manual with new API

    Source code(tar.gz)
    Source code(zip)
    generator-deploy-3.1.2.jar(2.80 MB)
    runtime-deploy-3.1.2.jar(2.42 MB)
    tool-deploy-3.1.2.jar(4.44 MB)
  • 3.1.1(May 16, 2018)

    Homer

    New Features

    • The maximum number of JOIN:ed tables has been increased from six to ten
    • The JDBC driver versions for MySQL, MariaDB and PostgreSQL has been updated to lates versions
    • New color scheme in the Tool

    Removed Features

    • The Maven archetypes have been dropped because they have been super-seeded by the initializer

    Fixed Issues

    #641 Update Speedment examples with new API #614 Better API for streaming over entities #648 Field: Make ComparableField inherit HasCompare #611 Bad value for type long : AB #649 Join: Collapse builder interfaces to avoid long filenames #591 Update JDBC driver for MySQL #639 Update to MySQL version 5.1.46 #637 Update to PostgreSQL JDBC Driver 42.2.2 #638 Update to MariaDB Connector/J 2.2.3 #647 Join: Increase the max join grade from six to ten enhancement #635 Wrong Speedment version in Quick Start Guide #636 Remove Maven Archetypes #641 Update README.MD with new API #608 Document Speedment::close instead of Speedment:stop #568 PosgreSQL: Streaming resultset does not work #644 Update Speedment Tool GUI

    Source code(tar.gz)
    Source code(zip)
    generator-deploy-3.1.1.jar(2.75 MB)
    runtime-deploy-3.1.1.jar(2.37 MB)
    tool-deploy-3.1.1.jar(4.39 MB)
  • 3.1.0(May 10, 2018)

    This is a new major release. The Speedment API has undergone some improvements since 3.0.x and Speedment applications might need some updating to use 3.1.x

    New Features

    • Semantic JOIN Stream support. Tables can be joined dynamically using INNER JOIN, LEFT JOIN, RIGHT JOIN and CROSS JOIN and be consumed as a standard Java Stream.
    • One-to-Many, and Many-to-Many relation execution performance hugely improved using semantic JOINs.
    • Improved API for streaming over entitites. Columns can be used directly for mapping and sorting.
    • The Speedment application instance is now AutoClosable simplifying Spring integration
    • Added ByteToBooleanTypeMaper
    • The major release "nick name" (e.g. Homer) is printed on startup
    • Deprecated methods from previous versions removed

    Fixed Issues

    #626 runtime-compute: Improve JavaDoc #414 Add ByteToBooleanTypeMapper #632 runtime-compute: ToX::compose is un-documented and not part of a trait #633 Add "Nickname" to a specification release #621 Exception during connection #629 Wrong default argument in Connection URL #614 Better API for streaming over entities enhancement fixed #622 Wrong field declaration for autogenerated Enum fields bug #627 When mapping non-nullable time to long or int, wrapper is used instead of primitive value bug fixed #628 Generated code doesn't compile when custom type mapper maps to a nullable primitive type #623 Change the signature of __Setter-interfaces #615 AbstractApplicationMetadata Hard Coded Meta Information #620 PrimitiveIntegerZeroOneToBooleanMapper is Ordering.RETAIN #618 Redundant ENTITY declared in ApplicationBuilder #612 codegen: Constructor view does not render annotations bug fixed #613 codegen: Constructor does not implement HasGenerics<Constructor> #610 function: Remove duplicate interfaces #371 Change method names in TableIdentifier and ColumnIdentifier #394 FieldComparator should not require Field to be HasComparableOperators e #393 Make HasFinder inherit from Field enhancement #303 Break out db connectors to separate modules enhancement #449 Break apart runtime-core e #429 Remove HasComparableOperators:comparatorNullFieldsLast #599 Remove rows not working #609 Remove depricated methods in ConnectionPoolComponent enhancement #454 Add static methods Entity.identifier() #564 HasLogglerName is misspelled #77 ManyToMany relation in a nice way #323 Make Speedment AutoCloseable #304 Remove ApplicationBuilder methods with() that takes Strings #604 Add missing TypeMappers for working with BigInteger and BigDecim #589 Runtime: Version check requires an InfoComponent. Make it optional. #598 AbstractApplicationBuilder and AbstractApplication are internal bug #594 Add an IDENTIFIER field to the generated Managers #360 Improved support for multi-join #597 Custom Schema and predicates fails #587 Tool: Nullable and To Primitive should be mutually exclusive bug

    Source code(tar.gz)
    Source code(zip)
    generator-deploy-3.1.0-SNAPSHOT.jar(2.72 MB)
    runtime-deploy-3.1.0-SNAPSHOT.jar(2.34 MB)
    tool-deploy-3.1.0-SNAPSHOT.jar(4.36 MB)
  • 3.0.21(Feb 8, 2018)

    New Features

    • Use the latest MariaDB JDBC connector version 2.2.1

    Fixed Issues

    #586 Update MariaDB JDBC version to 2.2.1 #576 Email prompt is only shown if a speedment.json file does not yet exist #578 Warning if running a newer version of Speedment than was used to generate code #584 Json: Error in Json Deserializer: Escaped string characters are mangled #574 MariaDB Default Encoding is utf8mb4

    Source code(tar.gz)
    Source code(zip)
    generator-deploy-3.0.21.jar(1.92 MB)
    runtime-deploy-3.0.21.jar(1.54 MB)
    tool-deploy-3.0.21.jar(3.56 MB)
  • 3.0.20(Jan 11, 2018)

    New Features

    • Added support for the types JSON and JSONB for Postgres
    • Added support for handle_text and tvector fields for Postgres

    Fixed Issues

    #582 RuntimeField: notEquals("") returns true for null-values #579 runtime-config: NullPointerException if printing document with keys mapped to null #575 Postgres to handle _text and tsvector fields #532 Runtime: Make PostgreSQL recognize JSON and JSONB types

    Source code(tar.gz)
    Source code(zip)
    generator-deploy-3.0.20.jar(1.92 MB)
    runtime-deploy-3.0.20.jar(1.54 MB)
    tool-deploy-3.0.20.jar(3.56 MB)
  • 3.0.19(Dec 4, 2017)

    New Features

    • Improved UI with code generation feedback and tool-tips for buttons
    • Support for Postgres types YEAR and JSON
    • Added predicate builder for non-null BooleanField
    • Added support for the lated Postgres JDBC connector

    Fixed Issues

    #573 Postgres does not handle the column types year and json #546 Sakila DB gives uncompilable code for PostgreSQL #550 BooleanField does not have any predicate builders #405 No predicate builders for BooleanField #553 sql:BOOL and sql:FLOAT will be mapped wrong by the default mapper #570 Bulk: com.speedment.runtime.bulk.trait is missing package-info.java #571 Core: com.speedment.runtime.core.component.transaction is missing package-info.java #555 Tool: Add dialog for entering mandatory settings #557 Tool: Add tool-tip for buttons reload and generate #563 Tool: Confusing labling #554 Update PostgreSQL to latest driver version #520 Tuple: Rename Tuples.of(Object...) to Tuples.ofArray(Object...) #567 DataStore: ClassCastException when setting limit on a stream - cannot cast to HasComparableOperationsIndex bug community request fixed #556 Oracle - ORA-01702: vous ne pouvez pas utiliser de vue ici

    Source code(tar.gz)
    Source code(zip)
    generator-deploy-3.0.19.jar(1.91 MB)
    runtime-deploy-3.0.19.jar(1.54 MB)
    tool-deploy-3.0.19.jar(3.55 MB)
Owner
Speedment
Speedment
Speedment
A zero ceremony ORM for Java

Release notes Welcome Persism is a wood simple, auto discovery, auto configuration, and convention over configuration ORM (Object Relational Mapping)

Dan Howard 121 Dec 17, 2022
Core ORMLite functionality that provides a lite Java ORM in conjunction with ormlite-jdbc or ormlite-android

ORMLite Core This package provides the core functionality for the JDBC and Android packages. Users that are connecting to SQL databases via JDBC shoul

Gray 547 Dec 25, 2022
A simple-to-use storage ORM supporting several databases for Java.

Storage Handler This is a library based off of my old storage handler within my queue revamp. It's for easy storage handling for multiple platforms. N

NV6 7 Jun 22, 2022
sql2o is a small library, which makes it easy to convert the result of your sql-statements into objects. No resultset hacking required. Kind of like an orm, but without the sql-generation capabilities. Supports named parameters.

sql2o Sql2o is a small java library, with the purpose of making database interaction easy. When fetching data from the database, the ResultSet will au

Lars Aaberg 1.1k Dec 28, 2022
MapDB provides concurrent Maps, Sets and Queues backed by disk storage or off-heap-memory. It is a fast and easy to use embedded Java database engine.

MapDB: database engine MapDB combines embedded database engine and Java collections. It is free under Apache 2 license. MapDB is flexible and can be u

Jan Kotek 4.6k Dec 30, 2022
MapDB provides concurrent Maps, Sets and Queues backed by disk storage or off-heap-memory. It is a fast and easy to use embedded Java database engine.

MapDB: database engine MapDB combines embedded database engine and Java collections. It is free under Apache 2 license. MapDB is flexible and can be u

Jan Kotek 4.6k Jan 1, 2023
jdbi is designed to provide convenient tabular data access in Java; including templated SQL, parameterized and strongly typed queries, and Streams integration

The Jdbi library provides convenient, idiomatic access to relational databases in Java. Jdbi is built on top of JDBC. If your database has a JDBC driv

null 1.7k Dec 27, 2022
esProc SPL is a scripting language for data processing, with well-designed rich library functions and powerful syntax, which can be executed in a Java program through JDBC interface and computing independently.

esProc esProc is the unique name for esProc SPL package. esProc SPL is an open-source programming language for data processing, which can perform comp

null 990 Dec 27, 2022
A RatingBar library for android, you can customize size, spacing, color and image easily, and support right to left.

AndRatingBar A RatingBar library for android, you can customize size, spacing, color and image easily, and support right to left. 安卓RatingBar终极方案,继承自原

dqq 271 Aug 14, 2021
A blazingly small and sane redis java client

Jedis Jedis is a blazingly small and sane Redis java client. Jedis was conceived to be EASY to use. Jedis is fully compatible with redis 2.8.x, 3.x.x

Redis 10.8k Dec 31, 2022
A blazingly small and sane redis java client

Jedis Jedis is a blazingly small and sane Redis java client. Jedis was conceived to be EASY to use. Jedis is fully compatible with redis 2.8.x, 3.x.x

Redis 10.9k Jan 8, 2023
Event capture and querying framework for Java

Eventsourcing for Java Enabling plurality and evolution of domain models Instead of mutating data in a database, Eventsourcing stores all changes (eve

Eventsourcing, Inc. 408 Nov 5, 2022
Java implementation of Condensation - a zero-trust distributed database that ensures data ownership and data security

Java implementation of Condensation About Condensation enables to build modern applications while ensuring data ownership and security. It's a one sto

CondensationDB 43 Oct 19, 2022
Java & Kotlin Async DataBase Driver for MySQL and PostgreSQL written in Kotlin

jasync-sql is a Simple, Netty based, asynchronous, performant and reliable database drivers for PostgreSQL and MySQL written in Kotlin. Show your ❤ wi

null 1.5k Dec 31, 2022
Replicate your Key Value Store across your network, with consistency, persistance and performance.

Chronicle Map Version Overview Chronicle Map is a super-fast, in-memory, non-blocking, key-value store, designed for low-latency, and/or multi-process

Chronicle Software : Open Source 2.5k Dec 29, 2022