大家讨论一下,在用jdbc或者用数据池的时候都是怎样对数据库操作的?怎样处理事务?(200分)

  • 主题发起人 主题发起人 delphi?
  • 开始时间 开始时间
D

delphi?

Unregistered / Unconfirmed
GUEST, unregistred user!
同时,对于一些数据库的事务处理,在java中有没有什么经典的处理方法?
譬如:我在连接数据库的时候都一般用池的方式,
Connection con = null;
public Connection(String dsName){
try{
InitContext ctx = new InitContext();
DataSource ds = ctx.lookup(dsName);
con = ds.getConection();
catch(Exception e){
//...
return null;
}
return con;
}
public closeDB(){
try{
con.close();
}
catch(Exception e){
System.out.println("......");
}
}
这种方法是不是常用的?有什么不足?请大家指点,指点。
对于事务的处理,我一直没有找到什么好的办法(几乎是没有办法),现在在j2ee的体系结构中,强调了页面和逻辑还有数据操作分离,但是一般事务的处理都是在业务逻辑中做处理(c/s)模式中大部分是这样的,那在j2ee的体系中该如何处理呢?
 

我现在是把查询的结果以Arrirylist的形式返回,
这样在外部调用的程序可以不去管数据连接的关闭,
不过如果数据结果返回很多的时候,效率就会很低下:
public java.util.ArrayList queryRecord(String sqlQueryStmt) {
java.util.ArrayList rows = new java.util.ArrayList();
java.sql.Connection conn = null;
java.sql.Statement stmt = null;
java.sql.ResultSet rs = null;
try {
conn = this.getConnection(10000);
stmt = conn.createStatement();
rs = stmt.executeQuery(sqlQueryStmt);
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
while (rs.next()) {
HashMap row = new HashMap();
for (int i = 1;
i <= columnCount;
i++) {
String cname = rsmd.getColumnName(i);
row.put(cname, rs.getObject(i));
}
rows.add(row);
}
return rows;
}
catch (Exception e) {
return null;
}
finally {
try {
rs.close();
stmt.close();
//关闭连接,返回连接
this.freeConnection(conn);
conn = null;
}
catch (Exception e) {
return rows;
}
}
}
 
如果是数组呢?我感觉也是效率不高.
有没有效率比较高的情况呢?
怎么没有什么人对这个比较感兴趣.
 
連接池很難寫的好,我這邊也用過了,老是出問題,所以也就不發表意見了。
 
干嘛非要自己做轮子呢?
简单的池用DBCP就好,高级的appserver都有自己的datasource实现
tomcat还是使用dbcp呢
 
我现在是把查询的结果以Arrirylist或者Vector的形式返回
方法和前面的仁兄差不多,都是定义结果集,然后将结果集压入到
Arrirylist或者Vector中
 

Similar threads

S
回复
0
查看
738
SUNSTONE的Delphi笔记
S
S
回复
0
查看
730
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部