Problemas com acesso a mesma referência do DAO!

Dae galera… eu estou tendo o seguinte problema…
Tenho um DAO que extende uma classe utilitária… que possui métodos como getAutoIncrement para gerar a id entre outras coisas…, criei uma classe para transação e sempre que quero que o DAO pego a conexão da transação eu faço dao.setTransaction(transacao); o problema é o seguinte… o meu DAO ele é declarado assim:

[code]
public class DocumentoDAO extends ALBaseDAO {

private static DocumentoDAO instance = new DocumentoDAO();

public synchronized static DocumentoDAO getInstance() {
	if( instance == null ) instance = new DocumentoDAO();
    return instance;
}
...[/code]

Tá… e a classe ALBaseDAO tem o seguinte trecho de código…

[code]public long getAutoIncrement(String table, String rowNameMax, HashMap<String, String> mpDMLWhere) throws Exception {
long returnId = 0;
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
ALConnection alConection = new ALConnection();

        // Verifica se foi aberto uma transação
        if (isTransaction()) {
            conn = transaction.getConn().getConnection();
        } else {
            alConection.load();
            conn = alConection.getConnection();
        }

…[/code]

O método isTransaction chamado aqui verifica se o cara definiu o DAO como transacional ou não… o problema é que outros DAOS que estão sendo executados ao mesmo tempo… estão alterando a mesma referencia… ou seja, mais de um usuário estão acessando a mesma instancia do DAO e um chamando um método que não é transacional e outro chamando um método que é… dae o que acontece? Um alterando a referencia do outro…
Esse sistema será acessado por mais ou menos 300 pessoas… e queria uma ajuda de vcs como eu poderia resolver isso… com métodos synchronized? Ou instancio cada DAO a cada operação? Se eu instanciar o DAO a cada operação isso não poderá derrubar o servidor? Pois vão ser em média 300 acessos simultaneso…
Ah… Hibernate não pode ser usado nesse projeto por restrição mesmo… então tive que fazer em JDBC… só que agora me deparei com esse problema…Algume teria alguma ideia de como fazer isso?

Hibernate não pode, OK… mas e Spring pode ?? caso sim, pesquise algo nesta linha…

Hum… na verdade eu vou ter que me virar com o que tenho…
o que estou procurando é como resolver essa questão… para não ter acessos de outros usuários alterando a mesma referencia e ao mesmo tempo não deixar o sistema muito lento…:wink:

Talvez funcione se você sincronizar!

Me desculpe a insistencia, mas pelo q entendi vc esta sendo obrigado a reinventar a roda porque alguém em seu projeto não gosta de frameworks amplamente testados e aceitos pelo mercado ??? não sou dono da verdade mas fazer código para resolver problemas que já estão mais do que resolvidos das mais variadas formas por diferentes frameworks é pura perda de tempo…dificilmente ficará melhor do que um framework já usado pelo mercado…

[]'s

Pois é… não utilizar um framework desse foi requisito inicial… dae agora vê que a escolha foi errada… dae tenho que me virar com o que tenho…
Estou quase instanciando os DAOs mesmo… não sei o impacto que isso teria… mas fazendo isso eu mataria o problema com acessos simultaneo ao mesmo DAO… não sei se com o synchronized a perfomance não seria muito atingida… o que vcs acham?
Valeu!

Ola, encontrei esse material, espero que te ajude.
http://java.sun.com/blueprints/patterns/DAO.html

Flw