java - JPA 在应用程序启动时填充数据

标签 java spring hibernate jpa

我正在开发一种机制,用于在 JPA 启动时将数据加载到数据库中。我们在 JPA/Hibernate 中使用代码优先方法,因此 Hibernate 实际上在每次应用程序启动时生成架构。更重要的是,我只希望当 Activity 配置文件为“dev”时发生这种情况,但我认为我走在正确的轨道上。我已经看到使用 bean 来执行此操作的建议,但我认为我不太明白。

这是我到目前为止的代码。

@Configuration
@Profile("dev")
public class DataInitializer {

    @Autowired
    UserService userService;

    @Autowired
    UserRepository userRepository;

    @Autowired
    PasswordEncoder passwordEncoder;

    @Bean
    public DataInitializer dataInitializer() {

        User user = userRepository.findByUserName("admin");
        if (user == null) {
            User newUser = new User();
            newUser.setUserName("admin");
            newUser.setEmail("admin@app.com");
            newUser.setFirstName("Application");
            newUser.setLastName("Admin");
            newUser.setPassword(passwordEncoder.encode("password"));
            userRepository.save(newUser);
        }
    }
}

最佳答案

不确定这是否是最好的方法,但我能够使用以下代码使其工作。

@Component
@Profile("dev")
public class ApplicationStartup implements ApplicationListener<ContextRefreshedEvent> {

    @Autowired
    private UserRepository userRepository;

    @Autowired
    PasswordEncoder passwordEncoder;

    @Override
    public void onApplicationEvent(final ContextRefreshedEvent event) {
        User user = new User();
        user.setFirstName("Test");
        user.setLastName("User");
        user.setEmail("email@google.com");
        user.setUserName("admin");
        user.setPassword(passwordEncoder.encode("PASSWORD"));
        userRepository.save(user);
    }
}

关于java - JPA 在应用程序启动时填充数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29330350/

相关文章:

java - 如何在Spring中正确终止 Activity 的套接字连接?

java - 当 @PathVariable 是字符串时,Spring Controller 测试失败并返回 404

java - 查询结果上的transformTuple和For循环之间的区别 - Hibernate

java - IntelliJ 添加持久性支持

java - 无法解析方法 setCookieHandler (java.net.CookieManger

java - 从 JTextArea 清除附加文本

java - 如何在 Servlet.init() 中注册 JSF 1.2 PhaseListener?

java - 如何获取单链表来对十六进制数字进行排序

java - Spring 事务 xml 模式

hibernate - Hibernate 如何决定更新/插入/删除的顺序