DAOのHibernate用の実装

package org.asyrinx.joey.gen.sample1.entity.dao.hibernate;

import java.io.Serializable;
import java.sql.Connection;
import java.util.List;

import org.asyrinx.brownie.core.query.BasicSelectBuilder;
import org.asyrinx.brownie.core.query.Select;
import org.asyrinx.brownie.core.query.SelectBuilder;
import org.asyrinx.brownie.core.query.StatementType;
import org.asyrinx.brownie.core.query.exp.IExpression;
import org.seasar.hibernate.S2SessionFactory;

import org.asyrinx.joey.gen.sample1.entity.dao.*;
import org.asyrinx.joey.gen.sample1.entity.entity.*;

/**
 * 
 * [Sat Nov 27 00:03:31 JST 2004]
 */
public class PartyDaoImpl implements PartyDao {

    /**
     *  
     */
    public PartyDaoImpl(S2SessionFactory sessionFactory) {
        super();
        this.sessionFactory = sessionFactory;
    }

    protected final S2SessionFactory sessionFactory;

    /*
     * (non-Javadoc)
     * 
     * @see org.asyrinx.joey.gen.sample1.entity.dao.PartyDao#delete(org.asyrinx.joey.gen.sample1.entity.entity.Party)
     */
    public void delete(Party obj) {
        sessionFactory.getSession().delete(obj);
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.asyrinx.joey.gen.sample1.entity.dao.PartyDao#save(org.asyrinx.joey.gen.sample1.entity.entity.Party)
     */
    public void save(Party obj) {
        sessionFactory.getSession().saveOrUpdate(obj);
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.asyrinx.joey.gen.sample1.entity.dao.PartyDao#load(org.asyrinx.joey.gen.sample1.entity.entity.Party)
     */
    public Party load(Serializable key) {
        if (key == null)
            return null;
        return (Party) sessionFactory.getSession().load(Party.class, key);
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.asyrinx.joey.gen.sample1.entity.dao.PartyDao#select(org.asyrinx.joey.gen.sample1.entity.entity.Party)
     */
    public List select(IExpression expression) {
        final Select select = new Select();
        select.getWhere().add(expression);
        if (select.getFroms().isEmpty())
            select.getFroms().add(PartyDao.PARTY.alias());
        final SelectBuilder builder = new BasicSelectBuilder(StatementType.HQL);
        return sessionFactory.getSession().find(builder.buildSelect(select));
    }

    public Connection getConnection() {
        return sessionFactory.getSession().connection();
    }

}