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:
Connection c = ...;
c.execute("begin");
try {
c.execute...
c.execute...
c.execute...
c.execute...
c.execute("commit"); // alebo rollback
} catch () {
c.execute("rollback");
}
S pomocou JdbcTemplate to ale nefunguje:
org.h2.jdbcx.JdbcDataSource ds = new JdbcDataSource();
ds.setURL("jdbc:h2:/tmp/test");
JdbcTemplate t = new JdbcTemplate(ds);
t.getDataSource().getConnection().setAutoCommit(false);
t.execute("drop table if exists data;");
t.execute("create table if not exists data ( id integer, name
varchar);");
t.update("insert into data values ( 1, 'name1');");
showTable(t);
t.execute("begin");
t.update("insert into data values ( 2, 'name2');");
showTable(t);
t.execute("rollback");
showTable(t);
Vystup:
[{ID=1, NAME=name1}]
[{ID=1, NAME=name1}, {ID=2, NAME=name2}]
[{ID=1, NAME=name1}, {ID=2, NAME=name2}]
Rollback bol ignorovany, pravdepodobne aj begin transaction.
Bud som nespravnym sposobom naivne nastavil autocommit,
alebo JdbcTemplate robi nejake dalsie harakiri s connection, ktore moc nechapem.
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:
http://static.springsource.org/spring/docs/2.5.x/reference/transaction.html
Poradi niekto?
Dik
--
Dusan