Tag Archive for 'spring'

Controle manual de transações em testes unitários

Eu criei alguns testes unitários que se utilizam do Hibernate + Spring, facilitando e muito a minha vida para programá-los.

Mas porém, quando me deparei com algumas MATERIALIZED VIEWs do Oracle, que , somente são atualizadas quando é feito um commit, conforme foram criadas aqui no meu banco de dados, sendo assim, eu precisei fazer commit nas transações do Junit.

O que ocorre é que , eu utilizo como classe pai do meu teste unitário uma classe do Spring que controla as transações, abrindo uma para cada método de teste do TU, e faz com que em todos os momentos seja feito rollback no banco, fazendo com que meu teste unitário não reflita no banco de dados. O que me deixa com o mesmo ambiente de teste sempre, sem alteração. Esta classe é a AbstractTransactionalDataSourceSpringContextTests .

Para buscar o controle da transação corrente eu utilizei 3 métodos  bem interessantes, que estão disponíveis na classe mesmo, são eles:

setComplete() -> Chamando este método antes de terminar o TU, a transação será comitada, e não será feito o rollback padrão.
endTransaction() -> Fecha, acaba com a transação atual.
startNewTransaction() -> Abre, inicia uma nova transação

Assim eu consigo efetuar o commit quando preciso, e na hora em que preciso, persistindo assim os dados no meu banco de dados. Claro, que esta situação é uma exceção, onde eu salvo os dados no banco, que por si só atualiza minha materialized view, consulto novamente os dados para validação, e depois executo um teste de exclusão dos mesmos dados inseridos, comitando também.

Spring + JPA/Hibernate

Eu estou com um problema ao trabalhar com estes dois fw dentro do MyEclipse, que é o seguionte:

Tenho no classpath do meu projeto as libraries “Spring 2.0 AOP” e “Hibernate 3.2 Core Libraries”, mas sempre quando vou rodar a aplicação, me retorna um erro com relação ah biblioteca “asm”, que é o seguinte:


.
.
01:13:03,010 INFO [STDOUT] 01:13:03,009 ERROR [[sceweb2]] Servlet.service() for servlet sceweb2 threw exception
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77)
at net.sf.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:173)
at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:145)
.
.

É pqtem a asm.jar e asm-2.2.3.jar que estão conflitando. Alguém sabe como retirar/trocar esta bibliotecas para o correto funcionamento do projeto ?

vlw..

Spring – applicationContext.xml / -servlet.xml

Achei a minha resposta tão esperada:

  • /WEB-INF/applicationContext.xml allows you to configure your beans, or to indicate the context of your application. This is the place where you define your business logic beans, resources, and all other beans that are not directly related to the web tier.
  • /WEB-INF/[servlet-name]-servlet.xml is used to configure the web tier and view resolvers, controllers, validators, and all other beans that you need in the MVC framework. The [servlet-name] refers to the name of the Spring’s dispatcher servlet defined in the web.xml deployment descriptor.

Ou seja:

  • /WEB-INF/applicationContext.xml permite a você configurar seus beans, especificar o contexto da aplicação. É o lugar onde você define seus beans lógicos, resources e todos os outros beans que nao estão diretamente relacionados à camada web.
  • /WEB-INF/[servlet-name]-servlet.xml é usado para configurar a camada web , view resolvers , controllers, validators e todos os outros beans que você precisa para o MVC. O [servlet-name] refere-se ao nome que do Spring Dispatcher Servlet definido no arquivo web.xml.

Acesso a dados de banco de dados…

JPA ? JDBC Puro ? Somente Hibernate ? JDO ?
O que eu faço….?
Qual a mais simples solução para o acesso aos dados ?
Qual a mais robusta solução para acesso aos dados ?
Qual a solução de acesso aos dados que me dá mais ferramentas ?
Qual solução tem o melhor controle transacional ?
Qual a mais produtiva solução de acesso aos dados ?

Agora que estou estudando mais o Spring, e vi que o mesmo me possibilita o uso de todas as opções de acessos aos dados, fiquei com estas dúvidas… mas na verdade acho que vou fazer um belo teste com o JPA e se nao ficar legal, passo a usar o Hibernate puro, pego da fonte ! hhehehe

Spring Framework – A real framework !

Conversando com um colega de trabalho, obtive algumas informações sobre o Spring Framework.
Dentre estas informações, estavam uma que dizia que este fw era o que realmente podemos chamar de framework, onde o mesmo tinha tudo que
necessitávamos para construir uma aplicação do zero facil e rapidamente.
Ou seja, com o Spring fw, temos muitas facilidades, desde nossas classes de negocio, transações, classes de acesso a dados, model-view-controller, etc…
Podemos ler aqui (http://www.theserverside.com/tt/articles/article.tss?l=IntrotoSpring25) com mais detalhes o que o Spring tem a nos oferecer.

Eu sinceramente estou começando agora a aprender a trabalhar com Spring, mas já estou fascinado com tamanha produtividade oferecida por este fw.
E ainda mais quando entro no seu site, na seção de documentação e me deparo com uma documentação vasta, detalhada e muito bem organizada de
todas as suas funcionalidades e características ( http://static.springframework.org/spring/docs/2.5.x/reference/index.html ).

Na real, eu chequei até aqui através do aprendizado do JPA (Java Persistence API), e fiquei bem contente.

Agora, para complpetar o desenvolvimento de uma bela aplicação, basta aprender a programar o ext (http://www.extjs.com), uma biblioteca
java script que é muito completa, para objetos visuais, efeitos de páginas, ajax, e outras cositas mas !




Better Tag Cloud