package org.castor.jpa.scenario.named_queries;
import org.castor.spring.orm.CastorCallback;
import org.castor.spring.orm.support.CastorDaoSupport;
import org.exolab.castor.jdo.Database;
import org.exolab.castor.jdo.OQLQuery;
import org.exolab.castor.jdo.PersistenceException;
import org.exolab.castor.jdo.QueryResults;
public class PersonCastorDao extends CastorDaoSupport implements PersonDao {
public void save(final Person person) {
this.getCastorTemplate().create(person);
}
public Person get(final long id) {
return (Person) this.getCastorTemplate().load(Person.class,
new Long(id));
}
public void update(final Person person) {
this.getCastorTemplate().update(person);
}
public void delete(final Person person) {
this.getCastorTemplate().remove(person);
}
public Person getByName(final String name) {
return (Person) this.getCastorTemplate().execute(new CastorCallback() {
public Object doInCastor(final Database db)
throws PersistenceException {
db.begin();
final OQLQuery query = db.getNamedQuery("findPersonByName");
query.bind(name);
final QueryResults queryResults = query.execute();
final Person queriedPerson = (Person) queryResults.next();
queryResults.close();
db.commit();
return queriedPerson;
}
});
}
}