Hallo Martin,
folgende Beispielklasse erzeugt auf 2 verschiedene Weisen Datensätze und setzt ihre Werte. Es wurde die Datenquelle pressreleases aus dem Mithras Energy Projekt genommen. Sie erzeugt die Datensätze, gibt sie allerdings nicht frei. Dies tut man am besten hinterher manuell (Hierbei muss man dann natürlich auf die Befüllung aller Pflichtfelder achten). Die nicht einkommentierte Variante setzt die Werte über das FormData-Objekt. Commited werden sollte in regelmäßigen Abständen, da sonst der Speicher vollläuft. Aber auch nicht nach jedem, das macht sich laufzeittechnisch negativ bemerkbar.
public class DatasourceTester {
public static void main(String... args)
throws MaximumNumberOfSessionsExceededException, IOException,
AuthenticationException {
Connection con = ConnectionManager.getConnection("localhost", 11111,
ConnectionManager.SOCKET_MODE, "Admin", "Admin");
con.connect();
Project pr = con.getProjectByName("Mithras Energy");
UserService us = pr.getUserService();
Language lang = pr.getMasterLanguage();
ContentStoreRoot rt = (ContentStoreRoot) us.getStore(
Store.Type.CONTENTSTORE, false);
Content2 cont = rt.getContent2ByName("pressreleases");
EntityType entityType = cont.getEntityType();
Session sess = cont.getSchema().getSession();
Entity ent = null;
/*
* for (int i = 1; i < 1001; i++) { ent =
* sess.createEntity(entityType.toString());
*
* ent.setValue("Headline_DE", "Headline " + i);
*
* ent.setValue("Subheadline_DE", "Subheadline " + i);
* System.out.println("Created Entity number " + i); if (i % 100 == 0) {
* sess.commit(); } } sess.commit();
*/
for (int i = 1; i < 1001; i++) {
ent = sess.createEntity(entityType.toString());
Dataset d = cont.getDataset(ent);
FormData fd = d.getFormData();
fd.get(lang, "cs_headline").set("Headline_" + i);
fd.get(lang, "cs_subheadline").set("Subheadline_" + i);
d.setFormData(fd);
System.out.println("Created Entity number " + i);
if (i % 100 == 0) {
sess.commit();
}
}
sess.commit();
sess.close();
con.disconnect();
}
}
Freundliche Grüße
Ismail