Ahoj.
Vzhladom na to, ze vsade na nete narazam na nazor, ze priamo s JDBC pracuje len
hazarder
a mal by sa pouzit aspon spring-jdbc, snazim sa s nim nejak zoznamit.
V niektorych veciach sa mi vcelku paci a dokaze co-to ulahcit,
ale zapasim s transakciami. V cistom jdbc je to jednoduche:
Dusan Zatkovsky napsal(a):
Problem je, ze nikde na webe nemozem najst nejaky JEDNODUCHY navod,
ako na transakcie so spring-jdbc. Nasiel som len kopu otazok bez odpovedi,
pripadne
odpovede s linkom na kopu xml chaosu a stovky riadkov mne nepochopitelneho
kodu:
Doporucil bych ridit transakce deklarativne pomoci anotaci (pripadne
konfigurace v XML) mimo perzistentni vrstvu - ta by mela transakce jen
propagovat, nikoliv ridit.
Nastaveni viz:
http://static.springsource.org/spring/docs/2.0.x/reference/transaction.html
Pokud chcete transakce ridit
Onehdá jsem řešil, jak použít springové deklarativní transakce
(@Transactional) bez použití springového kontejneru. Prostě čisté
spring-jdbc. Kupodivu to není žádná velká magie, takže jestli to někoho
zajímá, tady to je.
Mějme rozhraní SomeService:
public interface SomeService {
void
Zdravím,
První chyba je v tom, že to děláte špatně i v čistém JDBC a
používáte nestandardní a nepřenosné příkazy BEGIN/COMMIT/ROLLBACK.
Používejte přímo metody commit a rollback, když už (BEGIN je zcela
zbytečné, transakce začíná prvním příkazem po commit nebo rollback).
No a k samotnému
On Tuesday 16 of February 2010 11:44:22 Martin Kuba wrote:
Vyráběl jsem onehdy tutoriál, je tady:
http://kore.fi.muni.cz:5080/wiki/index.php/Spring_JDBC#Transakce
No, tam je ale vsetok jdbc kod v jednej metode.
Co ak je dana transakcia rozbita na mnoho volani roznych tried? V jdbc dane
Pokud mate transakce na business vrstve a vsechno spravne nastavite, tak se
Spring postara o to, ze tam to spojeni bude jenom jedno a jenom jedna
transakce (teda pokud vsechno bude v ramci jednoho vlakna).
Lukas
2010/2/16 Dusan Zatkovsky msk.c...@gmail.com
On Tuesday 16 of February 2010
Dusan Zatkovsky napsal(a):
On Tuesday 16 of February 2010 11:44:22 Martin Kuba wrote:
Vyráběl jsem onehdy tutoriál, je tady:
http://kore.fi.muni.cz:5080/wiki/index.php/Spring_JDBC#Transakce
No, tam je ale vsetok jdbc kod v jednej metode.
Co ak je dana transakcia rozbita na mnoho volani
@Repository
public class Foo {
@Autowired
private Datasource datasource;
@Autowired
private PlatformTransactionManager transactionManager;
public void doSomethingInTransaction(){
final JdbcTemplate jdbc = new JdbcTemplate(datasource);
TransactionTemplate tt = new
Dobry den,
chcel by som v Springu nakonfigurovat viacero beanov, pricom cast
konfiguracie by som rad zapisal do externeho properties suboru.
Napriklad, povedzme ze chcem vytvorit viacero datovych zdrojov. V
properties subore by som mal nieco ako:
jdbc.1.driver=com.mysql.jdbc.Driver
To nepujde, konfigurace je staticka. Jediny zpusob jak to obejit je:
1.) napsat si vlastni configuration source, ktery to naparsuje z toho
properties souboru a vytvori ty beany
2.) pouzit indirekci v podobe nejake factory, ktera bude vracet neco
jako holder (MapString, Datasource, ListDatasource
Mozete prosim trochu rozviest moznost 3? Nie som si celkom isty co
hladat v dokumentacii, klucove slova nezaberaju.
Myslim, ze to vyriesim tak, ze budem mat objekt, ktory naparsuje
konfiguraciu (t.j. moznost 1) a bude obsahovat kolekciu tych mojich
beanov ... (v ukazke to boli datove zdroje).
Mozete prosim trochu rozviest moznost 3? Nie som si celkom isty co hladat v
dokumentacii, klucove slova nezaberaju.
http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/support/PropertiesBeanDefinitionReader.html
tady je to vysvetlene v celem kontextu
PropertiesBeanDefinitionReader nevyzera tak dobre, lebo sa v properties
zbytocne miesaju koncepty, ktore tam z pohladu cloveka co to konfiguruje
nemaju co hladat. Napad s FactoryBean, ktory bude vraciat Mapu, vyzera
byt najlepsou volbou.
Dakujem.
S pozdravom,
-Peter
On 16. 2. 2010 15:13,
OK, presiel som to vsetko 3x a som na zaciatku.
Skusim teda este raz:
Mozem pouzivat spring-jdbc a vyuzivat jeho vyhody ( generiky v *template, row
mappery a tak podobne ) a zaroven riadit transakcie rucne, bez roznych
wrapperov, anotacii a uchylnych xml?
Pretoze po preluskani vsemoznej
Ano, prostě použijte:
org.springframework.jdbc.datasource.SingleConnectionDataSource
Samozřejmě při růstu aplikace za chvíli narazíte, ale to můžete řešit dodatečně.
Kamil Podlešák
2010/2/16 Dusan Zatkovsky msk.c...@gmail.com:
OK, presiel som to vsetko 3x a som na zaciatku.
Skusim teda
Mozem pouzivat spring-jdbc a vyuzivat jeho vyhody ( generiky v *template, row
mappery a tak podobne ) a zaroven riadit transakcie rucne, bez roznych
wrapperov, anotacii a uchylnych xml?
muzete, ale je to cesta do pekel
Pretoze po preluskani vsemoznej dokumentacie a examplov tu uvedenych som
On Tuesday 16 of February 2010 16:57:28 Kamil Podlesak wrote:
Ano, prostě použijte:
org.springframework.jdbc.datasource.SingleConnectionDataSource
Samozřejmě při růstu aplikace za chvíli narazíte, ale to můžete řešit
dodatečně.
Diky
--
Dusan
Jeste jsem chtel upozornit, ze pokud budete ty transakce resit, tak
hned na prvni veci si rozbijete hubu. Ta vec se jmenuje vnorene
transakce. Jakmile bude chtit rozjet nekde nahore (v business logice)
transakci a chtit, aby v ni nejake spodni vrstvy pokracovaly, tak se
vas kod neuveritelne
Urcite precitam.
Aby som nebol za uplneho rebela, popisem asi moju situaciu.
V mojom pripade sa nejedna o ee aplikaciu, ale o desktop aplikaciu. Ta
drzi prave jedno spojenie do databazy uz od main() a na zaver dava
commit a close(). Vsetky operacie mimo main bezia v neznamom poradi,
prevazne su
20 matches
Mail list logo