摘要:編者按還在為管理代碼中的語(yǔ)句而煩惱嗎讓幫你擺脫困境吧本文系工程師編譯整理注意使用其實(shí)會(huì)更簡(jiǎn)單如果使用的是普通的沒(méi)有任何外部類庫(kù)的,那么就必須得自己去管理語(yǔ)句。同時(shí),這也使得維護(hù)和測(cè)試嘗試從代碼中一條語(yǔ)句到客戶端運(yùn)行更加困難。
【編者按】還在為管理 Java 代碼中的 SQL 語(yǔ)句而煩惱嗎?讓 Zemian 幫你擺脫困境吧!本文系 OneAPM 工程師編譯整理
**注意:**使用java.util.Properties#loadFromXML其實(shí)會(huì)更簡(jiǎn)單!
如果使用的是普通的、沒(méi)有任何外部類庫(kù)的 Java JDBC,那么就必須得自己去管理 SQL 語(yǔ)句。很不幸的是,Java String 并不支持多行結(jié)構(gòu),所以開發(fā)者必須使用許多引號(hào)+連接符來(lái)拼接語(yǔ)句,這會(huì)使得 SQL 語(yǔ)句非常難于閱讀和管理。同時(shí),這也使得維護(hù)和測(cè)試(嘗試從 Java 代碼中 Copy 一條 SQL 語(yǔ)句到 SQL 客戶端運(yùn)行)更加困難。如果能保證整條 SQL 語(yǔ)句完好無(wú)缺,又避免了 Java 的干擾,那該有多好??!
這里有個(gè)快速解決方案,把 SQL 查詢語(yǔ)句存儲(chǔ)在 XML 的 CDATA 里面:
getUser getSpecialCodeByUserId
如果現(xiàn)在再去讀 SQL 語(yǔ)句,開發(fā)者可以利用內(nèi)建的 JAXB。
import javax.xml.bind.annotation.XmlRootElement; import java.util.HashMap; import java.util.Map; @XmlRootElement public class SqlMap { Mapsqls = new HashMap<>(); public Map getSqls() { return sqls; } public void setSqls(Map sqls) { this.sqls = sqls; } public String getSql(String name) { return sqls.get(name); } public static SqlMap load(String name) throws Exception { String xml = Utils.loadString(name); SqlMap sqlMap = unmarshallXML(xml ); return sqlMap; } }
**原文鏈接:**How to Store and Manage SQL Statements More Effectively With Java
本文系 OneAPM 工程師編譯整理。想閱讀更多技術(shù)文章,請(qǐng)?jiān)L問(wèn) OneAPM 官方博客。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/64429.html
摘要:只用語(yǔ)句,也能完成很多事情,如果不夠,你還可以調(diào)用數(shù)據(jù)庫(kù)的特定功能和存儲(chǔ)過(guò)程。在中,并沒(méi)有針對(duì)存儲(chǔ)過(guò)程的實(shí)際支持,本地查詢是調(diào)用存儲(chǔ)過(guò)程的唯一方式。規(guī)范引入了幾個(gè)新的功能以應(yīng)對(duì)這些低效操作,比如實(shí)體圖,條件更新和存儲(chǔ)過(guò)程查詢。 經(jīng)常在網(wǎng)上看到開發(fā)者們抱怨 JPA 性能低下的帖子或文章,但如果仔細(xì)查看這些性能問(wèn)題,常會(huì)發(fā)現(xiàn)導(dǎo)致問(wèn)題的根本原因大致包括以下幾個(gè): 使用過(guò)多的 SQL 查詢從...
閱讀 3367·2021-11-08 13:18
閱讀 1504·2021-10-09 09:57
閱讀 1362·2021-09-22 15:33
閱讀 4287·2021-08-17 10:12
閱讀 5274·2021-08-16 11:02
閱讀 2846·2019-08-30 10:56
閱讀 1123·2019-08-29 18:31
閱讀 3394·2019-08-29 16:30