Duvidas a respeito do Spring

Olá amigos do GUJ,

Estou començando um projeto para o TCC e queria começar ja com spring, porem não conheço muito a respeito dele, só a fama mesmo. Então gostaria de saber mais a respeito dele, seu poder, oque posso fazer com ele e onde posso aprender mais a respeito. Para ajudar vocês a me ajudarem mais, eu vou usar Struts 2, Hibernate e pretendo usar DAOFactory.

Muito Obrigado

De uma olhada no proprio site do spring http://www.springsource.org/. O site tem uma documentação muito boa e completa. Quanto ao DAOFactory, você vai ver que nao precisará mais dele!

O livro Spring em Acao tb é muito bom e eu recomendo

Amigo, não me entenda mal, mas pq decidiu usar o Spring se não sabe o que ele faz? Sendo o seu tcc, vc devia procurar utilizar ferramentas já conhecidas, não ferramentas que você não conhece, pq você precisa de tempo para aprendê-las (tempo fez falta pra mim quando fiz meu tcc) e por não conhecê-las, é possível que, quando surgir um problema, você tenha grandes dificuldades para resolvê-lo.

Para aprender sobre Spring, recomendo esse link, e se possível, o livro Spring in Action.

Flw! :thumbup:

Valew gente, muito obrigado

        Eu estava lendo sobre os modulos e não entendi muito bem, mas ja ouvi muita gente falando que o Spring MVC não é bom. E queria saber a opnião de vocês sobre qual eu vou usar. 
       Acredito que o módulo ORM é muito interessante e que irei usar, porém não entendi muito bem o modulo de transaction e os modulos do core conteiner que nem sei se será necessario eu usar.

Muito Obrigado

Att,

Vinicius Roberto

Ontem vi um link muito interessante no twitter de alguém, só não lembro de quem foi, rs, da uma olhada:

http://www.springbyexample.org/

Muuuuito melhor aprender vendo os exemplos, to achando bem interessante. Vou indo lendo caso eu tenha alguma duvida eu volta aqui :wink:

Valew gente

Bom acho que consigui entender a idéia dele e como funciona, parece ser muito mais simples do que pensei. Muito obrigado =D

Mas gostaria que vocês desse uma olhada no meu applicationContext e deêm uma opnião e tire umas duvidas q ficaram. hehe

Duvidas:
1 - em vez do annotatedClasses e do hibernateProperties tem como eu passar o arquivo de configuração do hibernate (hibernate.cfg.xml) que ja tem tudo isso?
2 - E nos exemplos do site http://www.springbyexample.org/ eles usam HibernateTemplate. E minha duvida é, precisa usar mesmo ele? não pode o session? qual a vantagem dele p o session?
3 - Além da fabrica de DAOs tambem não precisarei mais do HibernateUtil?

[code]<?xml version="1.0" encoding="UTF-8"?>

<bean id="propertyConfigurer"
	class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
	dependency-check="none">
	<property name="locations">
		<list>
			<value>classpath:/jdbc.properties</value>
		</list>
	</property>
</bean>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  <property name="driverClassName" value="${jdbc.driverClassName}" />
  <property name="url" value="${jdbc.url}" />
  <property name="username" value="${jdbc.username}" />
  <property name="password" value="${jdbc.password}" />
</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
	<property name="dataSource" ref="dataSource" />
    <property name="annotatedClasses">
        <list>
            <value></value>
        </list>
    </property>
    <property name="hibernateProperties">
        <value>
            hibernate.format_sql=true
            hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
        </value>
    </property>
</bean>

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

<import resource="dao-context.xml" />

[/code]

No dao-context.xml teria os beans dos DAOs que recebiriam como property só o SessionFactory

E então? ficou bom? é isso mesmo? alguma sugestão?

Muito Obrigado

Mais uma duvida. Eu vou usar o MySql com Hibernate 3.5 e gostaria de saber se o datasource e o sessionFactory estão certos ou se são os mais indicados? se não qual que seriam os mais indicados?

Muito Obrigado

1 - Que eu saiba você não pode usar o hibernate.cfg.xml, você deve incluir as suas entidades na configuração do bean sessionFactory mesmo.

2 - O HibernateTemplate faz uma camada para abstrair o uso da Session, que traz uma série de vantagens, tais como o gerenciamento da Session e conversão das exceções específicas do hibernate para exceções do Spring ORM (HibernateException, nesse caso). Suas outras opções são extender a classe HibernateDaoSupport, aproveitando os métodos que ela traz, e a própria utiliza também o HibernateTemplate (o qual você não precisa usar diretamente), ou simplesmente injetar a SessionFactory e administrar o uso da Session você mesmo, o que eu não recomendo, já que você perde as vantagens do gerenciamento de sessions que o Spring te proporciona (não é necessário session.close() e etc). Recomendo que você utilize qualquer um das outras opções, especialmente lidar apenas com HibernateTemplate. Se sua necessidade de usar a Session for relacionada à criação de Queries e Criteria, recomendo que estude como usar a interface HibernateCallback, que deve suprir essas necessidades.

3 - Se permitir que o Spring gerencia para você (recomendo! :mrgreen: ), não vai mais precisar do HibernateUtil.

4 - Não há necessariamente o mais indicado, isso depende do seu ambiente. Se você tem controle direto do servidor e da aplicação, a forma que você fez está adequada. No meu caso não posso fazer assim, pq aqui na empresa não posso definir senhas para o banco de dados, outras pessoas cuidam do servidor, então a configuração é feita via JNDI.

Espero que tenha esclarecido um pouco mais! Flw! :thumbup:

Esclareceu sim muito obrigado. Mas surgiram outras duvidas, que estive pensando agora pela manhã.

1 - E aquele OpenSessionInView? também não é mais necessario? =D

2 - E ainda sobre o hibernate.cfg.xml no sessionFactory, não entendi muito bem.

3 - Sobre o hibernate template, entendi o HibernateCallBack, mas se eu utilizasse a sessionFactory e desse um getCurrentSession ele aidna não estaria sendo gerenciada pelo Spring?

Para ele entender o arquivo de configuração é só deixar dessa forma e ele ja pegara todas as configurações, inclusive do c3p0 e as classes mapeadas?

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" > <property name="dataSource" ref="dataSource" /> <property name="configLocations"> <list> <value>classpath:hibernate.cfg.xml</value> </list> </property> </bean>

Bom… por enquanto acredito que precisarei do Spring apenas para esta parte mesmo. Até que ele facil, pensei que era bem mais dificil, hehe

Muito Obrigado pela ajuda

Vamos lá!

1 - Para isso sei que vc tem a classe OpenSessionInViewFilter, mas tenho feito de forma diferenciada, não utilizando esse recurso, e também não uso o Spring MVC, então não sei ao certo a forma mais adequada de fazê-lo.

2 - Não, o que eu quis dizer é que vc deve fazer da forma que vc fez no seu primeiro exemplo, algo assim:

[code]




br.com.xxx.yyy.Entidade1 br.com.xxx.yyy.Entidade2 org.hibernate.dialect.Oracle9iDialect org.hibernate.cache.EhCacheProvider true after_transaction true true [/code]3 - Não estaria, se você injeta a SessionFactory, e pega a Session você mesmo, é você que está controlando, se for pra fazer assim, nem precisa do Spring! :wink:

Blz? Flw! :thumbup:

Entendi, muito obrigado.

Eu acredito que passando o arquivo de configuração funcione, pois o set desse annotatedClasses não existe =/ mas tem do configLocations. Então vou da uma fuçada, fazer uns testes, para entender melhor e depois voltarei aqui agradecendo a ajuda.

Muito obrigado mesmo. Ajudou muito =D