前言
.NET C#到Java没那么难,都是面向对象的语言,而且语法还是相似的,先对比一下开发环境,再到Servlet,再到MVC,都是一样一样的,只是JAVA的配制项比较多而已,只要配好一个,后面都是copy,简直so easy,而且用myeclipse可以省一些配制
Java与.NET的区别不在它们的本身,最大的区别在于他们背后的力量,相信大家都能感觉得到,我就不多说。
系列目录
五、.NET C#到Java没那么难,Nosql篇
六、.NET C#到Java没那么难,微服务篇
七、.NET C#到Java没那么难,大数据篇
目录
1.ADO.NET 和 JDBC
2.DBHelper 和 DBUtils
3.EF 和 Hibernate
4.Dapper 和 Mybatis
1.ADO.NET 和 JDBC
(1).ADO.NET和JDBC数据库对象
|
ADO.NET |
JDBC |
|
Connection |
Connection |
|
Command、DataAdapter |
Statement、PreparedStatement |
|
DataReader 在线数据集 |
ResultSet |
|
DataTable、DataSet 离线数据集 |
RowSet |
|
Transaction |
Transaction |
(2)ADO.NET连接字符串 和 JDBC数据库驱动和Url
2.JDBC数据库驱动和Url
|
数据库 |
驱动类名 |
URL格式 |
|
Oracle |
oracle.jdbc.driver.OracleDriver |
jdbc:oracle:thin:@hostip:1521:dbname |
|
Sybase |
com.sybase.jdbc2.jdbc.SybDriver |
jdbc:sybase:Tds:hostip:4100/dbname |
|
Mysql |
com.mysql.jdbc.Driver |
jdbc:mysql://hostip:3306/dbname?useUnicode=true&characterEncoding=GBK |
|
SQLServer 2000 |
com.microsoft.jdbc.sqlserver.SQLServerDriver |
jdbc:microsoft:sqlserver://hostip:1433;DatabaseName=dbname |
|
SQLServer 2005 |
com.microsoft.sqlserver.jdbc.SQLServerDriver |
jdbc:sqlserver://hostip:1433;DatabaseName=dbname |
|
SQLServer 7.0 |
net.sourceforge.jtds.jdbc.Driver |
jdbc:jtds:sqlserver://hostip:1433/dbname |
|
DB2 |
com.ibm.db2.jcc.DB2Driver |
jdbc:db2://hostip:50000/dbname |
|
Informix |
com.informix.jdbc.IfxDriver |
jdbc:informix-sqli://hostip:port/dbname:informixserver=<dbservername> |
(3).总结
1.ADO.NET最大的优点是对断开连接访问数据库方式的强有力支持。相比起来,JDBC也引入类似的功能,RowSet,但是比起ADO.NET来,还是不够。
2.ADO.NET不包括分布式事务的接口,ADO.NET的分布式事务是通过MS DTC统一管理的。JDBC本身就提供了对分布式事务支持的接口,不同的JDBC Driver实现了这一个接口,就支持分布式事务了。
3.ADO.NET中,不同的ADO .NET Provider的参数格式不一样的。OleDb和Odbc都是使用匿名参数,SqlClient使用“@”开头的命名参数,OracleCLient使用“:”开头的命名参数
4.JDBC中,参数计数是从1开始的,最初使用者容易犯错。ADO.NET没有此问题
5.ADO.NET是从ODBC,JDBC,OLEDB 发展过来,而JDBC是ODBC的JAVA版本
6.ADO.NET封装程度比较高,用起来很方便
2.DBHelper 和 DBUtils
DBHelper有动软的SQLHelper,DbProviderFactory封装的DBHelper,微软EnterpriseLibary封装的DBHelper
主要是封装的ADO.NET的代码,简化dal层的操作
支持多种数据库,需要自己反射把DataTable转换成Model
Dbutils由Apache公司开发
主要是封装了JDBC的代码,简化dao层的操作,有对象映射的功能。
支持多种数据库,可以直接把数据转换成Model
源码预览
1 public Boolean Register(TUser user) throws SQLException{ 2 Connection conn =JDBCUtil.getConnection(); 3 QueryRunner qr = new QueryRunner(); 4 String sql="insert into t_user(username,password,sex,birthdate,address) values(?,?,?,?,?)"; 5 6 try { 7 int i = qr.update(conn, sql,user.getUsername(),user.getPassword(),user.getSex(),user.getBirthdate(),user.getAddress()); 8 return i==1 ? true:false; 9 } catch (SQLException e) { 10 // TODO Auto-generated catch block 11 e.printStackTrace(); 12 } 13 finally{ 14 DbUtils.close(conn); 15 } 16 return false; 17 } 18 19 public List<TUser> findAll() throws SQLException{ 20 Connection conn =JDBCUtil.getConnection(); 21 QueryRunner qr = new QueryRunner(); 22 String sql = "select * from T_User"; 23 List<TUser> users = new ArrayList<TUser>(); 24 try { 25 users = qr.query(conn,sql, new BeanListHandler<TUser>(TUser.class)); 26 } catch (SQLException e) { 27 // TODO Auto-generated catch block 28 e.printStackTrace(); 29 } 30 finally{ 31 DbUtils.close(conn); 32 } 33 return users; 34 }