Hallo,
ich versuche verzweifelt JDO zu verstehen und zu nutzen, leider falle ich von einem ERROR oder Exception in die nächste. Ich habe schon etliche Tutorials und Beispiele probiert jedoch komme ich nicht mehr weiter und hoffe auf Eure Hilfe.
Für jeden Tipp oder Hilfe wäre ich sehr dankbar.
Ich nutze Eclipse als IDEund habe DataNucleus Plugin installiert mit hoffentlich allen zusätzlichen jars.
Um meine derzeitige Problematik besser darstellen zu können bediene ich mich einem Beispiel im Internet.
Folgende drei Klassen bestehen:
UserInfo_Test.java
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
@PersistenceCapable(identityType=IdentityType.APPLICATION)
public class UserInfo_Test
{
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private String username ;
@Persistent
private String password ;
@Persistent
private String emailAddress ;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmailAddress() {
return emailAddress;
}
public void setEmailAddress(String emailAddress) {
this.emailAddress = emailAddress;
}
public UserInfo_Test(String username, String password, String emailAddress) {
super();
this.username = username;
this.password = password;
this.emailAddress = emailAddress;
}
public UserInfo_Test() {
super();
}
}
TestJDO.java
import javax.jdo.PersistenceManager;
import javax.jdo.Query;
import javax.jdo.datastore.JDOConnection;
import org.datanucleus.store.rdbms.query.ForwardQueryResult;
public class TestJDO
{
public static void main(String[] args)
{
System.out.println("JDO Testing Hello");
UserInfo_Test user = new UserInfo_Test("hello244345r","world","something@something.com");
PersistenceManager manager = PMF.getInstance().getPersistenceManager();
manager.makePersistent(user);
JDOConnection connection = manager.getDataStoreConnection();
Object conn = connection.getNativeConnection();
Query query = manager.newQuery(UserInfo_Test.class);
ForwardQueryResult data = (ForwardQueryResult)query.execute();
for(int i = 0 ; i < data.size() ; i++ )
{
UserInfo_Test info = (UserInfo_Test) data.get(i);
System.out.println(info.getUsername());
}
}
}
PMF.java
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManagerFactory;
public class PMF {
private static PersistenceManagerFactory factory ;
protected PMF(){}
public static PersistenceManagerFactory getInstance()
{
if(factory==null)
try {
factory=JDOHelper.getPersistenceManagerFactory(new FileInputStream("datanucleus.properties"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return factory ;
}
}
wenn ich dann TestJDO ausführe kommt folgende Exception:
Exception in thread "main" org.datanucleus.api.jdo.exceptions.ClassNotPersistenceCapableException: The class "UserInfo_Test" is not persistable. This means that it either hasnt been enhanced, or that the enhanced version of the file is not in the CLASSPATH (or is hidden by an unenhanced version), or the Meta-Data/annotations for the class are not found.
Ok also müsste ich noch das Enhancement durchführen, nach längerer Recherche verstehe ich immer noch nicht was damit gemeint ist.
Auf jedenfall bringt DataNucleus ein EnhancerTool mit sobald ich dieses ausführe kamm die Fehlermeldung das ASM ausgewählt wäre und das jar fehlt, diese habe ich heruntergeladen.
Nun bekomme ich folgende Meldung wenn ich das Tool ausführe:
An error occured for ClassEnhancer "ASM" when trying to call the method "org.datanucleus.enhancer.asm.ASMClassEnhancer" on class "getClassNameForFileName" : null
und hier komme ich nicht weiter.
verzeit mir meine Unwissenheit zu JDO aber eine gute Dokumentation habe ich gefunden https://db.apache.org/jdo/
aber keine funktionierenden Beispiele um die Funktion zu verstehen.
Gruß Air
ich versuche verzweifelt JDO zu verstehen und zu nutzen, leider falle ich von einem ERROR oder Exception in die nächste. Ich habe schon etliche Tutorials und Beispiele probiert jedoch komme ich nicht mehr weiter und hoffe auf Eure Hilfe.
Für jeden Tipp oder Hilfe wäre ich sehr dankbar.
Ich nutze Eclipse als IDEund habe DataNucleus Plugin installiert mit hoffentlich allen zusätzlichen jars.
Um meine derzeitige Problematik besser darstellen zu können bediene ich mich einem Beispiel im Internet.
Folgende drei Klassen bestehen:
UserInfo_Test.java
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
@PersistenceCapable(identityType=IdentityType.APPLICATION)
public class UserInfo_Test
{
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private String username ;
@Persistent
private String password ;
@Persistent
private String emailAddress ;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmailAddress() {
return emailAddress;
}
public void setEmailAddress(String emailAddress) {
this.emailAddress = emailAddress;
}
public UserInfo_Test(String username, String password, String emailAddress) {
super();
this.username = username;
this.password = password;
this.emailAddress = emailAddress;
}
public UserInfo_Test() {
super();
}
}
TestJDO.java
import javax.jdo.PersistenceManager;
import javax.jdo.Query;
import javax.jdo.datastore.JDOConnection;
import org.datanucleus.store.rdbms.query.ForwardQueryResult;
public class TestJDO
{
public static void main(String[] args)
{
System.out.println("JDO Testing Hello");
UserInfo_Test user = new UserInfo_Test("hello244345r","world","something@something.com");
PersistenceManager manager = PMF.getInstance().getPersistenceManager();
manager.makePersistent(user);
JDOConnection connection = manager.getDataStoreConnection();
Object conn = connection.getNativeConnection();
Query query = manager.newQuery(UserInfo_Test.class);
ForwardQueryResult data = (ForwardQueryResult)query.execute();
for(int i = 0 ; i < data.size() ; i++ )
{
UserInfo_Test info = (UserInfo_Test) data.get(i);
System.out.println(info.getUsername());
}
}
}
PMF.java
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManagerFactory;
public class PMF {
private static PersistenceManagerFactory factory ;
protected PMF(){}
public static PersistenceManagerFactory getInstance()
{
if(factory==null)
try {
factory=JDOHelper.getPersistenceManagerFactory(new FileInputStream("datanucleus.properties"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return factory ;
}
}
wenn ich dann TestJDO ausführe kommt folgende Exception:
Exception in thread "main" org.datanucleus.api.jdo.exceptions.ClassNotPersistenceCapableException: The class "UserInfo_Test" is not persistable. This means that it either hasnt been enhanced, or that the enhanced version of the file is not in the CLASSPATH (or is hidden by an unenhanced version), or the Meta-Data/annotations for the class are not found.
Ok also müsste ich noch das Enhancement durchführen, nach längerer Recherche verstehe ich immer noch nicht was damit gemeint ist.
Auf jedenfall bringt DataNucleus ein EnhancerTool mit sobald ich dieses ausführe kamm die Fehlermeldung das ASM ausgewählt wäre und das jar fehlt, diese habe ich heruntergeladen.
Nun bekomme ich folgende Meldung wenn ich das Tool ausführe:
An error occured for ClassEnhancer "ASM" when trying to call the method "org.datanucleus.enhancer.asm.ASMClassEnhancer" on class "getClassNameForFileName" : null
und hier komme ich nicht weiter.
verzeit mir meine Unwissenheit zu JDO aber eine gute Dokumentation habe ich gefunden https://db.apache.org/jdo/
aber keine funktionierenden Beispiele um die Funktion zu verstehen.
Gruß Air