StackAsk is a community where developers ask questions, share answers and learn from each others real-world experience, so every solved problem helps the next person who runs into it.
<span><span>class</span> <span>Migrator</span> </span>{ <span>private</span> SqlServerRepository sqlServerRepository; <span>private</span> MariaDBRepository mariaDBRepository; <span>private</span> MigrateHistoryRepository migrateHistoryRepository; <span><span>public</span> <span>void</span> <span>migrate</span><span>()</span> </span>{ Thread newThread = <span>new</span> Thread(() -> { <span>long</span> lastId = migrateHistoryRepository.getLastMigratedId(); <span>while</span> (<span>true</span>) { List<Entity> entities = sqlServerRepository.findByIdGt(lastId); <span>if</span> (entities.isEmpty()) { <span>break</span>; } mariaDBRepository.save(entities); lastId = entities.get(entities.size() - <span>1</span>).getId(); } }); newThread.start(); } } <span><span>interface</span> <span>MigrateHistoryRepository</span> </span>{ <span><span>void</span> <span>saveLastMigratedId</span><span>(<span>long</span> lastMigratedId)</span></span>; <span><span>long</span> <span>getLastMigratedId</span><span>()</span></span>; } <span><span>interface</span> <span>SqlServerRepository</span> </span>{ <span>@EzyQuery</span>(<span>"SELECT e FROM Entity e WHERE e.id > ?0"</span>) <span>List<Entity> <span>findByIdGt</span><span>(<span>long</span> idExclusive)</span></span>; } <span><span>interface</span> <span>MariaDBRepository</span> </span>{ <span><span>void</span> <span>save</span><span>(Entity entity)</span></span>; <span><span>void</span> <span>save</span><span>(List<Entity> entities)</span></span>; } <span>@Data</span> <span><span>class</span> <span>Entity</span> </span>{ <span>private</span> <span>long</span> id; }
2.2K Point(s)
1.2K Point(s)
313 Point(s)
178 Point(s)
138 Point(s)
Input your email to receive reset password link, or if you remember your password, you can click