Bunu yapmak için "uygun" bir şey yoktur, bu JPA veya JDO veya başka herhangi bir ORM'nin amaçladığı şey değildir, düz JDBC en iyi alternatifiniz olacaktır, çünkü onu az sayıda satırı geri getirecek şekilde yapılandırabilirsiniz. bir zaman ve kullanıldıkça temizleyin, bu nedenle sunucu tarafı imleçleri mevcuttur.
ORM araçları toplu işleme için tasarlanmamıştır, nesneleri değiştirmenize ve verilerin depolandığı RDBMS'yi olabildiğince şeffaf hale getirmeye çalışmanıza izin verecek şekilde tasarlanmıştır, çoğu şeffaf kısımda en azından bir dereceye kadar başarısız olur. Bu ölçekte, yüzbinlerce satırı (Nesneler), herhangi bir ORM ile çok daha azını işlemenin ve nesne somutlaştırma ek yükü nedeniyle makul bir süre içinde basit ve basit bir şekilde çalıştırmanın bir yolu yoktur.
Uygun aracı kullanın. Düz JDBC ve Depolanan Prosedürler kesinlikle 2011'de, özellikle de bu ORM çerçevelerine kıyasla daha iyi yaptıkları şeylerde bir yere sahiptir.
List<Integer>
Nasıl yaparsanız yapın , bir milyondan fazlasını, hatta basit bir şeye çekmek çok verimli olmayacak. İstediğiniz şeyi yapmanın doğru yolu, basit SELECT id FROM table
, SERVER SIDE
(satıcıya bağlı) olarak ayarlanmış ve imleç FORWARD_ONLY READ-ONLY
bunun üzerinde ve üzerinde yineleme yapmaktır .
Her biri ile bir web sunucusunu arayarak işlemek için gerçekten milyonlarca kimliği çekiyorsanız, bunun herhangi bir makul sürede çalışması için bazı eşzamanlı işlemler de yapmanız gerekecektir. Bir JDBC imleci ile çekip bunlardan birkaçını bir ConcurrentLinkedQueue'ya bir seferde yerleştirmek ve küçük bir iş parçacığı havuzuna (# CPU / Cores + 1) sahip olmak, görevinizi herhangi bir makinede tamamlamanın tek yoludur " zaten belleğinizin tükendiğini göz önünde bulundurarak normal "RAM miktarı.
Bu yanıtı da görün .