Spring no meu projeto

Olá, estou com problema no meu projeto em termo de persistência, e não sei como resolver mais, criei uma classe para gerar o EntityManager, outra classe para transação e uma Annotation para intercerptar efim…

tem como eu usar o Spring e simplificar todo esse processo? estou usando JSF com Primefaces.

Então, cara. O spring tem sim um módulo chamado Spring ORM, facilita bastante o processo configuração.

Vamos lá, inicialmente você importar as dependências no pom.

        <dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-orm</artifactId>
		<version>4.0.6.RELEASE</version>
	</dependency>
        <dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-core</artifactId>
		<version>4.0.6.RELEASE</version>
	</dependency>

Minha classe de configuração do hibernate:

@Configuration
@EnableTransactionManagement
public class HibernateConfiguration {

@Autowired
private Environment environment;

@Bean
public LocalSessionFactoryBean sessionFactory(){
	LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
	sessionFactory.setDataSource(dataSource());
	sessionFactory.setPackagesToScan(new String[]{"br.com.package.model"});
	sessionFactory.setHibernateProperties(hibernateProperties());
	return sessionFactory;
}

@Bean
public DataSource dataSource(){
	DriverManagerDataSource dataSource = new DriverManagerDataSource();
	dataSource.setDriverClassName('driver');
	dataSource.setUrl('url');
	dataSource.setUsername('user');
	dataSource.setPassword('pass');
	return dataSource;
}

private Properties hibernateProperties(){
	Properties prop = new Properties();
	prop.put("hibernate.dialect", 'dialect');
	prop.put("hibernate.show_sql", true);
	prop.put("hibernate.format_sql",true);
	return prop;
}

@Bean
@Autowired
public HibernateTransactionManager transactionManager(SessionFactory s){
	HibernateTransactionManager txManager = new HibernateTransactionManager();
	txManager.setSessionFactory(s);
	return txManager;
}

}

Após disso, você irá somente injetar um SessionFactory nas suas DAOs. Lembrando que elas devem ser anotadas com @Repository

Abraço.

Spring é uma ferramenta fantástica, mas você precisa entender como os componentes JavaEE funcionam, como as camadas da sua aplicação se comunicam.

No meu ver não é adicionando Spring em uma aplicação que algum tipo de mágica vai acontecer e todos os problemas vão se resolver, pelo contrario é bem capaz de mais problemas surgirem devido as configurações que embora simples nos dias de hoje também é preciso entende-las.

Então quanto mais simples sua aplicação estiver mais fácil se torna para resolver o problema, se você tem um problema de persistência precisa entender o que está acontecendo, analise os logs da aplicação no servidor muitos devs tem mania de não olhar os logs e ficar sofrendo na tentativa x erro.

O que digo é para se aprimorar, estude, hoje em dia as documentações são ricas em informação, foram raros os problemas que passei que não encontrasse a solução nelas, grande abraço.

2 curtidas

essa anotação @Repository fica em cima da classe DAO? no caso, eu uso o service que chama o dao e o meu bean que chama o service. usaria o @inject?

verdade…