使用HIbernate默认数据集进行泽西服务初始化

时间:2013-11-04 21:29:41

标签: java spring hibernate rest jersey

我有一个由Hibernate,Spring和Jersey组成的堆栈。

虽然很多东西都是RESTFUL,但并不是我们应用程序中的所有内容都是(并且由于各种原因而无法实现。我意识到我在某些地方打破了REST最佳实践。)

我需要做两件事,无法弄清楚如何让两者都发生。

在我的application-context.xml中我有以下

  <!-- Configure the entity manager factory bean -->
  <bean id="entityManagerFactory" 
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter"/>
    <property name="packagesToScan" value="com.mystuff.model"/>
     <property name="jpaProperties">
      <props>
        <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
        <prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>
       <prop key="hibernate.format_sql">true</prop>
        <prop key="hibernate.hbm2ddl.auto">create</prop>
        <prop key="hibernate.show_sql">true</prop>
        <prop key="hibernate.hbm2ddl.import_files">data.sql</prop>
      </props>
    </property>

这通常会将一些hibernate数据加载到数据库中。 但是,我还需要初始化服务中的一些内存结构。

尽管调用了super.initiate(),我尝试让我的服务扩展ServletContainer并覆盖启动的那一刻 或者实现AbstractResourceModelListener然后提供onLoaded(AbstractResourceModelContext modelContext) 我得到空指针,因为data.sql提供的初始数据不存在。

我怎样才能正确执行此操作,以便我加载data.sql并在加载服务时执行一些语句?

(如果有人好奇,是的,服务是@Singleton)

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

所以,事实证明这里的正确答案是使用@PostConstruct尽管eclipse可能会给你关于限制和库的警告。我不确定为什么会出现这个警告,或者为什么它会继续工作,但是@PostConstruct是在春天不去除其他装载的方法。

(也就是说,如果你没有固定,在外面进行初始化并注入它更加RESTFUL且更好而且不需要@Singleton,但我在问题和答案中都假设它不是一个选项你出于什么原因。)