「spring 2.0技術マニュアル」読書ノート9-springとhibernateはDAOの書き方を統合して、Hbernate Templateは解析します.


springとhibernateを結合した後、springから提供されたorg.spring frame ewark.orm.hibernate 3.Hiberg Templateまたはorg.spring frame ork.orm.hibernate 3.Hybernete DaoSupportを使用してDAOクラスを実現することができます.
Hbernature Templateを利用する
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
public class UserDAO implements IUserDAO{
	private HibernateTemplate hibernateTemplate;
	
	public void setSessionFactory(SessionFactory sessionFactory){
		hibernateTemplate=new HibernateTemplate(sessionFactory);
	}
	public void insert(User user){
		hibernateTemplate.save(user);
	}
	
	public User find(Integer id){
		User user=(User)hibernateTemplate.get(User.class, id);
		return user;
	}
}
ハイベルナーDaoSupportを継承します.
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class UserDAO extends HibernateDaoSupport implements IUserDAO{
	
	public void insert(User user){
		getHibernateTemplate().save(user);
	}
	
	public User find(Integer id){
		User user=(User)getHibernateTemplate().get(User.class, id);
		return user;
	}
}
ヒベルナタDaoSupportを継承する利点は、Session Factory、Hybernature Templateリソースを管理する作業を省くことができます.Session Factoryのインスタンスを注入すればいいです.Springでは、「トランザクション毎にSessionを開く」という戦略を採用し、DBアクセス性能を自動的に向上させます.
全体を見渡してみると、Hibernature TemplateはDAOの簡便な実現に重要です.
構造方法:Hbernate Template()、Hbernature Template(Session Factory)、Hbernate Template(Session Factory、bollan allCreate).
操作方法:void delete(Object entity):指定された恒久化クラスのインスタンスを削除する.void deleteAll(Collection entities):集合内部のすべての持続化クラスの例を削除する.
List find(String queryString)、List find(String queryString、Object value)、List find(final String queryString、final Object…values):クエリー.valueはパラメータ値であり、sql文のパラメータ位置(0,1,2...)によって決定されます.
List findByNamedParam(String queryString、String paramName、Object value)、List findByNamedParam(final String queryString、final String[]paramNames、final Object[]values):パラメータ名に基づいてクエリーを行います.
Object get(String entityName,Serializable ID):主キーに従って特定の耐久性クラスをロードする例.
Serializable save(final Object entity):新しいインスタンスを保存します.void udate(Object entity):例を更新して、entityが恒久化状態であることを要求します.void saveOrUpdate(final Object entity):インスタンス状態に応じて、保存または更新を選択する.
void set MaxResults:最大行数を設定し、改ページのサイズを設定します.