以下のコード スニペットに示すようにorg.springframework.orm.hibernate3.HibernateTemplate、DAO のデータ アクセスに を使用しています。この場合、休止状態とJPAを混在させているということですか?
これまでに、データ アクセス メカニズムに JPA と Hibernate の両方を混在させてはならないことを読みました。純粋な hibernate( org.hibernate.*API) または JPA の Hibernate 実装 ( java.persistance.* API) に常に固執する必要があります。しかし、休止状態の統合では、純粋な休止状態または JPA を使用していませんか? それは正しいですか、それとも概念を誤解していましたか。
基本的に、春に提供される休止状態の統合スタイルがデータアクセスのベストプラクティスであることを知りたいですか?
@Repository
@Transactional
public class DAOImpl implements DAO {
private Log logger = LogFactory.getLog(this.getClass());
protected org.springframework.orm.hibernate3.HibernateTemplate
template = null;
@Resource(name = "abcSessionFactory")
protected SessionFactory sessionFactory;
@Autowired
public void init(SessionFactory sessionFactory) {
setSessionFactory(sessionFactory);
}
public void setSessionFactory(SessionFactory sessionFactory) {
template = new org.springframework.orm.hibernate3.
HibernateTemplate(sessionFactory);
}
}
以下は私のcontex.xml構成です
<bean id="abcSessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="abcDataSource" />
<property name="packagesToScan"
value="xxxx" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.connection.driver_class">${hibernate.connection.driver.class}</prop>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.current_session_context_class">${hibernate.current_session_context_class}</prop>
<prop key="hibernate.cache.use_second_level_cache">false</prop>
<prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory
</prop>
<prop key="hibernate.validator.apply_to_ddl">false</prop>
<prop key="hibernate.validator.autoregister_listeners">false</prop>
</props>
</property>
</bean>