Skip to content
Francesco edited this page Jun 4, 2015 · 1 revision

  • Release 8.1.0 - 2015.xx.xx -

  • Added JPO-RX API: JPO turns non-blocking!

  • Release 8.0.0 - 2014.xx.xx -

  • Changed:
    • Asynchronous Transaction execution mode
    • Removed aggregated beans support and all related classes/methods/annotations (I could be reintroduced in a future version with cleaner code)
    • EhCache cache implementation moved to separate module
    • JSR303 validator implementation moved to separate module
    • Oval validator removed
    • Removed JodaType support
    • Added support for new Java 8 time classes: LocalDateTime, LocalTime, ZonedDateTime, Instant
    • Save, Update and Delete query not manually confirmed with "now" are automatically executed before the transaction commits
    • Added get methods that return Optional

  • Release 7.2.1 - 2013.11.12 -

  • Fixed: It is now possible to build JPOrm with a JDK8

  • Release 7.2.0 - 2013.11.22 -

  • Added: TypeWrapper for Enum that permits to use Enums as valid fields for a JPO Bean

  • Release 7.1.0 - 2013.06.04 -

  • Added: getInt, getLong, getString, getBigDecimal, getDouble, getFloat, getArray methods to the CustomQuery interface

  • Release 7.0.4 -

  • Fixed: the get() method of find queries should return the first entry of the ResultSet
  • Changed: the default cascade value for delete queries is set to true

  • Release 7.0.0 -

  • Changed package base name from com.jpattern.orm to com.jporm
  • Added pagination through maxResult and firstRow
  • Added custom clauses in the Where expression of a Find query
  • Added the GROUP BY and HAVING clauses
  • Removed old SqlExecutor. Renamed SqlPerformer to SqlExecutor
  • Fixed the wrong version check performed by SmartRenderableSqlSubElement and SmartRenderableSqlQuery classes
  • Added a cache service to save rendered queries
  • Changed: all getInt() getLong() etc. methods return Wrappers instead of primitives; consequently, they can return a null value
  • Added Apache License, Version 2.0 - The Apache Software Foundation
  • Added Postgresql support
  • Added new where() methods to the Find Query: where(ExpressionElement... exp) and where(String whereClause, Object... args)
  • Added methods and(String whereClause, Object... args) and or(String whereClause, Object... args) to the Where interface

  • Release 6.3.0 - 2013.04.18 -

  • JodaTime objects no longer use UTC timezone

  • Release 6.2.0 - WRONG RELEASE - NOT TO BE USED -


  • Release 6.1.0 - 2013.03.10 -

  • Added @Cache annotation
  • Added @Cascade annotation to define conditional update/save to bean relations
  • "lazy" on Fins queries is now false by default
  • The Session object is now stateless and Thread safe

  • Release 6.0.0 - 2013.03.08 -

  • Save/update/load/delete aggregated beans!
  • "Bean" is now used in the documentation instead of "object" or "entity"
  • Complete rewrite of the ValidatorService
  • Use of JUnit @RunWith(Parameterized.class) to launch the same test on multiple DBs
  • Added mysql 5 support
  • Removed conditional generators. A generator is now used only if the value is null or negative.
  • Added Generators fallback mode
  • added method findQuery(String[], Class, ... ) to the Session
  • alias are now used in the CustomQuery to get from the ResultSet using the Bean property names
  • Added a cacheManager to JPO and the cache(String cacheName) method to the find queries
  • Class alias used in SQL query are now independent from Class alias used in JPO Queries
  • Added ignore() method to the Find queries to avoid fetching not needed field values from the DB

  • Release 5.3.0 -

  • Fixed: if a query parameter is null the generated sql is not valid
  • Fixed: if an exception is thrown during the "update" the bean is silently not updated nor saved!
  • Added: Added a find() method in the findQuery that returns the first BEAN found or null
  • Added: Added an exist() method in the Session to know whether a Bean exists

  • Release 5.2.0 -

  • Is now possible to add more ExpressionElements in OR and AND in a query
  • Added the Expression factory to help building ExpressionElements

  • Release 5.1.1 -

  • Fixed wrong query's parameters log

  • Release 5.1.0 -

  • Added ResultSetRowReader class
  • Added doInTransaction(TransactionRollback) method to the session

  • Release 5.0.0 -

  • Heavy code refactoring
  • Complete rewriting of all the core Persistor related classes
  • Improved use of generics
  • Is now possible to write inline queries without using the query() method
  • Removed "from()" method from Queries. Is now possible to join directly from the root query.
  • Performance: no more array to List and viceversa conversions
  • Performance: Changed many reflection related methods with equivalent ones based on the strategy pattern (without the use of reflection)
  • Performance: Added ifDebugEnabled check before every logger.debug() call
  • Performance: SQL statement are rendered to String only if needed instead of on a each call

  • Release 4.5.0 -

  • Moved to slf4j
  • Synchronized core methods of the JPOrm class
  • It's now possible to build JPO with a JDK 7
  • Added new Validator interface and specific implementations for Oval and JSR303

  • Release 4.4.1 -

  • Fixed bug: an OrmException is no longer wrapped in a OrmSqlException when thrown by a ResultSetReader
  • Fixed bug: it's not possible to join the same table

  • Release 4.4.0 -

  • Big step forward: InputStream and Reader are now correctly handled even with Oracle DB (JDBC 3.0 driver required)

  • Release 4.3.0 -

  • Added automatic db Dialect discovering

  • Release 4.2.0 -

  • Added OrmSqlException hierarchy to map specific SQLException states

  • Release 4.1.0 -

  • Added "order by ... nulls last" and "order by ... nulls first"
  • Fixed bug: Not possible to use "createOrUpdate" method on beans with @Version and without conditional key generators

  • Release 4.0.2 -

  • Fixed a possible NullPointerException in WrapperTypeArray class

  • Release 4.0.0 -

  • ORM default behavior changed on save (update): the properties of a saved (updated) bean are no longer updated (id, generated fields, version) instead a new bean with all the fields updated is created and returned

  • Release 3.5.0 -

  • Now is possible to define a hierarchy of Bean
  • Added saveOrUpdate (if the @Generator is used and the "ifValueIn" property is defined, this will be used to determine whether save or update the bean, otherwise a double call to the db is performed)

  • Release 3.4.0 -

  • OrmQueryFormatException is thrown if an unknown field is used in a query
  • Is now possible to use objects of Classes with an associated WrapperType in every orm queries

  • Release 3.3.0 -

  • Added wrapper for joda-time DateMidnight to java.sql.Date
  • Added register(TypeWrapper) to JPO to register new wrappers or override existing ones
  • ResultSet fields manipulator helpers are no longer static

  • Release 3.2.0 -

  • Project renamed to JPO
  • Added online query writing: queries can be written in one single line thanks to the query() method in the clauses
  • Added property "ifValueIn" in the @Generated annotation. This permits to use the generator only if the key has a desired value to check the value
  • Removed "I" prefix from main interfaces
  • Dropped javassist code generator support
  • All Exceptions now inherit from OrmException
  • *Unique methods throws an OrmNotUniqueResultException if the returned rows number is not exactly one
  • findUnique method added to the Session
  • the first Class registered in a query can use property names in the where clause without the prefix
  • Query IJoin Interface renamed to From
  • Query IExpression Interface renamed to Where
  • Added @Ignore annotation to ignore bean fields
  • Added wrappers for Byte, Double, Float, Integer, Long, Short to BigDecimal
  • Added wrapper for Character to String
  • Added wrapper for Boolean to BigDecimal (false if ZERO, otherwise true )
  • Version increase feature now works with every wrapped type if their related type on the ResultSet is a Date or a number
  • New fields access strategy: if getter and/or setter are present they will be used by the orm, otherwise the field is directly accessed even if private
  • Only one generator per bean is accepted
  • Code cleaning and very heavy refactoring

  • Release 3.1.2 -

  • Is no longer mandatory to register beans at startup, they are now automatically registered on first use
  • Added wrapper for java.util.Date
  • Added wrapper for joda-time DateTime
  • Added wrapper for joda-time LocalDate
  • Added wrapper for joda-time LocalDateTime
  • DB scanning for primary key search has been removed. @Id annotation is now the only way to identify a primary key

  • Release 3.0.0 -

  • New ReflectionPersistorGenerator based on reflection mechanism
  • New JavassistPersistorGenerator to create bytecode at runtime
  • new @Version annotation
  • javassist is optional, if not found reflection is used
  • Cojen code generator removed from dependencies

JPO basics

JPO-RX

  • Configuration
  • Simple CRUD action
    • Prepare the beans
    • CRUD
  • Complex queries
    • Select
      • Join
    • Update
    • Save
    • Delete

JPO-RM

  • Configuration
  • Simple CRUD action
    • Prepare the beans
    • CRUD
  • Complex queries
    • Select
      • Join
    • Update
    • Save
    • Delete
Clone this wiki locally