Hibernate只填充一个表

时间:2014-02-19 05:48:47

标签: java database hibernate pojo

在我的项目中我使用xml(而不是Annotations)将数据库映射到类,我已将两个表映射到一个类,如下所示。

<hibernate-mapping>
  <class name="com.fg.fixtransbridge.model.BookStatistics"
    entity-name="BookStatistics" table="book_statistics">       
  </class>

  <class name="com.fg.fixtransbridge.model.BookStatistics"
    entity-name="BookStatisticsHistory" table="book_statistics_copy">
  </class>
</hibernate-mapping>  

当我尝试一次向两个表添加数据时,只会填充 book_statistics 表。这是因为我称之为第1次

  

b 是一个BookStatistics instansce,它充满了数据

    session.saveOrUpdate("BookStatistics", b);
    session.saveOrUpdate("BookStatisticsHistory", b);

如果我调用 session.saveOrUpdate(“BookStatisticsHistory”,b) 1st,那么只有另一个表被填充。

    SessionFactory sessionFactory;
    ServiceRegistry serviceRegistry;

    Configuration configuration = new Configuration();
    configuration.configure();
    serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
    sessionFactory = configuration.buildSessionFactory(serviceRegistry);

    Session session = sessionFactory.openSession();

    session.beginTransaction();
    session.saveOrUpdate("BookStatistics", b);
    session.saveOrUpdate("BookStatisticsHistory", b);     
    session.getTransaction().commit();

有没有办法用单一服务填充这两个表。提前致谢

1 个答案:

答案 0 :(得分:0)

您可以使用两个会话来完成此操作。等,

Session session1 = sessionFactory.openSession();
Session session2 = sessionFactory.openSession();

但我认为这不是很好的做法。无论如何,在一个DAO中不需要两个表。这也不是一个好习惯。

  

所以我为这两个表创建了两个DAO并执行了我的 CRUD(创建,   读取,更新,删除)那里的操作并使用一个服务来调用   展台。

为了有效性,我 自动连接 会话工厂。否则,当它尝试执行任何CRUD操作时,它每次都会创建一个新的会话工厂,这会消耗大量的时间和资源。