L'incrément est définitivement mauvais si vous avez plus d'un processus écrivant dans la même table - vous êtes obligé d'avoir des collisions.
Puisqu'il s'agit de MySQL, la chose la plus simple à utiliser serait identity
. Dans votre mappage Hibernate :
<generator class="identity"/>
Dans votre script MySQL :
CREATE TABLE IF NOT EXISTS `my_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`data1` int(11) NOT NULL,
`data2` int(11) NOT NULL,
`timestamp` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
Pour modifier un tableau existant :
ALTER TABLE `my_table`
CHANGE COLUMN `id` `id` int(11) NOT NULL AUTO_INCREMENT=$NEW_VALUE$;
où $NEW_VALUE$ doit être remplacé par le prochain identifiant disponible afin que la séquence ne soit pas réinitialisée à 1.