Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Java/JBoss] Resetten van Hibernate bij reload van database

Pagina: 1
Acties:

  • ari3
  • Registratie: Augustus 2002
  • Niet online
Voor onze integratietests laden we een nieuwe SQL-script voordat een testscenario aangetrapt wordt.

Echter, wanneer een scenario gedraaid heeft en het SQL-script voor het volgende scenario ingelezen wordt krijgen we allerlei transaction- en state-exceptions. Ergens wel logisch, want Hibernate zal wel dingen cachen, locks en/of lopende transacties hebben.

De SQL-scripts woren overigens wel binnen JBoss uitgevoerd op een connectie die wordt verkregen van de zelfde datasource als de persistence context gebruikt.

De oplossing moet volgens mij gezocht worden in Hibernate. Hoe "vertel" je hibernate dat alle lopende transacties en alle cached entities moeten worden weggooid?

"Kill one man, and you are a murderer. Kill millions of men, and you are a conqueror. Kill them all, and you are a god." -- Jean Rostand


  • rrrandy
  • Registratie: Juli 2005
  • Laatst online: 27-06 13:00
Je session flushen en sluiten aan het einde van je test?

  • ari3
  • Registratie: Augustus 2002
  • Niet online
rrrandy schreef op donderdag 20 december 2007 @ 13:36:
Je session flushen en sluiten aan het einde van je test?
Daarvoor zou de productie code gewijzigd worden terwijl dat juist de code is getest moet worden. Het aanpassen van code om een test te kunnen runnen is natuurlijk niet de bedoeling. Bovendien is het niet zo eenvoudig als even een session flushen. De applicatie die getest wordt heeft een aantal stateful session beans, stateful Seam componenten, transactionele SOAP-calls e.d. Tevens geldt dat wanneer een voorgaande test fout ging er nog transacties zijn die nog niet ge-timeout zijn als de volgende test gestart wordt.

"Kill one man, and you are a murderer. Kill millions of men, and you are a conqueror. Kill them all, and you are a god." -- Jean Rostand


  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Niet noodzakelijk, waarom kan je de sessions niet flushen vanuit je test code?

Verder klinkt dit een beetje als een eigen implementatie van DBUnit, heb je dat al eens bekeken?

[ Voor 39% gewijzigd door -FoX- op 21-12-2007 08:12 ]