Discussion:
[xwiki-devs] Hibernate 3.3.1 upgrade?
Vincent Massol
2008-09-12 12:50:30 UTC
Permalink
Might be good to upgrade to Hibernate 3.3.1 for Platform 1.7. We could
do it as soon as we create the 1.6 branch (next week).

WDYT?

Thanks
-Vincent

Here's the changelog since our 3.2.6 version:

3.3.0CR1 Changes:

** Bug
* [HHH-1312] - Unclosed ResultSet when using Identity
* [HHH-1396] - Table.validateColumns fails on valid column
* [HHH-1569] - Immutable Natural Id check fails with
ArrayIndexOutOfBounds in some cases
* [HHH-1593] - Infinite loop/StackOverflow when calling
configuration.setListener(null)
* [HHH-1753] - DB2Dialect.getCurrentTimestampSQLFunctionName()
uses Oracle syntax
* [HHH-1916] - param values in generator element should be
trimmed during HbmBinding
* [HHH-1920] - Incorrect documentation regarding XML manipulation
in Hibernate reference manual (chapter 18.3).
* [HHH-1956] - Interceptor.afterTransactionCompletion not called
with JTATransaction (CacheSynchronization.hibernateTransaction not set)
* [HHH-2159] - NullPointerException in
FromElement#findIntendedAliasedFromElementBasedOnCrazyJPARequirements
with 'hibernate.query.jpaql_strict_compliance' enabled
* [HHH-2164] - Minor bug in section "20.1.1. Customizing the
schema"
* [HHH-2200] - Memory leak in AbstractBatcher with Generated
Properties
* [HHH-2320] - Regression: optional properties under a <join> tag
no longer update properly
* [HHH-2503] - AbstractEntityPersister swallows JDBCExceptions in
processGeneratedProperties
* [HHH-2513] - Abusive WARN logged during deserialization of
replicated SessionFactory
* [HHH-2542] - NullPointerException in
TypeFactory.replaceAssociations for ComponentType
* [HHH-2553] - New LoadContexts Implementation causing possible
performance degradation
* [HHH-2593] - Keyword UNION is prefixed with "this_." in filter
conditions
* [HHH-2616] - No event is fired on Collection recreate/remove/
update action
* [HHH-2627] - Generated properties leak prepared statements in
Hibernate 3.2.3 and higher.
* [HHH-2631] - Leaking PreparedStatement and ResultSet via
CollectionLoadContext instances maintained in Map
collectionLoadContexts in LoadContexts
* [HHH-2711] - PropertyAccessException with backref and
<composite-map-key/>
* [HHH-2726] - spelling o your CLASSPATH
* [HHH-2728] - Calling session.clear() while retrieving objects
via an iterator will cause a "LazyInitializationException - No
Session" by the CGLIBLazyInitializer
* [HHH-2788] - Oracl8iDialect No Dialect mapping for JDBC type 91
* [HHH-2795] - CollectionLoadContexts for empy collections are
not removed until PersistenceContext.clear()
* [HHH-2816] - DefaultFlushEntityEventListener.checkNaturalId()
causes extra SELECTs on read-only entities
* [HHH-2833] - insert-select query fails with NPE when select
includes join
* [HHH-2857] - schemaSupport for HSQLDialect remote connections
doesn't work
* [HHH-2861] - cascade="delete-orphan,all" is ignored
* [HHH-2863] - testsuite fix-ups for maven and/or directory changes
* [HHH-2864] - Merging a detached instance with a new child in a
unidirectional one-to-many association fails if the parent was
previously loaded as a proxy
* [HHH-2892] - skip up-to-date checks of query cache for natural-
id only if immutable
* [HHH-2928] - optimizers for enhanced id generators should be
synchronized against multi-threaded access
* [HHH-2948] - QueryStatistics.executionMinTime always = 0
* [HHH-3111] - WebSphereExtendedJTATransactionLookup
$TransactionManagerAdapter.getStatus() implemented incorrect
* [HHH-3140] - Region prefix ignored for entities and collections

** Deprecation
* [HHH-2755] - Wrong "jsdk.jar" referenced in the tutorial

** Improvement
* [HHH-1786] - JTASessionContext.CleanupSynch does not remove
sessions from currentSessionMap
* [HHH-2048] - Incomplete MappingException at
org.hibernate.mapping.SimpleValue
* [HHH-2156] - Section 19.3, "Managing the caches" doesn't
document CacheMode.IGNORE
* [HHH-2533] - redesign Cache/CacheProviders
* [HHH-2662] - Workaround PostgreSQL issues in testsuite
* [HHH-2663] - Map java.sql.Types.REAL to Hibernate FloatType for
auto-discovery stuff
* [HHH-2665] - Split Oracle9Dialect into Oracle9iDialect and
Oracle10gDialect
* [HHH-2669] - Unequivocally map MySQL LOB types to the LONG
variant
* [HHH-2682] - support for auto-discovery of H2 dialect
* [HHH-2696] - Consider migrating to slf4j
* [HHH-2761] - Handle null and empty string consistently in
PropertiesHelper
* [HHH-2778] - TransactionManagerLookup implementation for
Bitronix Transaction Manager
* [HHH-2789] - Section 19.2 of the documentation does not show
OSCache as supporting clusters. It does.
* [HHH-2822] - timestamp extraction functions for SAPDBDialect
* [HHH-2826] - IS [NOT] NULL checks with component values
* [HHH-2859] - Introduce a 'Work' API for user to perform JDBC work
* [HHH-3131] - Add a method to ActionQueue to tell whether there
are currently entries in the executions collection

** New Feature
* [HHH-1] - Optimize Hibernate for the bulk insertion of related
entities
* [HHH-2555] - Create new RegionFactory for JBossCache
* [HHH-2884] - Provide a sessionFactory close event or hook for
the event listeners

** Patch
* [HHH-952] - Patch to allow subqueries with joins using Criteria
API and Subqueries with DetachedCriteria
* [HHH-2070] - Expand DB2Dialect auto-discovery support (Martin
Renner)
* [HHH-2519] - Schema dropping not documented with
hibernate.hbm2ddl.auto=create
* [HHH-2630] - Hibernate Dialect is not auto-detected for Sybase
ASE and DB2 (Shelley McGowan)
* [HHH-2758] - Patch IngresDialect based on certification
* [HHH-2839] - Don't use dummy dual table for hsqldb (David Bala?
ic)
* [HHH-2849] - Better error logging in IdentifierGeneratorFactory
(Antony Stubbs)
* [HHH-2957] - ActionQueue Insertion sort performance degrades
exponentially (Jay Erb)
* [HHH-3084] - DialectFactory detection of Ingres metadata
(Michael Leo)

** Task
* [HHH-2702] - Officially move to JDK 1.4
* [HHH-2704] - Migrate to Maven2 for build

3.3.0CR2 changes:

** Bug
* [HHH-1697] - OracleDialect fails to recognize sequence
accessible through syonyms when validating schema
* [HHH-2604] - Isolator.JdbcDelegate masks the exception if it
isn't possible to open a connection.
* [HHH-2683] - "datediff" is declared as NoArgSQLFunction in
H2Dialect, but actually accepts 3 arguments.
* [HHH-3006] - ConcurrentModificationException in AbstractBatcher
results in infinite loop
* [HHH-3229] - Merge can fail when there is a transient entity
reachable by multiple paths and at least one path does not cascade on
merge
* [HHH-3257] - Content images not displayed
* [HHH-3260] - Hibernate wraps a listener init or destroy
exception into an AssertionFailure
* [HHH-3261] - Do not wrap exceptions raised by event listeners
(at init or destroy time)
* [HHH-3265] - change license url in pom to http://www.gnu.org/licenses/lgpl-2.1.html
* [HHH-3266] - distribution bundle missing jta dependency
* [HHH-3272] - using of Integer.valueOf(int), which is not
available in JDK 1.4
* [HHH-3282] - DB2Dialect should report
supportsLobValueChangePropogation() == false
* [HHH-3309] - Serialize/Deserialize problem in
AbstractLazyInitializer with entitymode.MAP.
* [HHH-3409] - ResultTransformers need smarter equals() and
hashCode() impls

** Improvement
* [HHH-1786] - JTASessionContext.CleanupSynch does not remove
sessions from currentSessionMap
* [HHH-2060] - To be able to use <generator> with <composite-id>
* [HHH-2506] - Make javassist the default ByteCodeProvider
* [HHH-2875] - repackage cglib/asm under org.hibernate namespace
* [HHH-3269] - upgrade to jDocBook plugin version 2.1.1
* [HHH-3283] - protect
BulkManipulationTest#testInsertWithGeneratedTimestampVersion where
Dialect#supportsParametersInInsertSelect == false
* [HHH-3358] - Enable JTATransactionFactory and JTATransaction
factory to work without JNDI
* [HHH-3390] - Use READ_COMMITTED for JBC 2 cache

** Patch
* [HHH-3294] - Version incorrectly incremented for unchanged
persistent entity that is parent of a one to many relationship

** Task
* [HHH-3270] - follow up on documentation license questions

3.3.0GA changes:

** Bug
* [HHH-2021] - org.hibernate.cache.QueryKey has a fragile
equals() method
* [HHH-3333] - build Wiki has a typo and includes a lie re:jdk
version
* [HHH-3378] - DB2CustomSQLTest fails, need "RESULT SETS 1" in
proc definitions
* [HHH-3430] - distribution bundles cglib directly instead of the
hibernate repackaging

** Improvement
* [HHH-2926] - All *Event must inherit AbstractEvent
* [HHH-3247] - Provide more information in TypeMismatchException
message

3.3.0SP1 changes:

** Bug
* [HHH-3437] - re-add incorrectly removed public getSource()
methods on events

3.3.1GA changes:

** Bug
* [HHH-2694] - create-drop with c3p0 causes SQLException
* [HHH-3231] - org.hibernate.id.enhanced.TableGenerator throws
"IllegalArgumentException: alias not found: tbl" under Oracle
* [HHH-3392] - Query Cache entries are not distributable
* [HHH-3472] - JTASessionContext broken for WebSphere

** Improvement
* [HHH-2686] - Include a primary key in the sequence table used
by id.enhanced.TableGenerator
* [HHH-3249] - Make o.h.id.enhanced.TableGenerator more extension-
friendly
* [HHH-3424] - concat() with param binding fails function on derby
* [HHH-3454] - Allow enhanced.TableGenerator to segment itself
per entity as default
* [HHH-3456] - Make o.h.id.enhanced.SequenceStyleGenerator more
extension-friendly
* [HHH-3471] - Provide true-false type that maps to int values

** Task
* [HHH-3474] - Upgrade to use slf4j 1.5 (1.5.2)
Artem Melentyev
2008-09-13 11:59:35 UTC
Permalink
Post by Vincent Massol
Might be good to upgrade to Hibernate 3.3.1 for Platform 1.7. We could
do it as soon as we create the 1.6 branch (next week).
WDYT?
+1

I'll try it.
(I tried 3.3.0 before, but got some problems. Not investigated much)
--
Artem Melentyev
Jonas von Malottki
2008-09-13 21:30:54 UTC
Permalink
Hello,

Just a side note:

Oh, Hibernate now uses slf4j, which I once suggested for use in XWiki
(Again it is *not* an implementation, it's just a facade, with plug-able
implementations.)

greetings
Jonas
Post by Vincent Massol
Might be good to upgrade to Hibernate 3.3.1 for Platform 1.7. We could
do it as soon as we create the 1.6 branch (next week).
WDYT?
Thanks
-Vincent
** Bug
* [HHH-1312] - Unclosed ResultSet when using Identity
* [HHH-1396] - Table.validateColumns fails on valid column
* [HHH-1569] - Immutable Natural Id check fails with
ArrayIndexOutOfBounds in some cases
* [HHH-1593] - Infinite loop/StackOverflow when calling
configuration.setListener(null)
* [HHH-1753] - DB2Dialect.getCurrentTimestampSQLFunctionName()
uses Oracle syntax
* [HHH-1916] - param values in generator element should be
trimmed during HbmBinding
* [HHH-1920] - Incorrect documentation regarding XML manipulation
in Hibernate reference manual (chapter 18.3).
* [HHH-1956] - Interceptor.afterTransactionCompletion not called
with JTATransaction (CacheSynchronization.hibernateTransaction not set)
* [HHH-2159] - NullPointerException in
FromElement#findIntendedAliasedFromElementBasedOnCrazyJPARequirements
with 'hibernate.query.jpaql_strict_compliance' enabled
* [HHH-2164] - Minor bug in section "20.1.1. Customizing the
schema"
* [HHH-2200] - Memory leak in AbstractBatcher with Generated
Properties
* [HHH-2320] - Regression: optional properties under a <join> tag
no longer update properly
* [HHH-2503] - AbstractEntityPersister swallows JDBCExceptions in
processGeneratedProperties
* [HHH-2513] - Abusive WARN logged during deserialization of
replicated SessionFactory
* [HHH-2542] - NullPointerException in
TypeFactory.replaceAssociations for ComponentType
* [HHH-2553] - New LoadContexts Implementation causing possible
performance degradation
* [HHH-2593] - Keyword UNION is prefixed with "this_." in filter
conditions
* [HHH-2616] - No event is fired on Collection recreate/remove/
update action
* [HHH-2627] - Generated properties leak prepared statements in
Hibernate 3.2.3 and higher.
* [HHH-2631] - Leaking PreparedStatement and ResultSet via
CollectionLoadContext instances maintained in Map
collectionLoadContexts in LoadContexts
* [HHH-2711] - PropertyAccessException with backref and
<composite-map-key/>
* [HHH-2726] - spelling o your CLASSPATH
* [HHH-2728] - Calling session.clear() while retrieving objects
via an iterator will cause a "LazyInitializationException - No
Session" by the CGLIBLazyInitializer
* [HHH-2788] - Oracl8iDialect No Dialect mapping for JDBC type 91
* [HHH-2795] - CollectionLoadContexts for empy collections are
not removed until PersistenceContext.clear()
* [HHH-2816] - DefaultFlushEntityEventListener.checkNaturalId()
causes extra SELECTs on read-only entities
* [HHH-2833] - insert-select query fails with NPE when select
includes join
* [HHH-2857] - schemaSupport for HSQLDialect remote connections
doesn't work
* [HHH-2861] - cascade="delete-orphan,all" is ignored
* [HHH-2863] - testsuite fix-ups for maven and/or directory changes
* [HHH-2864] - Merging a detached instance with a new child in a
unidirectional one-to-many association fails if the parent was
previously loaded as a proxy
* [HHH-2892] - skip up-to-date checks of query cache for natural-
id only if immutable
* [HHH-2928] - optimizers for enhanced id generators should be
synchronized against multi-threaded access
* [HHH-2948] - QueryStatistics.executionMinTime always = 0
* [HHH-3111] - WebSphereExtendedJTATransactionLookup
$TransactionManagerAdapter.getStatus() implemented incorrect
* [HHH-3140] - Region prefix ignored for entities and collections
** Deprecation
* [HHH-2755] - Wrong "jsdk.jar" referenced in the tutorial
** Improvement
* [HHH-1786] - JTASessionContext.CleanupSynch does not remove
sessions from currentSessionMap
* [HHH-2048] - Incomplete MappingException at
org.hibernate.mapping.SimpleValue
* [HHH-2156] - Section 19.3, "Managing the caches" doesn't
document CacheMode.IGNORE
* [HHH-2533] - redesign Cache/CacheProviders
* [HHH-2662] - Workaround PostgreSQL issues in testsuite
* [HHH-2663] - Map java.sql.Types.REAL to Hibernate FloatType for
auto-discovery stuff
* [HHH-2665] - Split Oracle9Dialect into Oracle9iDialect and
Oracle10gDialect
* [HHH-2669] - Unequivocally map MySQL LOB types to the LONG
variant
* [HHH-2682] - support for auto-discovery of H2 dialect
* [HHH-2696] - Consider migrating to slf4j
* [HHH-2761] - Handle null and empty string consistently in
PropertiesHelper
* [HHH-2778] - TransactionManagerLookup implementation for
Bitronix Transaction Manager
* [HHH-2789] - Section 19.2 of the documentation does not show
OSCache as supporting clusters. It does.
* [HHH-2822] - timestamp extraction functions for SAPDBDialect
* [HHH-2826] - IS [NOT] NULL checks with component values
* [HHH-2859] - Introduce a 'Work' API for user to perform JDBC work
* [HHH-3131] - Add a method to ActionQueue to tell whether there
are currently entries in the executions collection
** New Feature
* [HHH-1] - Optimize Hibernate for the bulk insertion of related
entities
* [HHH-2555] - Create new RegionFactory for JBossCache
* [HHH-2884] - Provide a sessionFactory close event or hook for
the event listeners
** Patch
* [HHH-952] - Patch to allow subqueries with joins using Criteria
API and Subqueries with DetachedCriteria
* [HHH-2070] - Expand DB2Dialect auto-discovery support (Martin
Renner)
* [HHH-2519] - Schema dropping not documented with
hibernate.hbm2ddl.auto=create
* [HHH-2630] - Hibernate Dialect is not auto-detected for Sybase
ASE and DB2 (Shelley McGowan)
* [HHH-2758] - Patch IngresDialect based on certification
* [HHH-2839] - Don't use dummy dual table for hsqldb (David Bala?
ic)
* [HHH-2849] - Better error logging in IdentifierGeneratorFactory
(Antony Stubbs)
* [HHH-2957] - ActionQueue Insertion sort performance degrades
exponentially (Jay Erb)
* [HHH-3084] - DialectFactory detection of Ingres metadata
(Michael Leo)
** Task
* [HHH-2702] - Officially move to JDK 1.4
* [HHH-2704] - Migrate to Maven2 for build
** Bug
* [HHH-1697] - OracleDialect fails to recognize sequence
accessible through syonyms when validating schema
* [HHH-2604] - Isolator.JdbcDelegate masks the exception if it
isn't possible to open a connection.
* [HHH-2683] - "datediff" is declared as NoArgSQLFunction in
H2Dialect, but actually accepts 3 arguments.
* [HHH-3006] - ConcurrentModificationException in AbstractBatcher
results in infinite loop
* [HHH-3229] - Merge can fail when there is a transient entity
reachable by multiple paths and at least one path does not cascade on
merge
* [HHH-3257] - Content images not displayed
* [HHH-3260] - Hibernate wraps a listener init or destroy
exception into an AssertionFailure
* [HHH-3261] - Do not wrap exceptions raised by event listeners
(at init or destroy time)
* [HHH-3265] - change license url in pom to http://www.gnu.org/licenses/lgpl-2.1.html
* [HHH-3266] - distribution bundle missing jta dependency
* [HHH-3272] - using of Integer.valueOf(int), which is not
available in JDK 1.4
* [HHH-3282] - DB2Dialect should report
supportsLobValueChangePropogation() == false
* [HHH-3309] - Serialize/Deserialize problem in
AbstractLazyInitializer with entitymode.MAP.
* [HHH-3409] - ResultTransformers need smarter equals() and
hashCode() impls
** Improvement
* [HHH-1786] - JTASessionContext.CleanupSynch does not remove
sessions from currentSessionMap
* [HHH-2060] - To be able to use <generator> with <composite-id>
* [HHH-2506] - Make javassist the default ByteCodeProvider
* [HHH-2875] - repackage cglib/asm under org.hibernate namespace
* [HHH-3269] - upgrade to jDocBook plugin version 2.1.1
* [HHH-3283] - protect
BulkManipulationTest#testInsertWithGeneratedTimestampVersion where
Dialect#supportsParametersInInsertSelect == false
* [HHH-3358] - Enable JTATransactionFactory and JTATransaction
factory to work without JNDI
* [HHH-3390] - Use READ_COMMITTED for JBC 2 cache
** Patch
* [HHH-3294] - Version incorrectly incremented for unchanged
persistent entity that is parent of a one to many relationship
** Task
* [HHH-3270] - follow up on documentation license questions
** Bug
* [HHH-2021] - org.hibernate.cache.QueryKey has a fragile
equals() method
* [HHH-3333] - build Wiki has a typo and includes a lie re:jdk
version
* [HHH-3378] - DB2CustomSQLTest fails, need "RESULT SETS 1" in
proc definitions
* [HHH-3430] - distribution bundles cglib directly instead of the
hibernate repackaging
** Improvement
* [HHH-2926] - All *Event must inherit AbstractEvent
* [HHH-3247] - Provide more information in TypeMismatchException
message
** Bug
* [HHH-3437] - re-add incorrectly removed public getSource()
methods on events
** Bug
* [HHH-2694] - create-drop with c3p0 causes SQLException
* [HHH-3231] - org.hibernate.id.enhanced.TableGenerator throws
"IllegalArgumentException: alias not found: tbl" under Oracle
* [HHH-3392] - Query Cache entries are not distributable
* [HHH-3472] - JTASessionContext broken for WebSphere
** Improvement
* [HHH-2686] - Include a primary key in the sequence table used
by id.enhanced.TableGenerator
* [HHH-3249] - Make o.h.id.enhanced.TableGenerator more extension-
friendly
* [HHH-3424] - concat() with param binding fails function on derby
* [HHH-3454] - Allow enhanced.TableGenerator to segment itself
per entity as default
* [HHH-3456] - Make o.h.id.enhanced.SequenceStyleGenerator more
extension-friendly
* [HHH-3471] - Provide true-false type that maps to int values
** Task
* [HHH-3474] - Upgrade to use slf4j 1.5 (1.5.2)
_______________________________________________
devs mailing list
http://lists.xwiki.org/mailman/listinfo/devs
Vincent Massol
2008-09-13 21:43:59 UTC
Permalink
Post by Jonas von Malottki
Hello,
Oh, Hibernate now uses slf4j, which I once suggested for use in XWiki
(Again it is *not* an implementation, it's just a facade, with plug-
able
implementations.)
But we don't need it... We have our own simple facade which can be
plugged to any logging system including slf4j.

See http://svn.xwiki.org/svnroot/xwiki/platform/core/trunk/xwiki-component/src/main/java/org/xwiki/component/logging/Logger.java

I'm completely against replacing it with any external framework since
those frameworks come and go. As an example the de facto standard was
log4j a few years ago, then came commons-logging, then it was included
in the JDK, then now slf4j. Then who knows what will happen tomorrow.
Our rule is to use our own interface for all our core components so
that we are independent of such changes.

Thanks
-Vincent
Post by Jonas von Malottki
Post by Vincent Massol
Might be good to upgrade to Hibernate 3.3.1 for Platform 1.7. We could
do it as soon as we create the 1.6 branch (next week).
WDYT?
Thanks
-Vincent
** Bug
* [HHH-1312] - Unclosed ResultSet when using Identity
* [HHH-1396] - Table.validateColumns fails on valid column
* [HHH-1569] - Immutable Natural Id check fails with
ArrayIndexOutOfBounds in some cases
* [HHH-1593] - Infinite loop/StackOverflow when calling
configuration.setListener(null)
* [HHH-1753] - DB2Dialect.getCurrentTimestampSQLFunctionName()
uses Oracle syntax
* [HHH-1916] - param values in generator element should be
trimmed during HbmBinding
* [HHH-1920] - Incorrect documentation regarding XML manipulation
in Hibernate reference manual (chapter 18.3).
* [HHH-1956] - Interceptor.afterTransactionCompletion not called
with JTATransaction (CacheSynchronization.hibernateTransaction not set)
* [HHH-2159] - NullPointerException in
FromElement#findIntendedAliasedFromElementBasedOnCrazyJPARequirements
with 'hibernate.query.jpaql_strict_compliance' enabled
* [HHH-2164] - Minor bug in section "20.1.1. Customizing the
schema"
* [HHH-2200] - Memory leak in AbstractBatcher with Generated
Properties
* [HHH-2320] - Regression: optional properties under a <join> tag
no longer update properly
* [HHH-2503] - AbstractEntityPersister swallows JDBCExceptions in
processGeneratedProperties
* [HHH-2513] - Abusive WARN logged during deserialization of
replicated SessionFactory
* [HHH-2542] - NullPointerException in
TypeFactory.replaceAssociations for ComponentType
* [HHH-2553] - New LoadContexts Implementation causing possible
performance degradation
* [HHH-2593] - Keyword UNION is prefixed with "this_." in filter
conditions
* [HHH-2616] - No event is fired on Collection recreate/remove/
update action
* [HHH-2627] - Generated properties leak prepared statements in
Hibernate 3.2.3 and higher.
* [HHH-2631] - Leaking PreparedStatement and ResultSet via
CollectionLoadContext instances maintained in Map
collectionLoadContexts in LoadContexts
* [HHH-2711] - PropertyAccessException with backref and
<composite-map-key/>
* [HHH-2726] - spelling o your CLASSPATH
* [HHH-2728] - Calling session.clear() while retrieving objects
via an iterator will cause a "LazyInitializationException - No
Session" by the CGLIBLazyInitializer
* [HHH-2788] - Oracl8iDialect No Dialect mapping for JDBC type 91
* [HHH-2795] - CollectionLoadContexts for empy collections are
not removed until PersistenceContext.clear()
* [HHH-2816] - DefaultFlushEntityEventListener.checkNaturalId()
causes extra SELECTs on read-only entities
* [HHH-2833] - insert-select query fails with NPE when select
includes join
* [HHH-2857] - schemaSupport for HSQLDialect remote connections
doesn't work
* [HHH-2861] - cascade="delete-orphan,all" is ignored
* [HHH-2863] - testsuite fix-ups for maven and/or directory changes
* [HHH-2864] - Merging a detached instance with a new child in a
unidirectional one-to-many association fails if the parent was
previously loaded as a proxy
* [HHH-2892] - skip up-to-date checks of query cache for natural-
id only if immutable
* [HHH-2928] - optimizers for enhanced id generators should be
synchronized against multi-threaded access
* [HHH-2948] - QueryStatistics.executionMinTime always = 0
* [HHH-3111] - WebSphereExtendedJTATransactionLookup
$TransactionManagerAdapter.getStatus() implemented incorrect
* [HHH-3140] - Region prefix ignored for entities and collections
** Deprecation
* [HHH-2755] - Wrong "jsdk.jar" referenced in the tutorial
** Improvement
* [HHH-1786] - JTASessionContext.CleanupSynch does not remove
sessions from currentSessionMap
* [HHH-2048] - Incomplete MappingException at
org.hibernate.mapping.SimpleValue
* [HHH-2156] - Section 19.3, "Managing the caches" doesn't
document CacheMode.IGNORE
* [HHH-2533] - redesign Cache/CacheProviders
* [HHH-2662] - Workaround PostgreSQL issues in testsuite
* [HHH-2663] - Map java.sql.Types.REAL to Hibernate FloatType for
auto-discovery stuff
* [HHH-2665] - Split Oracle9Dialect into Oracle9iDialect and
Oracle10gDialect
* [HHH-2669] - Unequivocally map MySQL LOB types to the LONG
variant
* [HHH-2682] - support for auto-discovery of H2 dialect
* [HHH-2696] - Consider migrating to slf4j
* [HHH-2761] - Handle null and empty string consistently in
PropertiesHelper
* [HHH-2778] - TransactionManagerLookup implementation for
Bitronix Transaction Manager
* [HHH-2789] - Section 19.2 of the documentation does not show
OSCache as supporting clusters. It does.
* [HHH-2822] - timestamp extraction functions for SAPDBDialect
* [HHH-2826] - IS [NOT] NULL checks with component values
* [HHH-2859] - Introduce a 'Work' API for user to perform JDBC work
* [HHH-3131] - Add a method to ActionQueue to tell whether there
are currently entries in the executions collection
** New Feature
* [HHH-1] - Optimize Hibernate for the bulk insertion of related
entities
* [HHH-2555] - Create new RegionFactory for JBossCache
* [HHH-2884] - Provide a sessionFactory close event or hook for
the event listeners
** Patch
* [HHH-952] - Patch to allow subqueries with joins using Criteria
API and Subqueries with DetachedCriteria
* [HHH-2070] - Expand DB2Dialect auto-discovery support (Martin
Renner)
* [HHH-2519] - Schema dropping not documented with
hibernate.hbm2ddl.auto=create
* [HHH-2630] - Hibernate Dialect is not auto-detected for Sybase
ASE and DB2 (Shelley McGowan)
* [HHH-2758] - Patch IngresDialect based on certification
* [HHH-2839] - Don't use dummy dual table for hsqldb (David Bala?
ic)
* [HHH-2849] - Better error logging in IdentifierGeneratorFactory
(Antony Stubbs)
* [HHH-2957] - ActionQueue Insertion sort performance degrades
exponentially (Jay Erb)
* [HHH-3084] - DialectFactory detection of Ingres metadata
(Michael Leo)
** Task
* [HHH-2702] - Officially move to JDK 1.4
* [HHH-2704] - Migrate to Maven2 for build
** Bug
* [HHH-1697] - OracleDialect fails to recognize sequence
accessible through syonyms when validating schema
* [HHH-2604] - Isolator.JdbcDelegate masks the exception if it
isn't possible to open a connection.
* [HHH-2683] - "datediff" is declared as NoArgSQLFunction in
H2Dialect, but actually accepts 3 arguments.
* [HHH-3006] - ConcurrentModificationException in AbstractBatcher
results in infinite loop
* [HHH-3229] - Merge can fail when there is a transient entity
reachable by multiple paths and at least one path does not cascade on
merge
* [HHH-3257] - Content images not displayed
* [HHH-3260] - Hibernate wraps a listener init or destroy
exception into an AssertionFailure
* [HHH-3261] - Do not wrap exceptions raised by event listeners
(at init or destroy time)
* [HHH-3265] - change license url in pom to http://www.gnu.org/licenses/lgpl-2.1.html
* [HHH-3266] - distribution bundle missing jta dependency
* [HHH-3272] - using of Integer.valueOf(int), which is not
available in JDK 1.4
* [HHH-3282] - DB2Dialect should report
supportsLobValueChangePropogation() == false
* [HHH-3309] - Serialize/Deserialize problem in
AbstractLazyInitializer with entitymode.MAP.
* [HHH-3409] - ResultTransformers need smarter equals() and
hashCode() impls
** Improvement
* [HHH-1786] - JTASessionContext.CleanupSynch does not remove
sessions from currentSessionMap
* [HHH-2060] - To be able to use <generator> with <composite-id>
* [HHH-2506] - Make javassist the default ByteCodeProvider
* [HHH-2875] - repackage cglib/asm under org.hibernate namespace
* [HHH-3269] - upgrade to jDocBook plugin version 2.1.1
* [HHH-3283] - protect
BulkManipulationTest#testInsertWithGeneratedTimestampVersion where
Dialect#supportsParametersInInsertSelect == false
* [HHH-3358] - Enable JTATransactionFactory and JTATransaction
factory to work without JNDI
* [HHH-3390] - Use READ_COMMITTED for JBC 2 cache
** Patch
* [HHH-3294] - Version incorrectly incremented for unchanged
persistent entity that is parent of a one to many relationship
** Task
* [HHH-3270] - follow up on documentation license questions
** Bug
* [HHH-2021] - org.hibernate.cache.QueryKey has a fragile
equals() method
* [HHH-3333] - build Wiki has a typo and includes a lie re:jdk
version
* [HHH-3378] - DB2CustomSQLTest fails, need "RESULT SETS 1" in
proc definitions
* [HHH-3430] - distribution bundles cglib directly instead of the
hibernate repackaging
** Improvement
* [HHH-2926] - All *Event must inherit AbstractEvent
* [HHH-3247] - Provide more information in TypeMismatchException
message
** Bug
* [HHH-3437] - re-add incorrectly removed public getSource()
methods on events
** Bug
* [HHH-2694] - create-drop with c3p0 causes SQLException
* [HHH-3231] - org.hibernate.id.enhanced.TableGenerator throws
"IllegalArgumentException: alias not found: tbl" under Oracle
* [HHH-3392] - Query Cache entries are not distributable
* [HHH-3472] - JTASessionContext broken for WebSphere
** Improvement
* [HHH-2686] - Include a primary key in the sequence table used
by id.enhanced.TableGenerator
* [HHH-3249] - Make o.h.id.enhanced.TableGenerator more
extension-
friendly
* [HHH-3424] - concat() with param binding fails function on derby
* [HHH-3454] - Allow enhanced.TableGenerator to segment itself
per entity as default
* [HHH-3456] - Make o.h.id.enhanced.SequenceStyleGenerator more
extension-friendly
* [HHH-3471] - Provide true-false type that maps to int values
** Task
* [HHH-3474] - Upgrade to use slf4j 1.5 (1.5.2)
_______________________________________________
devs mailing list
http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________
devs mailing list
http://lists.xwiki.org/mailman/listinfo/devs
Jonas von Malottki
2008-09-13 23:27:01 UTC
Permalink
Hi,
Post by Vincent Massol
Post by Jonas von Malottki
Oh, Hibernate now uses slf4j, which I once suggested for use in XWiki
(Again it is *not* an implementation, it's just a facade, with plug-
able
implementations.)
But we don't need it... We have our own simple facade which can be
plugged to any logging system including slf4j.
See http://svn.xwiki.org/svnroot/xwiki/platform/core/trunk/xwiki-component/src/main/java/org/xwiki/component/logging/Logger.java
Ah, seeing this remembered me, that I wanted to introduce one of the
slf4j features: delayed expanding of messages for logging see:
http://n2.nabble.com/Logging-architecture-proposal-tt516791.html#none

I have done a small patch with this now (attachment). Or should I create
a Jira issue?

An SLF4J Logger implementation is also very easy then. And I can use it ;).

Greetings
Jonas
Post by Vincent Massol
I'm completely against replacing it with any external framework since
those frameworks come and go. As an example the de facto standard was
log4j a few years ago, then came commons-logging, then it was included
in the JDK, then now slf4j. Then who knows what will happen tomorrow.
Our rule is to use our own interface for all our core components so
that we are independent of such changes.
Thanks
-Vincent
Vincent Massol
2008-09-14 07:14:05 UTC
Permalink
Hi Jonas,
Post by Jonas von Malottki
Hi,
Post by Vincent Massol
Post by Jonas von Malottki
Oh, Hibernate now uses slf4j, which I once suggested for use in XWiki
(Again it is *not* an implementation, it's just a facade, with
plug- able
implementations.)
But we don't need it... We have our own simple facade which can be
plugged to any logging system including slf4j.
See http://svn.xwiki.org/svnroot/xwiki/platform/core/trunk/xwiki-component/src/main/java/org/xwiki/component/logging/Logger.java
Ah, seeing this remembered me, that I wanted to introduce one of the
http://n2.nabble.com/Logging-architecture-proposal-tt516791.html#none
Ah I had forgotten this email of yours, sorry about that. I've read it
again and it seems good to me, especially since our best practice is
now to use this:

logger.debug(String.format("text with %s in format syntax", var1,
var2,...);

So I'm +1 for modifying our logger interface to support this style.
Actually I even think we should maybe deprecate the old signatures.
Post by Jonas von Malottki
I have done a small patch with this now (attachment). Or should I
create a Jira issue?
Can you create a jira issue and attach your patch there?

Thanks a lot Jonas for pursuing this!
-Vincent
Post by Jonas von Malottki
An SLF4J Logger implementation is also very easy then. And I can use it ;).
Greetings
Jonas
Post by Vincent Massol
I'm completely against replacing it with any external framework
since those frameworks come and go. As an example the de facto
standard was log4j a few years ago, then came commons-logging,
then it was included in the JDK, then now slf4j. Then who knows
what will happen tomorrow. Our rule is to use our own interface
for all our core components so that we are independent of such
changes.
Thanks
-Vincent
Index: core/xwiki-component/src/main/java/org/xwiki/component/
logging/Logger.java
===================================================================
--- core/xwiki-component/src/main/java/org/xwiki/component/logging/
Logger.java (revision 12676)
+++ core/xwiki-component/src/main/java/org/xwiki/component/logging/
Logger.java (working copy)
@@ -39,17 +39,41 @@
void debug( String message );
+ /**
+ * '{}' in the message String with the corresponding object
+ * from the objects array. Replacing first '{}' by
+ * </br>
+ * Ideally the message should only be expanded and thus the
logged.
+ *
+ */
+ void debug( String message, Object... objects );
+
void debug( String message, Throwable throwable );
boolean isDebugEnabled();
void info( String message );
+
+ /**
+ */
+ void info( String message, Object... objects );
void info( String message, Throwable throwable );
boolean isInfoEnabled();
void warn( String message );
+
+ void warn( String message, Object... objects );
void warn( String message, Throwable throwable );
@@ -57,6 +81,8 @@
void error( String message );
+ void error( String message, Object... objects );
+
void error( String message, Throwable throwable );
boolean isErrorEnabled();
Index: core/xwiki-plexus/src/main/java/org/xwiki/plexus/logging/
PlexusLogger.java
===================================================================
--- core/xwiki-plexus/src/main/java/org/xwiki/plexus/logging/
PlexusLogger.java (revision 12676)
+++ core/xwiki-plexus/src/main/java/org/xwiki/plexus/logging/
PlexusLogger.java (working copy)
@@ -26,6 +26,64 @@
{
private org.codehaus.plexus.logging.Logger logger;
+ private static String expandMessage(String message, Object...
objects){
+ if(message == null)
+ return "";
+ if(objects == null )
+ return message;
+ int olast = objects.length - 1;
+ if(olast == -1)
+ return message;
+
+ char[] msgchar = message.toCharArray();
+ int mlast = msgchar.length - 1;
+
+ StringBuffer sb = new StringBuffer();
+
+ int o = 0;
+
+ // iterate through the Object Array and replace '{}' in the
msg
+ for(int i = 0; i < mlast; i++)
+ {
+ if(msgchar[i] == '{' && msgchar[i+1] == '}')
+ {
+ i++; // the next one can be skipped
+ if( o < objects.length )
+ {
+ if(objects[o] == null)
+ {
+ sb.append("(null)");
+ } else {
+ sb.append(objects[o].toString());
+ }
+ o++;
+ }
+ } else {
+ sb.append(msgchar[i]);
+ }
+ }
+
+ // append last char only if it did not came from a '{}'
+ if( !(msgchar[mlast-1] == '{' && msgchar[mlast] == '}') )
+ {
+ sb.append(msgchar[mlast]);
+ }
+
+ if(objects[olast] instanceof Throwable)
+ {
+ Throwable e = (Throwable)objects[olast];
+ sb.append("\n");
+ for(StackTraceElement se : e.getStackTrace())
+ {
+ sb.append(" ");
+ sb.append(se.toString());
+ }
+ }
+
+ return sb.toString();
+
+ }
+
public PlexusLogger(org.codehaus.plexus.logging.Logger logger)
{
this.logger = logger;
@@ -36,6 +94,15 @@
this.logger.debug(message);
}
+ public void debug(String message, Object... objects)
+ {
+ // only expand the message if the Debug level is enabled
+ if(this.logger.isDebugEnabled())
+ {
+ this.logger.debug(expandMessage(message, objects));
+ }
+ }
+
public void debug(String message, Throwable throwable)
{
this.logger.debug(message, throwable);
@@ -50,6 +117,15 @@
{
this.logger.info(message);
}
+
+ public void info(String message, Object... objects)
+ {
+ // only expand the message if the Info level is enabled
+ if(this.logger.isInfoEnabled())
+ {
+ this.logger.info(expandMessage(message, objects));
+ }
+ }
public void info(String message, Throwable throwable)
{
@@ -65,6 +141,15 @@
{
this.logger.warn(message);
}
+
+ public void warn(String message, Object... objects)
+ {
+ // only expand the message if the Warn level is enabled
+ if(this.logger.isWarnEnabled())
+ {
+ this.logger.debug(expandMessage(message, objects));
+ }
+ }
public void warn(String message, Throwable throwable)
{
@@ -81,6 +166,15 @@
this.logger.error(message);
}
+ public void error(String message, Object... objects)
+ {
+ // only expand the message if the Error level is enabled
+ if(this.logger.isErrorEnabled())
+ {
+ this.logger.error(expandMessage(message, objects));
+ }
+ }
+
public void error(String message, Throwable throwable)
{
this.logger.error(message, throwable);
Jonas von Malottki
2008-09-14 09:04:40 UTC
Permalink
Hi Vincent,
Post by Vincent Massol
Hi Jonas,
Post by Jonas von Malottki
Hi,
Post by Vincent Massol
Post by Jonas von Malottki
Oh, Hibernate now uses slf4j, which I once suggested for use in XWiki
(Again it is *not* an implementation, it's just a facade, with
plug- able
implementations.)
But we don't need it... We have our own simple facade which can be
plugged to any logging system including slf4j.
See http://svn.xwiki.org/svnroot/xwiki/platform/core/trunk/xwiki-component/src/main/java/org/xwiki/component/logging/Logger.java
Ah, seeing this remembered me, that I wanted to introduce one of the
http://n2.nabble.com/Logging-architecture-proposal-tt516791.html#none
Ah I had forgotten this email of yours, sorry about that. I've read it
again and it seems good to me, especially since our best practice is
logger.debug(String.format("text with %s in format syntax", var1,
var2,...);
If you already use this then the message could also be left in the
String.format format? Would make the message formatting another tick
simpler.
Post by Vincent Massol
So I'm +1 for modifying our logger interface to support this style.
Actually I even think we should maybe deprecate the old signatures.
Post by Jonas von Malottki
I have done a small patch with this now (attachment). Or should I
create a Jira issue?
Can you create a jira issue and attach your patch there?
Done:
http://jira.xwiki.org/jira/browse/XWIKI-2667
Post by Vincent Massol
Thanks a lot Jonas for pursuing this!
-Vincent
Post by Jonas von Malottki
An SLF4J Logger implementation is also very easy then. And I can use it ;).
Greetings
Jonas
Loading...