hibernate native Id generator tip

if you are working with more than one db vendor (mysql/postgresql/oracle ,vs…) both at the same project. you may like this a lot :)

the configuration sample below allow to run your hibernate application at two or more database vendors without changing any code

it will use both  mysql native id generator and different hibernate sequences for each of your mapping objects (not just one hibenate sequence for all objects)

@Entity
@Table(name = "ORM_Company")
public class Company implements java.io.Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "ORM_Company_SEQ")
@SequenceGenerator(name = "ORM_Company_SEQ", sequenceName = "ORM_Company_SEQ")
@Column(name = "id")
private java.lang.Long id = 0L;
//...

}

OR as in old xml style :

<class name="your.pack.Company"  table="ORM_Company" dynamic-update="true" >
<id name="id" type="long" column="id">
<generator class="native" >
<param name="sequence">ORM_Company_SEQ</param>
</generator>
</id>

Related Posts

  1. hibernate native id generator bug 3.2.4-ga
  2. hibernate tip: smart id generator
  3. Clean database schema with inheritance
  4. yagdao/quickstart/hibernate
  5. Retrieving Id field from JPA and Hibernate
    • Darren Bell
    • October 15th, 2008

    These are the annotations we use. This is because, by using a uuid, we have a distributable/replicate able database out of the box.

    @Id
    @GeneratedValue(generator = “system-uuid”)
    @GenericGenerator(name = “system-uuid”, strategy = “uuid”)
    @Column(length = 32, name = EntityObject.Columns.ID)
    @DocumentId(name=Attributes.ID)
    private String id;

    Works on every db :)

  1. thanks darren ,
    this configuration would be more ideal if you would use a guid-string identifier of course

    • Mike
    • October 5th, 2010

    Thanks for sharing this. I confirm that it works on SQL Server 2008 too even though it does not have sequences. Seems like its using some other technique to implement the sequence-like functionality.

    Mike

    • hi mike,
      actually this approach enables hibernate to pick the native generator,
      and if it is a sequence , gives a specific name for the sequence

  1. No trackbacks yet.