Rumah > Soal Jawab > teks badan
Java项目开发过程中,有for循环,逐条处理10万条数据。由于逐条处理数据的时候,要更新6~7张表,希望,每次在执行for循环的时候,都对数据库做一次提交。
1.我的处理方法 是,将for循环中的方法提出来,然后,使用spring的手动开启事务的方法,在提取出来的方法上,配置了@Transactional(propagation = Propagation.REQUIRES_NEW),但是测试了几次,都没有效果。
2.由于提出处理的方法中,也有更新表,调用外部系统接口,查询表的操作。所以我想把有关联关系的操作 配置 在一个事务中,然后 外层的事务配置和内层的事务配置 如何来管理?
希望 得到各位的解答,谢谢!!!
高洛峰2017-04-17 17:47:26
Jika subjek menggunakan spring untuk melakukan transaksi deklaratif, kaedah memanggil kaedah dalaman secara terus tidak akan pergi ke kelas proksi (iaitu, ia tidak akan pergi ke aspek), jadi @Transactional
mungkin tidak sah
Adakah antara muka luaran di sini dipanggil melalui kaedah RPC Jika ia dipanggil melalui RPC, adalah disyorkan agar subjek tidak memasukkannya terus ke dalam transaksi, kerana jika tamat masa berlaku, transaksi yang panjang akan berlaku, dan jika concurrency Jika ia terlalu besar, bilangan sambungan pangkalan data akan kehabisan dan sistem akan berada dalam keadaan tidak tersedia.
PHP中文网2017-04-17 17:47:26
Letakkan gelung for dalam lapisan pengawal atau lapisan bukan perkhidmatan, dan kemudian konfigurasikan transaksi pada kaedah lapisan perkhidmatan, supaya boleh diserahkan sekali setiap kali ia dipanggil.