hibernate一对多注解配置 hibernate中自定义主键生成器[1]
hibernate中自定义主键生成器[1]
Hibernate(目前使用的版本是 )中提供了多种生成主键的方式
然而当前的这么多种生成方式未必能满足我们的要求
比如increment 可以在一个hibernate实例的应用上很方便的时候 但是在集群的时候就不行了
再如 identity sequence native 是数据局提供的主键生成方式 往往也不是我们需要 而且在程序跨数据库方面也体现出不足
![hibernate一对多注解配置 hibernate中自定义主键生成器[1]](http://img.zhputi.com/uploads/ce3a/ce3a78d12ad2ce06b6af81c7c33c928439350.jpg)
还有基于算法的生成方式生成出来的主键基本都是字符串的
我们现在需要一种生成方式 使用Long作为主键类型 自动增 支持集群
那么我们需要自定义一个我们的主键生成器才能实现了
实现代码:
package hibernate;
import java io Serializable; import java sql Connection; import java sql PreparedStatement; import java sql ResultSet; import java sql SQLException; import java util Properties;
import apache mons logging Log; import apache mons logging LogFactory; import hibernate HibernateException; import hibernate MappingException; import hibernate dialect Dialect; import hibernate engine SessionImplementor; import hibernate id Configurable; import hibernate id IdentifierGenerator; import hibernate id PersistentIdentifierGenerator; import hibernate type Type;
public class IncrementGenerator implements IdentifierGenerator Configurable { private static final Log log = LogFactory getLog(IncrementGenerator class); private Long next; private String sql; public Serializable generate(SessionImplementor session Object object) throws HibernateException { if (sql!=null) { getNext( session connection() ); } return next;
}
lishixinzhi/Article/program/Java/ky/201311/29169