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

Odpovedet emailem