【问题标题】:Insert into database after spring hibernate sessionfactory is created在创建spring hibernate sessionfactory后插入数据库
【发布时间】:2012-12-20 05:38:08
【问题描述】:

我想在spring hibernate的SessionFactory创建后在数据库表中插入一些数据。

我有一个CUSTOMER 表,如果Customer 不存在,我想在该表中插入一个特定的Customer

这是SessionFactory的配置:

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
        </props>
    </property>
    <property name="packagesToScan" value="com.edfx.adb.persist.entity" />
    <property name="entityInterceptor" ref="entityInterceptor" />
</bean>

我知道有一个选项hibernate.hbm2ddl.import_files,我们可以从中提到一个sql文件,查询将在SessionFactory初始化时执行。但我不想这样。

我还发现我们可以将ServletContextListener 用于这种目的,但我不确定这是实现我想要的好方法。因为我的理解是在部署war文件后,当第一个用户点击应用程序时,监听器将被初始化。因此,如果我有一个运行 Customer 的调度程序,并且如果调度程序在任何用户点击应用程序之前执行,那么调度程序将找不到需要插入的数据。

任何指针都会对我很有帮助。

【问题讨论】:

  • 只需创建另一个方法并在其中注入会话对象以调用 saveOrUpdate 或 save( 将返回唯一的主键),如果更新成功,则将会话添加到 sessionFactory 级别缓存(2级)缓存..也刷新你的会话工厂..你应该很好......
  • @KDjava 我不清楚你的建议。通过创建方法是什么意思?在哪里创建方法?您是否建议创建一个 bean 并在该 bean 中定义一个方法并调用该方法?另外剩下的部分不是很清楚,添加session,刷新sessionFactory。为什么我需要这些?

标签: java database spring-3 sessionfactory hibernate-4.x


【解决方案1】:

您可以根据需要扩展org.springframework.orm.hibernate4.LocalSessionFactoryBean 并覆盖buildSessionFactory() 方法。

【讨论】:

猜你喜欢
  • 2011-03-25
  • 2015-05-02
  • 1970-01-01
  • 2021-02-13
  • 2011-12-28
  • 2018-03-22
  • 1970-01-01
  • 2019-08-16
  • 1970-01-01
相关资源
最近更新 更多