前言

.NET C#到Java沒那么難,都是面向對象的語言,而且語法還是相似的,先對比一下開發(fā)環(huán)境,再到Servlet,再到MVC,都是一樣一樣的,只是JAVA的配制項比較多而已,只要配好一個,后面都是copy,簡直so easy,而且用myeclipse可以省一些配制

Java與.NET的區(qū)別不在它們的本身,最大的區(qū)別在于他們背后的力量,相信大家都能感覺得到,我就不多說。

 

 

系列目錄

一、.NET C#Java沒那么難,開發(fā)環(huán)境篇

二、.NET C#到Java沒那么難,Servlet篇

三、.NET C#到Java沒那么難,MVC篇

四、.NET C#Java沒那么難,DB篇

五、.NET C#Java沒那么難,Nosql篇

六、.NET C#Java沒那么難,微服務篇

七、.NET C#Java沒那么難,大數(shù)據(jù)篇

 

.NET C#到Java沒那么難,DB篇

 

目錄

1.ADO.NET 和 JDBC

2.DBHelper 和 DBUtils

3.EF 和 Hibernate

4.Dapper 和 Mybatis

 

 

 

1.ADO.NET 和 JDBC

(1).ADO.NET和JDBC數(shù)據(jù)庫對象

ADO.NET

JDBC

Connection

Connection

Command、DataAdapter

Statement、PreparedStatement

DataReader 在線數(shù)據(jù)集

ResultSet

DataTable、DataSet  離線數(shù)據(jù)集

RowSet

Transaction

Transaction

 

(2)ADO.NET連接字符串 和 JDBC數(shù)據(jù)庫驅動和Url

1.ADO.NET各種數(shù)據(jù)庫連接字符串

2.JDBC數(shù)據(jù)庫驅動和Url

數(shù)據(jù)庫

驅動類名

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最大的優(yōu)點是對斷開連接訪問數(shù)據(jù)庫方式的強有力支持。相比起來,JDBC也引入類似的功能,RowSet,但是比起ADO.NET來,還是不夠。

2.ADO.NET不包括分布式事務的接口,ADO.NET的分布式事務是通過MS DTC統(tǒng)一管理的。JDBC本身就提供了對分布式事務支持的接口,不同的JDBC Driver實現(xiàn)了這一個接口,就支持分布式事務了。

3.ADO.NET中,不同的ADO .NET Provider的參數(shù)格式不一樣的。OleDb和Odbc都是使用匿名參數(shù),SqlClient使用“@”開頭的命名參數(shù),OracleCLient使用“:”開頭的命名參數(shù)

4.JDBC中,參數(shù)計數(shù)是從1開始的,最初使用者容易犯錯。ADO.NET沒有此問題

5.ADO.NET是從ODBC,JDBC,OLEDB 發(fā)展過來,而JDBC是ODBC的JAVA版本

6.ADO.NET封裝程度比較高,用起來很方便

 

代碼對比

 

2.DBHelper 和 DBUtils

DBHelper有動軟的SQLHelper,DbProviderFactory封裝的DBHelper,微軟EnterpriseLibary封裝的DBHelper
主要是封裝的ADO.NET的代碼,簡化dal層的操作
支持多種數(shù)據(jù)庫,需要自己反射把DataTable轉換成Model

Dbutils由Apache公司開發(fā)
主要是封裝了JDBC的代碼,簡化dao層的操作,有對象映射的功能。
支持多種數(shù)據(jù)庫,可以直接把數(shù)據(jù)轉換成Model

源碼預覽

seo優(yōu)化培訓,網(wǎng)絡推廣培訓,網(wǎng)絡營銷培訓,SEM培訓,網(wǎng)絡優(yōu)化,在線營銷培訓 View Code

源碼下載

seo優(yōu)化培訓,網(wǎng)絡推廣培訓,網(wǎng)絡營銷培訓,SEM培訓,網(wǎng)絡優(yōu)化,在線營銷培訓

3.EF 和 Hibernate

(1).對象關系配制

EF支持Fluent API和Attribute方式

Hibernate支持XML和注解的方式 

(2).Linq 和 HQL,Criteria  面向對象的查詢方法

Linq相比于HQL更強大,支持編譯時排錯,有智能提示;Criteria相當于Where,Select 等各種方法

(3).原生SQL支持

EF:context.Database.SqlQuery() 

Hibernate:getSession().createSQLQuery()

(4).緩存

一級緩存:EF和Hibernate都默認支持一級緩存

二級緩存:Hibernate支持二級緩存,一般使用Nosql來代替二級緩存

(5).更新部分字段

EF:

先讓EF跟蹤實體,然后修改實體即可

EntityEntry<News> entry = cnotext.Entry<News>(news);  

entry.State = EntityState.Unchanged;  

entry.Property(t => t.xxxx).IsModified = true; //設置要更新的屬性  

context.SaveChanges(); 

Hibernate:

1.使用HQL語句,因為實體字段沒有狀態(tài)

2.修改hbm的class 的dynamic-update="true",在dao先find出來,再修改保存,影響性能

更新部分字段的方法

(6).主從級聯(lián)保存

EF和Hibernate都支持主從級聯(lián)保存

(7).批量更新和刪除

ORM框架在批量數(shù)據(jù)處理的時候是有弱勢。

ORM是針對某一對象(單個對象)簡單的查\改\刪\增,不是批量修改、刪除,適合用ORM;而對于批量修改、刪除,不適合用ORM

EF:可以使用SQL實現(xiàn)批量更新和刪除,context.Database.ExecuteSqlCommand()

Hibernate:可以使用HQL實現(xiàn)批量更新和刪除,getSession().createQuery(hql).executeUpdate()

(8).附上封裝好的Hibernate BaseDao

seo優(yōu)化培訓,網(wǎng)絡推廣培訓,網(wǎng)絡營銷培訓,SEM培訓,網(wǎng)絡優(yōu)化,在線營銷培訓 BaoDao

(9).源碼下載

seo優(yōu)化培訓,網(wǎng)絡推廣培訓,網(wǎng)絡營銷培訓,SEM培訓,網(wǎng)絡優(yōu)化,在線營銷培訓

 

4.擴展閱讀

Hibernate的10個常見面試問題及答案

update 和 merge、saveOrUpdate的區(qū)別

 

Dapper和Mybatis的比較放在下一篇吧,也許直接到微服務篇了

時間倉促,很多東西沒有寫到,歡迎大家指點

未完,待續(xù),歡迎評論拍磚


作  者: 易   磊(Rabbit_Yi)  seo優(yōu)化培訓,網(wǎng)絡推廣培訓,網(wǎng)絡營銷培訓,SEM培訓,網(wǎng)絡優(yōu)化,在線營銷培訓
出  處: http://www.cnblogs.com/rabbityi/ 
版權聲明:本文版權歸作者和博客園共有,歡迎轉載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。 
特此聲明:所有評論和私信都會在第一時間回復。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信我 
聲援博主:如果您覺得文章對您有幫助,可以點擊文章下部推薦】關注我】。您的鼓勵是作者堅持原創(chuàng)和持續(xù)寫作的最大動力! 

http://www.cnblogs.com/rabbityi/p/7132789.html