2015-08-13 4 views
3

При использовании IdentifierGenerator какКак использовать тот же экземпляр IdentifierGenerator для всех отображений

<id name="id" column="id" type="long"> 
    <generator class="com.persistence.generator.CustomGenerator"> 
     <param name="max_lo">5</param> 
     <param name="sequence">A_SEQ</param> 
    </generator> 
</id> 

Hibernate экземпляр класса CustomGenerator за отображение класса, если тот же класс CustomGenerator используется в нескольких отображений класса.

Возможно ли создать только один экземпляр?

ответ

2

Ну, я не уверен, что вы можете предоставить общий доступ к экземпляру, но вы можете, конечно, закодировать легкий генератор прокси, чтобы сделать это для вас, как это (я использую статику здесь для краткости, но это может быть легко синглтон шаблон или аналогичный):

import org.hibernate.id.IdentifierGenerator; 

public class SharedGenerator implements IdentifierGenerator { 
    private static final IdentifierGenerator underlyingGenerator = new UUIDGenerator(); 

    @Override 
    public Serializable generate(SessionImplementor sessionImplementor, Object o) throws HibernateException { 
     return underlyingGenerator.generate(sessionImplementor, o); 
    } 
} 

Затем используйте SharedGenerator в вашей спящей конфигурации, так как все экземпляры будут называть один и тот же экземпляр базового генератора.

Смежные вопросы