Hibernate之自定义ID生成器

来源:互联网 发布:prim算法描述 编辑:程序博客网 时间:2024/05/17 22:47
一 xxx.hml.xml 
Xml代码  收藏代码
  1. <id name="id" type="java.lang.String">  
  2.            <column name="id" length="22" />  
  3.            <generator class="xx.xx.IdentifierGeneratorImpl" />  
  4.        </id>  

二 具体实现: IdentifierGeneratorImpl.java 
用到了commons工具包中的RandomStringUtils 
Java代码  收藏代码
  1. import java.io.Serializable;  
  2. import java.text.SimpleDateFormat;  
  3. import java.util.Date;  
  4. import java.util.Properties;  
  5.   
  6. import org.apache.commons.lang.RandomStringUtils;  
  7. import org.hibernate.HibernateException;  
  8. import org.hibernate.MappingException;  
  9. import org.hibernate.dialect.Dialect;  
  10. import org.hibernate.engine.SessionImplementor;  
  11. import org.hibernate.id.Configurable;  
  12. import org.hibernate.id.IdentifierGenerator;  
  13. import org.hibernate.type.Type;  
  14.   
  15. public class IdentifierGeneratorImpl implements IdentifierGenerator, Configurable {  
  16.       
  17.     private static final int IDLENG = 32;  
  18.     private static final String YYMMDDHHMMSS = "yyyyMMddhhmmss";  
  19.       
  20.     private static String getCurrentDate(){  
  21.         return new SimpleDateFormat(YYMMDDHHMMSS).format(new Date());  
  22.     }  
  23.   
  24.     public Serializable generate(SessionImplementor session, Object obj) throws HibernateException {              
  25.         return  new StringBuilder().append(getCurrentDate()).append("-").append(RandomStringUtils.randomNumeric(IDLENG));  
  26.     }  
  27.   
  28.     public void configure(Type type, Properties params, Dialect d) throws MappingException {  
  29.           
  30.     }  
  31.     public static void main(String[] args) {  
  32.         IdentifierGeneratorImpl pu = new IdentifierGeneratorImpl();       
  33.         System.out.println(pu.generate(nullnull));          
  34.         /*int random = 32; 
  35.         System.out.println(RandomStringUtils.randomNumeric(random)); 
  36.         System.out.println(RandomStringUtils.randomAscii(random)); 
  37.         System.out.println(RandomStringUtils.randomAlphabetic(random)); 
  38.         System.out.println(RandomStringUtils.randomAlphanumeric(random));*/  
  39.           
  40.     }  
  41. }  
0 0