public static synchronized boolean updateFromTxLogsOnDatabase(PersistenceBroker pb) throws SQLException,LookupException {
public static int updateFromTxLogsOnDatabase(PersistenceBroker pb, int txNumber) throws SQLException,LookupException {
    public static synchronized boolean updateFromTxLogsOnDatabase(PersistenceBroker pb) throws SQLException,LookupException {	Connection conn = pb.serviceConnectionManager().getConnection();    conn.commit();	Statement stmt = conn.createStatement();	// read tx logs	int maxTxNumber = Transaction.getCommitted();	ResultSet rs = stmt.executeQuery("SELECT OBJ_CLASS,OBJ_ID,OBJ_ATTR,TX_NUMBER FROM TX_CHANGE_LOGS WHERE TX_NUMBER > " 					 + maxTxNumber 					 + " ORDER BY TX_NUMBER");	int previousTxNum = -1;	ChangeLogSet clSet = null;	boolean updatedCache = false;	while (rs.next()) {	    int txNum = rs.getInt(4);	    if (txNum != previousTxNum) {		if (clSet != null) {		    updatedCache |= registerChangeLogSet(pb, clSet);		}		maxTxNumber = Math.max(maxTxNumber, txNum);		clSet = new ChangeLogSet(txNum);		previousTxNum = txNum;	    }	    String className = rs.getString(1);	    int idInternal = rs.getInt(2);	    String attr = rs.getString(3);	    clSet.changeLogs.add(new ChangeLog(getObjectIdentity(pb, className, idInternal), attr));	}	// add last built ChangeLogSet, if any	if (clSet != null) {	    updatedCache |= registerChangeLogSet(pb, clSet);	}	Transaction.setCommitted(maxTxNumber);	return updatedCache;    }