一 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生成策略是一种在Hibernate框架中使用的策略,用于生成实体类的主键值。这种策略在Annotation情况下,主要有三种方式生成主键值。 第一种方式是使用数据库的自动增长字段生成。这种方式使用@GeneratedValue...
Swing编写的Hibernate生成器是一种实用工具,它利用Java Swing图形用户界面来简化Hibernate框架的实体类和映射文件的创建过程。Hibernate是Java领域中一个广泛应用的对象关系映射(ORM)框架,它允许开发者通过面向...
4. **代码生成工具**:如压缩包中的"msp_generator_new"可能是一个定制化的代码生成器,它可以基于数据库的元数据自动生成上述的Entity、映射文件和DAO。这类工具通常会提供配置选项,比如选择数据库连接、指定生成...
2. **自定义ID生成器**: 当内置策略无法满足需求时,开发者可以创建自定义的ID生成器。这可能涉及到从特定的数据库表或外部系统获取ID,或者使用特定的算法生成ID。 3. **@Id注解**: 在JPA实体类中,使用`@Id`...
**hibernate实体生成工具**是开发者在使用Hibernate框架时常用的一种辅助工具,它能够自动生成与数据库表对应的Java实体类,大大节省了手动编写代码的时间,提高了开发效率。Hibernate是一个强大的对象关系映射(ORM...
实体类生成器会根据数据库的表结构自动生成这些类,包括字段、getter和setter方法、构造函数以及可能的注解,如`@Entity`、`@Table`、`@Id`等。 这篇博客文章"自做实体类生成器"可能介绍了作者自己创建的一个实体类...
默认情况下,Hibernate可能会选择自动增长策略,但根据实际需求,可能需要使用`assigned`策略,即主键由应用逻辑生成,例如使用序列或自定义ID生成器。修改后的配置如下: ```xml <id name="id" type="java.lang....
4. **标识符(Id)**:对于主键字段,生成器会特别处理,标记为主键并配置相应的标识策略,如Identity、Sequence等。 5. **映射注解或XML配置**:根据选择,生成器会创建NHibernate所需的映射信息,包括表名、字段名...
9. **事件监听器**:Hibernate允许自定义事件监听器,实现对对象生命周期各个阶段的监听,如保存、更新、加载、删除等,可以进行一些额外的操作。 10. **类型转换**:Hibernate支持自定义类型转换,允许开发者将...
5. **自定义代码**:虽然IDEA自动生成的代码能够满足基本需求,但通常需要根据实际业务需求进行修改。例如,可能会增加事务管理、错误处理、日志记录等功能。 在提供的压缩包文件中,有以下几个关键文件: - `psi....
在Hibernate中,可以使用 Hibenate的“TablePerClass”继承策略或者自定义SQL DDL生成器来实现分区。 接下来,我们将讨论如何在实际应用中配置和使用Hibernate动态分表: 1. 配置:在Hibernate的配置文件中,需要...
Java 和 .NET 实体类代码生成器是一种工具,它能够极大地提高开发效率,尤其是在处理大量数据库操作时。这种工具能够自动从SQL Server数据库中提取表结构,并根据这些表的信息生成对应的Java或.NET实体类。实体类是...
实体类生成器是一种工具,主要用于自动化创建数据模型的C#或Java源代码,极大地提高了开发效率,尤其是在处理大量数据库表映射为程序对象时。这个工具的C#/Java版本允许开发者快速地根据数据库结构生成对应的实体类...
Hibernate支持事件驱动编程,如PreInsertEventListener、PostLoadEventListener等,允许用户在特定操作前或后进行自定义处理。 八、持久化操作 - 保存(save()):为新对象生成ID并将其放入一级缓存。 - 更新...
Hibernate允许自定义事件监听器,监听诸如保存、更新、删除等生命周期事件,从而实现特定的业务逻辑。 13. **性能优化** 优化包括合理设置缓存策略、避免N+1查询问题、批量操作、延迟加载等。理解并合理运用这些...
11. **事件监听器**:Hibernate允许自定义事件监听器,对对象的生命周期事件如加载、保存、更新、删除等进行拦截处理。 12. **懒加载(Lazy Loading)与立即加载(Eager Loading)**:通过`@ManyToOne(fetch = ...
实体类生成器是一种工具,它能够自动生成符合特定模式或...此外,也可以根据实际需求定制生成器,添加自定义的字段或方法,提升开发效率。对于大型项目,这能显著减少手动编码的工作量,同时保证代码的统一性和规范性。
5. **ID生成策略**:每个实体类通常都有一个主键字段,Hibernate提供了多种ID生成策略,如Identity、Sequence、Table、UUID等,以适应不同数据库系统的主键生成需求。 6. **注解(Annotations)**:Hibernate使用...
3. **代码生成模板**:生成器通常支持自定义模板,用户可以根据需求调整生成的实体类样式,比如是否生成注释、是否使用Lombok库简化代码等。 4. **注解驱动编程**:在生成的实体类中,可能会使用ORM框架提供的注解...