Como armazenar/recuperar documentos pdf para/do SQL Server

O exemplo abaixo mostra como armazenar e ler arquivos pdf do SQL server.

import java.sql.*;
import java.io.*;

public class savePDFToDb {
    public static void main(String[] args) {
        DB db = new DB();
        Connection conn=db.dbConnect(
                "jdbc:jtds:sqlserver://localhost:1433/smpp","sa","");
        
        db.insertPDF(conn,"d://servlet//jdbc//test.pdf");
        db.getPDFData(conn);
    }
    
}

class DB {
    public DB() {}
    
    public Connection dbConnect(String db_connect_string,
            String db_userid, String db_password) {
        try {
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            Connection conn = DriverManager.getConnection(
                    db_connect_string, db_userid, db_password);
            
            System.out.println("conectado");
            return conn;
            
        catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    
    public void insertPDF(Connection conn,String filename) {
        int len;
        String query;
        PreparedStatement pstmt;
        
        try {
            File file = new File(filename);
            FileInputStream fis = new FileInputStream(file);
            len = (int)file.length();
            query = ("insert into TableImage VALUES(?,?,?)");
            pstmt = conn.prepareStatement(query);
            pstmt.setString(1,file.getName());
            pstmt.setInt(2, len);
            pstmt.setBinaryStream(3, fis, len); 
            pstmt.executeUpdate();
            
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public void getPDFData(Connection conn) {
        
        byte[] fileBytes;
        String query;
        try {
            query = 
              "select data from tableimage where filename like '%.pdf%'";
            Statement state = conn.createStatement();
            ResultSet rs = state.executeQuery(query);
            if (rs.next()) {
                fileBytes = rs.getBytes(1);
                OutputStream targetFile=  new FileOutputStream(
                        "d://servlet//jdbc//newtest.pdf");
                targetFile.write(fileBytes);
                targetFile.close();
            }
            
        catch (Exception e) {
            e.printStackTrace();
        }
    }
};