使用 JavaConfig 使用 Spring 应用程序的 HSQLDB 新手

Posted

技术标签:

【中文标题】使用 JavaConfig 使用 Spring 应用程序的 HSQLDB 新手【英文标题】:New to HSQLDB working with Spring Application with JavaConfig 【发布时间】:2013-04-26 14:44:15 【问题描述】:

我是 HSQLDB 的新手,并且使用 JavaConfig 使用 Spring 应用程序。我希望我的示例设置一个内存数据库(HSQLDB)并插入一行。

我想我的东西都整理好了,但我不知道在哪里创建数据库和表。

下面是我的 main.app 代码

public class MainApp


    private static final Logger LOGGER = getLogger(MainApp.class);

    @Autowired
    protected MessageService mService;

    public static void main(String[] args)
    
        ApplicationContext context = new AnnotationConfigApplicationContext(HelloWorldConfig.class);
        HelloWorld helloWorld = context.getBean(HelloWorld.class);

        LOGGER.debug("Message from HelloWorld Bean: " + helloWorld.getMessage());

        /**
         *  I removed the following line... we are now using log4j
         */
        //System.out.println(helloWorld.getMessage());

        helloWorld.setMessage("I am in Staten Island, New York");

        /**
         *  I removed the following line... we are now using log4j
         */
        //System.out.println(helloWorld.getMessage());
        LOGGER.debug("Message from HelloWorld Bean: " + helloWorld.getMessage());
    

这是我的 DatabaseConfig.class

public class DatabaseConfig


    private static final Logger LOGGER = getLogger(DatabaseConfig.class);


    @Autowired
    Environment env;

    @Bean
    public DataSource dataSource() 
        EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
        return builder.setType(EmbeddedDatabaseType.HSQL).build();
    

    @Bean
    public SessionFactory sessionFactory()
    

        LocalSessionFactoryBean factoryBean = new LocalSessionFactoryBean();
        factoryBean.setDataSource(dataSource());
        factoryBean.setHibernateProperties(getHibernateProperties());
        factoryBean.setPackagesToScan(new String[]"com.xxxx.model");

        try
        
            factoryBean.afterPropertiesSet();
         catch (IOException e)
        
            LOGGER.error(e.getMessage());
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        


        return factoryBean.getObject();
    

    @Bean
    public Properties getHibernateProperties()
    
        Properties hibernateProperties = new Properties();

        hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));
        hibernateProperties.setProperty("hibernate.show_sql", env.getProperty("hibernate.show_sql"));
        hibernateProperties.setProperty("hibernate.use_sql_comments", env.getProperty("hibernate.use_sql_comments"));
        hibernateProperties.setProperty("hibernate.format_sql", env.getProperty("hibernate.format_sql"));
        hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));

        hibernateProperties.setProperty("hibernate.generate_statistics", env.getProperty("hibernate.generate_statistics"));

        hibernateProperties.setProperty("javax.persistence.validation.mode", env.getProperty("javax.persistence.validation.mode"));

        //Audit History flags
        hibernateProperties.setProperty("org.hibernate.envers.store_data_at_delete", env.getProperty("org.hibernate.envers.store_data_at_delete"));
        hibernateProperties.setProperty("org.hibernate.envers.global_with_modified_flag", env.getProperty("org.hibernate.envers.global_with_modified_flag"));

        return hibernateProperties;
    

    @Bean
    public HibernateTransactionManager hibernateTransactionManager()
    
        HibernateTransactionManager htm = new HibernateTransactionManager();
        htm.setSessionFactory(sessionFactory());
        htm.afterPropertiesSet();
        return htm;
    

但我不知道在哪里创建数据库以及如何在项目运行之前插入我的表?

您可以在以下位置下载源代码: https://github.com/JohnathanMarkSmith/HelloSpringJavaBasedJavaConfig/issues/1

【问题讨论】:

New to HSQLDB working with Spring Application with JavaConfig. I dont see database starting up?的可能重复 【参考方案1】:

这个以前有人问过,看看Startup script to create a schema in HSQLDB

【讨论】:

我如何使用 JavaConfig 做到这一点

以上是关于使用 JavaConfig 使用 Spring 应用程序的 HSQLDB 新手的主要内容,如果未能解决你的问题,请参考以下文章

使用JavaConfig方式-Spring 基础学习

使用 javaconfig 使用 Spring Security 对身份验证进行摘要

Spring重温--Spring JavaConfig

Spring JavaConfig实例

Spring JavaConfig配置

Spring 使用javaconfig配置aop