import com.j256.ormlite.support.ConnectionSource; import com.j256.ormlite.support.DatabaseConnection; public class TransactionManager { private ConnectionSource connectionSource; public TransactionManager(ConnectionSource connectionSource) { this.connectionSource = connectionSource; } public <T> T execute(TransactionCallback<T> callback) throws SQLException { DatabaseConnection connection = connectionSource.getReadWriteConnection(); try { connection.setAutoCommit(false); T result = callback.doInTransaction(connection); connection.commit(null); return result; } catch (Exception e) { connection.rollback(null); throw new SQLException("Transaction failed", e); } finally { connection.setAutoCommit(true); connectionSource.releaseConnection(connection); } } } TransactionManager transactionManager = new TransactionManager(connectionSource); try { transactionManager.execute(new TransactionCallback<Void>() { @Override public Void doInTransaction(DatabaseConnection connection) throws SQLException { return null; } }); } catch (SQLException e) { } List<User> users = new ArrayList<>(); Dao<User, Integer> userDao = DaoManager.createDao(connectionSource, User.class); userDao.setAutoCommit(false); for (User user : users) { userDao.create(user); if (users.size() % 100 == 0) { userDao.commit(null); } } userDao.commit(null); userDao.setAutoCommit(true); List<User> users = new ArrayList<>(); Dao<User, Integer> userDao = DaoManager.createDao(connectionSource, User.class); userDao.setAutoCommit(false); for (User user : users) { userDao.update(user); if (users.size() % 100 == 0) { userDao.commit(null); } } userDao.commit(null); userDao.setAutoCommit(true); List<User> users = new ArrayList<>(); Dao<User, Integer> userDao = DaoManager.createDao(connectionSource, User.class); userDao.setAutoCommit(false); for (User user : users) { userDao.delete(user); if (users.size() % 100 == 0) { userDao.commit(null); } } userDao.commit(null); userDao.setAutoCommit(true);


上一篇:
下一篇:
切换中文