`

Hibernate之自定义ID生成器

阅读更多
一 xxx.hml.xml
 <id name="id" type="java.lang.String">
            <column name="id" length="22" />
            <generator class="xx.xx.IdentifierGeneratorImpl" />
        </id>

二 具体实现: IdentifierGeneratorImpl.java
用到了commons工具包中的RandomStringUtils
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

import org.apache.commons.lang.RandomStringUtils;
import org.hibernate.HibernateException;
import org.hibernate.MappingException;
import org.hibernate.dialect.Dialect;
import org.hibernate.engine.SessionImplementor;
import org.hibernate.id.Configurable;
import org.hibernate.id.IdentifierGenerator;
import org.hibernate.type.Type;

public class IdentifierGeneratorImpl implements IdentifierGenerator, Configurable {
	
	private static final int IDLENG = 32;
	private static final String YYMMDDHHMMSS = "yyyyMMddhhmmss";
	
	private static String getCurrentDate(){
		return new SimpleDateFormat(YYMMDDHHMMSS).format(new Date());
	}

	public Serializable generate(SessionImplementor session, Object obj) throws HibernateException {			
		return  new StringBuilder().append(getCurrentDate()).append("-").append(RandomStringUtils.randomNumeric(IDLENG));
	}

	public void configure(Type type, Properties params, Dialect d) throws MappingException {
		
	}
	public static void main(String[] args) {
		IdentifierGeneratorImpl pu = new IdentifierGeneratorImpl();		
		System.out.println(pu.generate(null, null));		
		/*int random = 32;
		System.out.println(RandomStringUtils.randomNumeric(random));
		System.out.println(RandomStringUtils.randomAscii(random));
		System.out.println(RandomStringUtils.randomAlphabetic(random));
		System.out.println(RandomStringUtils.randomAlphanumeric(random));*/
		
	}
}
分享到:
评论

相关推荐

    JAVA 的ID生成策略

    JAVA ID生成策略是一种在Hibernate框架中使用的策略,用于生成实体类的主键值。这种策略在Annotation情况下,主要有三种方式生成主键值。 第一种方式是使用数据库的自动增长字段生成。这种方式使用@GeneratedValue...

    Swing编写的Hibernate生成器

    Swing编写的Hibernate生成器是一种实用工具,它利用Java Swing图形用户界面来简化Hibernate框架的实体类和映射文件的创建过程。Hibernate是Java领域中一个广泛应用的对象关系映射(ORM)框架,它允许开发者通过面向...

    hibernate自动生成

    4. **代码生成工具**:如压缩包中的"msp_generator_new"可能是一个定制化的代码生成器,它可以基于数据库的元数据自动生成上述的Entity、映射文件和DAO。这类工具通常会提供配置选项,比如选择数据库连接、指定生成...

    使用表的id生成

    2. **自定义ID生成器**: 当内置策略无法满足需求时,开发者可以创建自定义的ID生成器。这可能涉及到从特定的数据库表或外部系统获取ID,或者使用特定的算法生成ID。 3. **@Id注解**: 在JPA实体类中,使用`@Id`...

    hibernate实体生成工具

    **hibernate实体生成工具**是开发者在使用Hibernate框架时常用的一种辅助工具,它能够自动生成与数据库表对应的Java实体类,大大节省了手动编写代码的时间,提高了开发效率。Hibernate是一个强大的对象关系映射(ORM...

    实体类生成器

    实体类生成器会根据数据库的表结构自动生成这些类,包括字段、getter和setter方法、构造函数以及可能的注解,如`@Entity`、`@Table`、`@Id`等。 这篇博客文章"自做实体类生成器"可能介绍了作者自己创建的一个实体类...

    用MyEclipse自动生成hibernate映射文件和实体类

    默认情况下,Hibernate可能会选择自动增长策略,但根据实际需求,可能需要使用`assigned`策略,即主键由应用逻辑生成,例如使用序列或自定义ID生成器。修改后的配置如下: ```xml &lt;id name="id" type="java.lang....

    Nhibernate配置生成器

    4. **标识符(Id)**:对于主键字段,生成器会特别处理,标记为主键并配置相应的标识策略,如Identity、Sequence等。 5. **映射注解或XML配置**:根据选择,生成器会创建NHibernate所需的映射信息,包括表名、字段名...

    实体类生成器源码实体类生成器源码

    实体类生成器是一种工具,它能够自动生成符合特定模式或...此外,也可以根据实际需求定制生成器,添加自定义的字段或方法,提升开发效率。对于大型项目,这能显著减少手动编码的工作量,同时保证代码的统一性和规范性。

    Hibernate 转译中文版

    9. **事件监听器**:Hibernate允许自定义事件监听器,实现对对象生命周期各个阶段的监听,如保存、更新、加载、删除等,可以进行一些额外的操作。 10. **类型转换**:Hibernate支持自定义类型转换,允许开发者将...

    idea+hibernate生成.zip

    5. **自定义代码**:虽然IDEA自动生成的代码能够满足基本需求,但通常需要根据实际业务需求进行修改。例如,可能会增加事务管理、错误处理、日志记录等功能。 在提供的压缩包文件中,有以下几个关键文件: - `psi....

    hibernate动态分表

    在Hibernate中,可以使用 Hibenate的“TablePerClass”继承策略或者自定义SQL DDL生成器来实现分区。 接下来,我们将讨论如何在实际应用中配置和使用Hibernate动态分表: 1. 配置:在Hibernate的配置文件中,需要...

    java/.net实体类代码生成器

    Java 和 .NET 实体类代码生成器是一种工具,它能够极大地提高开发效率,尤其是在处理大量数据库操作时。这种工具能够自动从SQL Server数据库中提取表结构,并根据这些表的信息生成对应的Java或.NET实体类。实体类是...

    实体类生成器源码C#/Java版本

    实体类生成器是一种工具,主要用于自动化创建数据模型的C#或Java源代码,极大地提高了开发效率,尤其是在处理大量数据库表映射为程序对象时。这个工具的C#/Java版本允许开发者快速地根据数据库结构生成对应的实体类...

    hibernate-3.2源代码

    Hibernate支持事件驱动编程,如PreInsertEventListener、PostLoadEventListener等,允许用户在特定操作前或后进行自定义处理。 八、持久化操作 - 保存(save()):为新对象生成ID并将其放入一级缓存。 - 更新...

    Hibernate5实例程序

    Hibernate允许自定义事件监听器,监听诸如保存、更新、删除等生命周期事件,从而实现特定的业务逻辑。 13. **性能优化** 优化包括合理设置缓存策略、避免N+1查询问题、批量操作、延迟加载等。理解并合理运用这些...

    hibernate-distribution-3.6.10.Final-dist

    11. **事件监听器**:Hibernate允许自定义事件监听器,对对象的生命周期事件如加载、保存、更新、删除等进行拦截处理。 12. **懒加载(Lazy Loading)与立即加载(Eager Loading)**:通过`@ManyToOne(fetch = ...

    hibernate

    5. **ID生成策略**:每个实体类通常都有一个主键字段,Hibernate提供了多种ID生成策略,如Identity、Sequence、Table、UUID等,以适应不同数据库系统的主键生成需求。 6. **注解(Annotations)**:Hibernate使用...

    Java实体类生成器(源码)

    3. **代码生成模板**:生成器通常支持自定义模板,用户可以根据需求调整生成的实体类样式,比如是否生成注释、是否使用Lombok库简化代码等。 4. **注解驱动编程**:在生成的实体类中,可能会使用ORM框架提供的注解...

Global site tag (gtag.js) - Google Analytics