使用hibernate将Master表中的所有记录复制到Clone表

时间:2017-02-12 05:15:17

标签: java hibernate hibernate-criteria

使用SQL,我可以将数据从一个表复制到另一个镜像表。 (例如insert into TABLE_EXAMPLE_COPY select * from TABLE_EXAMPLE;。 如何使用Hibernate org.hibernate.Criteriaorg.hibernate.Queryorg.hibernate.SQLQuery执行相同的操作?

1 个答案:

答案 0 :(得分:4)

如果要在JPA或Hibernate的边界内执行该操作,最好的方法是使用Native SQL语句。

session
  .createNativeQuery( "INSERT INTO table_copy SELECT * FROM table" ).
  .executeUpdate();

其他选项包括将源表读入POJO,然后将其转换为复制表的POJO表示并保存这些行。这些问题的另一个问题是,您还会引入网络延迟和JVM开销,只是为了创建内存中的对象,对其进行转换,然后通过网络将其推回到数据库中。

上述解决方案避免了所有这些缺点,并允许数据库以其知道的最佳表现方式处理所有这些。