wiki:Spring

Version 4 (modified by erikvaningen, 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.

Note: See TracWiki for help on using the wiki.