olá pessoal…
na minha aplicação tenho 5 camadas divididas assim :
- business (Rules,Perfil)
- controller (Action.Form,struts)
- dao (DAO) (Controle do DAO e da Transaction)
- filter (verifica permissão de uso ,do usuario na aplicação)
- model (classes do projeto)
minha duvida com esse controle de transação que estou usando atende
uma aplicação com uns 500 acessos de usuarios …meu problema se não
vai ficar lento os acessos com muitos usuários ???
pois uso Oracle,Tomcat , java 1.4 …
se alguém puder me ajudar agradeceria …
abs
exemplo Transaction
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class XXXXXTransactionDAO extends Object {
// atributos
private String datasource;
Connection conn;
private DataSource ds;
//construtor ModeloTransactionDAO(String)
public LanctoTransactionDAO(String datasource) {
super();
this.datasource = datasource;
createConnection();
}
//metodo createConnection()
public void createConnection() {
try {
Context ctx = new InitialContext();
if(ctx == null )
throw new Exception(“Erro - No Context”);
DataSource dsLocal = (DataSource)ctx.lookup(datasource);
this.ds = dsLocal;
conn = ds.getConnection();
conn.setAutoCommit(false);
}catch(Exception e){
e.printStackTrace();
}
}
public boolean insert(String aplicacao,String entidade, String acao, Lancto lancto,UsuarioAplic usuarioAplic) throws Exception {
boolean transaction = false;
int seq =0;
try {
LanctoDAO lanctoDao = new LanctoDAO(conn);
transaction =lanctoDao.insert(lancto, usuarioAplic);
if (transaction){//se consegiu dar insert, inicia regra de negócio para catálogo
LanctoRules lanctoRules = new LanctoRules();
transaction =lanctoRules.criaRegraNegocio(aplicacao,entidade,acao,lancto,usuarioAplic,this.conn);
String verifica=Workflow.ExistePendencia(aplicacao,entidade, acao, lancto.getIdlancto(),lancto.getStatus(),"",lancto.getVllancto(),usuarioAplic.getUsuariooracle().getCodigo(),false,this.conn);
if ("Nao".equals(verifica)){//Sem pendencias, altera para aprovado
lancto.setStatus(Status.APROVADO);
transaction=lanctoDao.alteraStatus(lancto);
}
}
} catch (Exception e) {
e.printStackTrace();
throw e;
}
processTransaction(transaction);
return transaction;
}
public boolean update(String aplicacao,String entidade, String acao, Lancto lancto,UsuarioAplic usuarioAplic) throws Exception {
boolean transaction = false;
try {
LanctoDAO LanctoDao = new LanctoDAO(conn);
transaction =LanctoDao.update(lancto);
if (transaction){//se consegiu dar update, continua
if(lancto.getStatus()!=Status.EM_APROVACAO){ // Para status diferente de Em Aprovação, altera para em aprovação
lancto.setStatus(Status.EM_APROVACAO);
transaction=LanctoDao.alteraStatus(lancto);
}
if (transaction){//se consegiu dar update, inicia regra de negócio para catálogo
LanctoRules lanctoRules = new LanctoRules();
transaction =lanctoRules.criaRegraNegocio(aplicacao,entidade,acao,lancto,usuarioAplic,this.conn);
String verifica=Workflow.ExistePendencia(aplicacao,entidade, acao, lancto.getIdlancto(),lancto.getStatus(),"",lancto.getValor(),usuarioAplic.getUsuariooracle().getCodigo(),false,this.conn);
//System.out.println(“verifica”+verifica);
if (“Nao”.equals(verifica)){//Sem pendencias, altera para aprovado
lancto.setStatus(Status.APROVADO);
transaction=LanctoDao.alteraStatus(lancto);
}
}
}
} catch (Exception e) {
e.printStackTrace();
throw e;
}
processTransaction(transaction);
return transaction;
}
//metodo processTransaction()
public void processTransaction(boolean transaction) throws Exception {
try {
if (transaction) {
this.conn.commit();
} else {
conn.rollback();
}
} catch (Exception e) {
conn.rollback();
e.printStackTrace();
throw e;
}
finally {
//conn.setAutoCommit(true);
if (conn != null) {
try { conn.close(); } catch (SQLException e) { ; }
conn = null;
}
}
}
//
}
–
-DAO
–
public class XXXXXDAO extends DAO {
//atributos
private Connection conn;
//Armazena o tamanho da lista retorno da busca
private int size = 0;
public int getSize() {
return size;
}
public void setSize(int size) {
this.size =size;
}
//construtor padrao
public LanctoDAO() {
//super();
super("datasource");
}
//construtor LanctoDAO(Connection)
public LanctoDAO(Connection conn) {
super();
this.conn = conn;
}
public final String QUERY = "SELECT "
//metodo insert(Lancto)
public boolean insert(Lancto lancto, UsuarioAplic usuarioAplic) throws SQLException {
String sql;
sql = "INSERT INTO LANCTO (x)" +
" VALUES ( ?, ? ,?,+ TO_DATE('"+lancto.getDtlancto()+"', 'DD/MM/RRRR')," +Status.EM_APROVACAO+")";
PreparedStatement pstmt = null;
boolean verif=false;
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, lancto.getIdlancto());
pstmt.setInt(2, lancto.getIdperfil());
pstmt.setDouble(3, lancto.getVllancto());
verif=(pstmt.executeUpdate()>0);
pstmt.close();
pstmt = null;
//conn.commit();
return(verif);
} catch (SQLException sqle) {
verif=false;
pstmt.close();
rollback(conn);
//sqle.printStackTrace();
throw sqle;
} finally {
//conn.close();
}
}
–