LOB ๋ฐ์ดํฐ ์ฒ๋ฆฌ
tbJDBC์์ LOB ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํฉ๋๋ค.
JDBC ํ์ค์์๋ LOB ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ ๊ฐ์ง ํ์
์ ์ ๊ณตํฉ๋๋ค. BLOB(๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ)์ CLOB(๋ฌธ์์ด ๋ฐ์ดํฐ)๊ฐ ์ด์ ํด๋นํฉ๋๋ค. tbJDBC์์๋ ์ด ๋ ๊ฐ์ง ํ์
์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ง์์(locator)๋ผ๋ ๊ฐ๋
์ ์ฌ์ฉํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก LOB ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ํ์ ์ง์์๋ฅผ ์์ฑํ์ฌ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ์์น๋ฅผ ์ฐพ์ ๊ฐ ์ ์๋๋ก ํฉ๋๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์๋ ์ด ์ง์์๋ง์ ์ฌ์ฉํ์ฌ ํ์ํ ๋๋ง๋ค LOB ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ธ ์ ์ ๋ค. ์ด ๋๋ฌธ์ ์์คํ
์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐ ๋์์ ์ค ์ ์์ต๋๋ค.
๋ค์์ tbJDBC์์ ์ ๊ณตํ๋ LOB ํด๋์ค์
๋๋ค.
com.tmax.tibero.jdbc.TbBlob
com.tmax.tibero.jdbc.TbClob
LOB ์ง์์ ์ป์ด์ค๊ธฐ
JDBC ํ์ค์์ ์ ๊ณตํ๋ ResultSet ๊ฐ์ฒด๋ CallableStatement ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ LOB ์ง์์๋ฅผ ์ป์ด์ฌ ์ ์์ต๋๋ค.
๋ค์์ ResultSet ๊ฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ LOB ์ง์์๋ฅผ ์ป์ด์ค๋ ์์
๋๋ค.
๋ค์์ CallableStatement ๊ฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ LOB ์ง์์๋ฅผ ์ป์ด์ค๋ ์์
๋๋ค.
LOB ์ง์์ ๋๊ฒจ์ฃผ๊ธฐ
JDBC ํ์ค์์ ์ ๊ณตํ๋ PreparedStatement ๊ฐ์ฒด๋ CallableStatement ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ LOB ์ง์์๋ฅผ ๋๊ฒจ์ค ์ ์์ต๋๋ค.
๋ค์์ PreparedStatement ๊ฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ LOB ์ง์์๋ฅผ ๋๊ฒจ์ฃผ๋ ์์
๋๋ค.
๋ค์์ CallableStatement ๊ฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ LOB ์ง์์๋ฅผ ๋๊ฒจ์ฃผ๋ ์์
๋๋ค.
LOB ๋ฐ์ดํฐ ์ฝ๊ณ ์ฐ๊ธฐ
LOB ์ง์์๋ฅผ ์ป์ด์ค๋ฉด JDBC ํ์ค์์ ์ ๊ณตํ๋ API๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ธ ์ ์์ต๋๋ค. LOB ๋ฐ์ด ํฐ๋ ๋ณดํต Byte ๋ฐฐ์ด์ด๋ ์คํธ๋ฆผ ํํ๋ก ์ฝ์ด์ฌ ์ ์๋๋ฐ, ์ผ๋ฐ์ ์ธ ์คํธ๋ฆผ ํํ์ ๋ฌ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ฒ ๋ด๋ถ์ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฏ๋ก ์ฐ๊ฒฐ์ด ์ ์ง๋๋ ํ ์ธ์ ๋ ์ง ์ ๊ทผํ ์ ์์ต๋๋ค.
JDBC ํ์ค์์๋ LOB ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ธ ์ ์๋๋ก ๋ค์๊ณผ ๊ฐ์ API๋ฅผ ์ ๊ณตํฉ๋๋ค.
InputStream Clob.getAsciiStream()
Reader Clob.getCharacterStream()
String Clob.getSubString()
OutputStream Clob.setAsciiStream()
๋ค์์ LOB ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ์์
๋๋ค.
๋ค์์ LOB ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ์์
๋๋ค.
์์ ์์์ OutputStream์ด๋ Writer ๊ฐ์ฒด๋ ๋ฐ์ดํฐ๋ฅผ ์ธ ๋๋ง๋ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ง์ ์ ์ก๋๋ฏ๋ก ๋ณ๋ ์ UPDATE ๋ฌธ์ฅ์ ์คํํ ํ์๊ฐ ์์ต๋๋ค. ํ์ง๋ง LOB ์์ฒด๋ ํธ๋์ญ์
๋ฒ์์ ํฌํจ๋๋ฏ๋ก ๋ฐ๋์ ์ปค๋ฐ์ ์ํํด์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ต์ข
์ ์ผ๋ก ๋ฐ์๋ฉ๋๋ค.
tbJDBC์์๋ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ LOB ํํ๋ก ์ ์ฅํ๊ธฐ ์ํด ์์ LOB์ ์ ๊ณตํฉ๋๋ค. ๋จ, ์ด ๋์ฉ๋ ๋ฐ์ดํฐ ๋ ํ
์ด๋ธ์ ์ ์ฅ๋์ง ์์ต๋๋ค.
์ด๋ฅผ ์ํด ๋ค์๊ณผ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
Connection.createBlob() return Blob
Connection.createClob() return Clob
Connection.createNClob() return NClob
์์ LOB์ ์ฌ์ฉํ์ฌ ์ ์ฅํ ๋ฐ์ดํฐ๋ ์์ ํ
์ด๋ธ ์คํ์ด์ค์ ์ ์ฅ๋ฉ๋๋ค. ์ด ์์ญ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ๋ ๋ ํ์ํ์ง ์๊ฒ ๋๋ฉด, ์ฌ์ฉ์๋ ๋ฐ๋์ ์ด๊ฒ์ ํด์ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด ์์ญ์ ๋ฐ์ดํฐ๋ ๊ณ์ ๋จ์์๊ฒ ๋ฉ๋๋ค.
์์ LOB๋ LOB ์ปฌ๋ผ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ธ๋ฉํ ๋ ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์์ ๋์ดํ ๋ฉ์๋๋ค์ JDBC ํ์ค API๋ค๋ก ์ผ๋ถ ๋ฉ์๋๋ Java ๋ฒ์ ์ ๋ฐ๋ผ ์ฌ์ฉํ ์ ์๋ ๊ฒ๋ค์ด ์กด์ฌํฉ๋๋ค. ์ด๋ฅผ ์ํด tbJDBC์์๋ ๋ณ๋๋ก ๋ค์๊ณผ ๊ฐ์ ๊ตฌํ ๋ฉ์๋๋ค์ ์ ๊ณตํ๊ณ ์์ต๋๋ค. ์ด ๋ฉ์๋๋ค์ ์ด์ฉํ ๊ฒฝ์ฐ ๋ค๋ฅธ JDBC์์ ํธํ์ฑ์ ๋จ์ด์ง์ง๋ง tbJDBC์ ํํ์ฌ Java ๋ฒ์ ์ ๊ด๊ณ ์์ด ์ฌ์ฉํ ์ ์ ๋ ์ฅ์ ์ด ์์ต๋๋ค.
TbConnection.createTbBlob() return TbBlob
TbConnection.createTbClob() return TbClob
TbConnection.createTbNClob() return TbNClob
Tibero 4.0 SP1๊น์ง์ tbJDBC์์๋ ๊ตฌํ ๋ฉ์๋๋ฅผ ๋ค์๊ณผ ๊ฐ์ ํํ๋ก ์ ๊ณตํ์์ผ๋, ํธํ์ฑ์ ๋ฌธ์ ๊ฐ ์์ด ํ๊ธฐ(deprecated)ํ๊ณ ์์ ๋ฉ์๋๋ค๋ก ๋์ฒด๋์์ต๋๋ค.
static TbBlob.createTemporary(Connection conn) return TbBlob
static TbClob.createTemporary(Connection conn) return TbClob
static TbClob.createTemporaryNClob(Connection conn) return TbClob
LOB์ ๊ด๋ จ๋ ํ์ค API์ ์ ๋ณด๋ JDBC ํ์ค ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํฉ๋๋ค.
tbJDBC์์๋ LOB์ ๊ด๋ จ๋ API๋ก BLOB, CLOB, NCLOB ๋ฉ์๋๋ฅผ ์ถ๊ฐ๋ก ์ ๊ณตํฉ๋๋ค.
TbConnection ํด๋์ค์์๋ ๋ค์๊ณผ ๊ฐ์ API๋ฅผ ์ถ๊ฐ๋ก ์ ๊ณตํฉ๋๋ค.
TbBlob ํด๋์ค์์๋ ๋ค์๊ณผ ๊ฐ์ API๋ฅผ ์ถ๊ฐ๋ก ์ ๊ณตํฉ๋๋ค.
TbClob ํด๋์ค์์๋ ๋ค์๊ณผ ๊ฐ์ API๋ฅผ ์ถ๊ฐ๋ก ์ ๊ณตํฉ๋๋ค.
TbNClob ํด๋์ค์์๋ ๋ค์๊ณผ ๊ฐ์ API๋ฅผ ์ถ๊ฐ๋ก ์ ๊ณตํฉ๋๋ค.