DAO模式啊
可以参考Hibernate
可以参考Hibernate
解决方案 »
- hibernate的cascade只能实现一层级联,在多层就不行了,????????????????????
- myBATIS自动生成工具生成的Example类
- struts1标签应用
- 急,急,急~~~
- 求助:关于actionform 是如何获得客户端页面提交的数据?
- 关于structs使用动态方法调用
- 非常郁闷!大虾们!救命呀!
- 一个简单的问题!在线等待!
- 初学。如何在resin发布(布署)一个ejb应用
- TOMCAT能个版本最稳定?适宜做为商用!谢谢!
- JBoss3.2.3如何变成开发模式?现在编译一个Servlet或者是Java类,都需要重新启动才能生效
- 请问在JAVA中如何调用Dll动态库?
只能用强大的JDBC。我想知道:
1。里面应有什么样的方法;
2。要有多少错误处理要做在里面;
3。还有查询结果最好以什么形式返回给其他设计人员;
private static String url="jdbc:oracle:thin:@10.10.10.10:1521:orasid";
private String user="user";
private String pw="pw";
private static Connection con;
private static Statement stmt;
private static int conCount=0; public OracleConnection() throws SQLException {
if(con==null){
this.con = createConnection();
}
if(stmt==null){
this.stmt = createStatement();
}
}
private Connection createConnection() throws SQLException {
try{
conCount++;
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
System.out.println("连接"+String.valueOf(conCount)+":"+url+"数据库成功!");
return DriverManager.getConnection(url, user, pw);
}
catch(SQLException sqle){
System.out.println("连接"+url+"数据库失败!");
throw sqle;
}
}
private Statement createStatement(){
Statement stmt = null;
try{
stmt = con.createStatement();
}
catch(SQLException e){
System.out.println(e.toString());
}
finally{
return stmt;
}
} public ResultSet executeQuery(String sql) throws SQLException{
return stmt.executeQuery(sql);
}
public int executeUpdate(String sql) throws SQLException{
return stmt.executeUpdate(sql);
} public int executeUpdate(ArrayList sqlList) throws SQLException{
int row=0;
try{
con.setAutoCommit(false);
for(int i=0; i<sqlList.size(); i++){
if(sqlList.get(i)!=null&&(!sqlList.get(i).equals(""))){
row +=stmt.executeUpdate(sqlList.get(i).toString());
}
}
con.commit();
}
catch(SQLException sqle)
{
con.rollback();
throw sqle;
}
finally
{
con.setAutoCommit(true);
}
return row;
} public void close(){
try{
if(stmt!=null){
stmt.close();
}
}
catch(SQLException sqle){
sqle.printStackTrace();
}
finally{
try{
if(con!=null){
con.close();
}
System.out.println("成功关闭"+url+"数据库连接");
}
catch(SQLException sqle){
sqle.printStackTrace();
}
}
}
}
1、提供连接池功能,即采用PoolConnection获取连接,提高获取连接的速度
2、屏蔽不同的数据库JDBC的差异,可通过配置参数自动用对应的驱动类初始化数据库连接,对于特殊的驱动程序还可以提供附加的性能优化方法,比如oracle支持的statement缓存功能。不同的数据库产生数据库异常时,相同的错误返回的错误代码不一样,可提供一些方法屏蔽这样的差异。
3、提供一些通用的方法,比如关闭statement,resultset,connection等对象时,有时会产生异常,通常这些异常都不处理,可提供自动捕捉异常的方法,称为silent close
4、程序员写JDBC代码时,常常忘了最后把connection关掉,导致资源泄漏,公用工具类可提供相应的自动关闭功能。对于createstatement, executeQuery,executeUpdate等没有必要封装,因为如果要封装的话类似的方法就太多了,不如让使用者直接用Connection的接口。
1、提供连接池功能。怎样提供的?
2、屏蔽不同的数据库JDBC的差异,我现在占不考虑!这得要对好多数据库?
3、对于错误处理是做在连接的类里面,还是直接抛出呢?
4、怎么做自动捕捉啊。关闭statement,resultset,connection等对象时,是做一个方法还是做多个方法。
5、对于createstatement, executeQuery,executeUpdate如果不做封装的话,那其他的程序员不是一样很费劲的来调用,我想是不是可以封装几个常用的。比如executeQuery,executeUpdate ,还有要一个执行事务的。对于createstatement我想可以做的这个类的内部,而减少其他人的代码量!
6、对于返回查询结果,我想做在一个ArrayList里面,而不是返回一个RecordSet,而每一条记录,用不着hashmap保存。放在这个ArrayList里面。