ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 10.9\. 在两个不同数据库间复制对象 偶尔会用到不重新生成持久化标识(identifier),将持久实例以及其关联的实例持久到不同的数据库中的操作。 ``` //retrieve a cat from one database Session session1 = factory1.openSession(); Transaction tx1 = session1.beginTransaction(); Cat cat = session1.get(Cat.class, catId); tx1.commit(); session1.close(); //reconcile with a second database Session session2 = factory2.openSession(); Transaction tx2 = session2.beginTransaction(); session2.replicate(cat, ReplicationMode.LATEST_VERSION); tx2.commit(); session2.close(); ``` `ReplicationMode`决定在和数据库中已存在记录由冲突时,`replicate()`如何处理。 * `ReplicationMode.IGNORE` - 忽略它 * `ReplicationMode.OVERWRITE` - 覆盖相同的行 * `ReplicationMode.EXCEPTION` - 抛出异常 * `ReplicationMode.LATEST_VERSION` - 如果当前的版本较新,则覆盖,否则忽略 这个功能的用途包括使录入的数据在不同数据库中一致,产品升级时升级系统配置信息,回滚non-ACID事务中的修改等等。 (译注,non-ACID,非ACID;ACID,Atomic,Consistent,Isolated and Durable的缩写)