Version 4 (modified by 16 years ago) ( diff ) | ,
---|
Option 1 Example of a Dao or Service object:
@Repository @Transactional public class ErikExampleDao { @Autowired private SessionFactory sessionFactory; void saveErikExampleDomainClass(ErikExampleDomain erikExampleDomain){ sessionFactory.getCurrentSession().save(erikExampleDomain)
This configuaration needed:
<bean id="erikExampleDao" class="org.geonetwork.dao.ebxml.ErikExampleDao">
Option 2
public class ExampleDao extends HibernateDaoSupport { void saveErikExampleDomain(ErikExampleDomain erikExampleDomain ) { this.getHibernateTemplate().save(erikExampleDomain ); }
This configuaration needed:
<bean id="erikExampleDao" class="org.geonetwork.dao.ebxml.ErikExampleDao"> <property name="sessionFactory" ref="sessionFactory" /> </bean>
Chosen Option 1. This option is chosen because (1) one line less of configuration (2) It is working directly with the sessionFactory instead of a Facade like HibernateTemplate. Working with a template can have advantages. However in case of Hibernate, Spring has little to add because Hibernate is a very mature package. (3) SessionFactory is directly available. This might be necessary in cases of more advanced use of Hibernate.
In option 1 you see as well the annotations @Transactional and @Repository. @Transaction means that every method in this Dao is considered as a transaction. @Repository has to do with the way Spring handles exceptions.