Java在寫數(shù)據(jù)庫(kù)查詢時(shí),我接觸過(guò)四種方式:
1、純Java代碼,引用對(duì)應(yīng)的數(shù)據(jù)庫(kù)驅(qū)動(dòng)包,自己寫連接與釋放邏輯(可以用連接池)
這種模式實(shí)際上性能是非常不錯(cuò)的,但是使用起來(lái)并不是非常方便:一是要手工為Connection做獲取與釋放,大量的冗余代碼也容易出錯(cuò);另一個(gè)是,復(fù)雜的SQL用字符串寫起來(lái)簡(jiǎn)直不可維護(hù)(換行、可視長(zhǎng)度、參數(shù)都是問(wèn)題)。
2、使用Spring JdbcTemplate
這個(gè)其實(shí)還是挺不錯(cuò)的,配置比較簡(jiǎn)單,功能豐富上比手工管理Connection要舒服多了,而且代碼也比較簡(jiǎn)潔。突出的問(wèn)題就是SQL維護(hù)還是挺麻煩的。
3、使用Hibernate框架
一句話,配置很麻煩,用起來(lái)還是挺不錯(cuò)的。但是有一個(gè)致命缺陷,它并不能像單表查詢一樣可以幫我們完成多表的查詢。如果有復(fù)雜的多表查詢或查詢條件,還是得用SQL去查,這對(duì)于一些業(yè)務(wù)邏輯復(fù)雜或者會(huì)經(jīng)常變更的業(yè)務(wù)來(lái)說(shuō),后期維護(hù)就是災(zāi)難,改到想哭(因?yàn)檎娴氖呛芑靵y,一定要開始就規(guī)劃好)。
4、使用MyBatis框架
這個(gè)是當(dāng)前我所做項(xiàng)目最喜歡用的數(shù)據(jù)庫(kù)持久化框架了,它通過(guò)XML配置可以非常簡(jiǎn)單直觀地幫你完成各種條件、判斷、多表的綜合查詢,實(shí)現(xiàn)方式比Java代碼拼SQL要舒服太多了,在這方面更是甩Hibernate一條街。要說(shuō)易用性,其實(shí)也挺容易用的,但是配置上也要對(duì)一些數(shù)據(jù)做映射,不過(guò)相對(duì)而言更加靈活。它的實(shí)體類并不一定要是數(shù)據(jù)庫(kù)物理表