私はJavaのリーダーを持っています:そして、リーダー(Reader read)
は1'000.000行のファイルからのものです
そして、データベースに各行を保存する必要があります。リーダーを次のように読んでいます。
int data = read.read();
String line = "";
while (data != -1) {
char dataChar = (char) data;
data = read.read();
if (dataChar != '\n') {
line = line + dataChar;
} else {
i++;
showline(line);
line = "";
}
}
次に、各行で DAO を呼び出しています。
private static void showline(String line) {
try {
if (line.startsWith(prefix)) {
line = line.substring(prefix.length());
}
ms = new Msisdn(Long.parseLong(line, 10), idList);
ListDAO.createMsisdn(ms);
} catch (Exception e) {
}
}
そして私のDAOは:
public static void createMsisdn(Msisdn msisdn) {
EntityManager e = DBManager.createEM();
try {
createMsisdn(msisdn, e);
} finally {
if (e != null) {
e.close();
}
}
}
public static void createMsisdn(Msisdn msisdn, EntityManager em) {
em.getTransaction().begin();
em.persist(msisdn);
em.getTransaction().commit();
}
しかし、私の問題は、1'000.000 行のファイルを完了するのに約 1 時間 30 分かかることです。どうすれば速くなりますか?
(私の主な問題は、DAO を 1'000.000 回呼び出すことです。これは非常に遅いためです。while の方が高速であるため、DAO を呼び出さない場合の時間は 1 分未満ですが、DAO を呼び出すと時間は 2 になります。時間)