Como utilizar metodos transicionais Spring em java

Sou leigo em java e não to conseguindo entender como fazer esse exercicio.Alguem poderia me ajudar com esse exercicio

1)Considere a seguinte classe de domínio e o respectivo serviço:
package domain;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Version;

@Entity
public class User implements Serializable {

@Id
@GeneratedValue
Integer id;

@Version
Integer version;

String name;

String pass;

public Integer getId() {
	return id;
}

public String getName() {
	return name;
}

public String getPass() {
	return pass;
}

public Integer getVersion() {
	return version;
}

public void setId(final Integer id) {
	this.id = id;
}

public void setName(final String name) {
	this.name = name;
}

public void setPass(final String pass) {
	this.pass = pass;
}

public void setVersion(final Integer version) {
	this.version = version;
}

}

package services;

import domain.User;

public interface UserService {

User encontrarPorId(Integer id);

User encontrarPorLogin(String login);

void salvar(User user);

void atualizarSenha(Integer id,String novaSenha);

void atualizar(User user);	

}

a)Codifique as classes como especificado e crie a implementação da interface em um projeto separado. A implementaçãod deverá ser feita utilizando hibernate e todos seus métodos deverão ser transacionais.

Olá,
Pelo que seu exercicio diz você terá que ter uma transação a partir do seu metodo de serviço, com isso se você chamar um DAO ou N DAOs se um dos metodos gerar um erro
todas as operações anteriores deverão ser desfeitas.

No Spring isso funcioná através de um advice que faz a propagação desta transação entre as camadas da sua aplicação, com isso se você adicionar no seu metodo de serviço ou na Classe
um @Transacional quando alguém chamar esse serviço o Spring irá iniciar uma transação ali e irá propaga-la para o DAO. Quando o metodo de serviço finalizar esse advice do Spring irá
verificar se se houve alguma exception, se sim, ele irá realizar um rollback, senão irá comitar.

Seu projeto já esta configurado usando o Spring!?

abraço!

mmaico ,eu já adicionei a jar do spring no eclipse.

Teria como dar um exemplo prático de como seria isso,pois ainda não estou entendendo bem de como fazer?

Obrigado.

A primeira coisa que você tem que fazer é configurar o seu data source, é neste momento que você dirá ao Spring qual o orm que você irá usar na sua aplicação, segue:

Arquivo datasource-context.xml

       <?xml  version="1.0" encoding="UTF-8"?>
   <beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jee="http://www.springframework.org/schema/jee"
	xmlns:lang="http://www.springframework.org/schema/lang"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
		http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
		http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
		<property name="driverClass" value="DRIVE DO BANCO" />
		<property name="jdbcUrl" value="URL PARA O BANCO" />
		<property name="user" value="USUARIO" />
		<property name="password" value="SENHA"/>
		<property name="minPoolSize" value="5" />
		
	</bean>

	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />

		<property name="configurationClass">
			<value>org.hibernate.cfg.AnnotationConfiguration</value>
		</property>

		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">DIALETO</prop>
				<prop key="hibernate.show_sql">false</prop>
				<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
				<prop key="hibernate.query.substitutions">true</prop>
				<prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
				<prop key="hibernate.jdbc.batch_size">0</prop>
				<prop key="hibernate.cache.use_second_level_cache">false</prop>
				<prop key="hibernate.cache.use_query_cache">false</prop>
				<prop key="hibernate.connection.autoReconnect">true</prop>

			</props>
		</property>
	</bean>

	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>	

	<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
		<property name="transactionManager" ref="transactionManager"/>
	</bean>

	<tx:annotation-driven/>

     </beans>

Esse arquivo deve ser carregado no seu web.xml, após ele você deve criar o seu application context onde você colocará definições de pacote a ser scaneados etc etc.

Caso o que eu tenha falado não seja o suficiente, você pode dar uma olhada neste screencast:
http://www.devmedia.com.br/curso-online-introducao-ao-spring-framework-parte-19-spring-e-jpa/13162

E se tiver problemas ou dúvidas posta que a gente vai resolvendo, porque fazer toda a configuração do seu projeto por aqui a gente irá levar um bom tempo fazendo isso! :shock:

abraço!

mmaico, tem como dar uma olhada no que eu já fiz??
http://www.4shared.com/rar/FNHsszzM/exercicio_2.html?

Como seria esse application context?

Eu conheço esse exercício, kkkkkkkkkk!!!

[quote=jeff66]mmaico, tem como dar uma olhada no que eu já fiz??
http://www.4shared.com/rar/FNHsszzM/exercicio_2.html?

Como seria esse application context?[/quote]

Esta mostrando uma pagina em branco :shock: