[4th Seoul Workshop]Database and Java

¹Ú Àç ¹ü
120-031, ¼­¿ïƯº°½Ã ¼­´ë¹®±¸ ÃæÁ¤·Î3°¡ 32-11 ÃæÁ¤ºôµù 2Ãþ
Á¦À̾¾Çö½Ã½ºÅÛ(ÁÖ) ¿¤¸²³×Æ®
E-mail : jbpark@elim.net
URL : http://www.elim.net/~jbpark/
Abstract:
Database´Â ÄÄÇ»ÅÍ¿¡¼­ ´Ù·ç´Â ¸ðµç Á¤º¸¸¦ ¾î¶»°Ô ´Ù·ê °ÍÀΰ¡¿¡ ´ëÇÑ ³íÀǰ¡ ÀÌ·ï³½ ÄÄÇ»ÅÍ ±â¼úÀÇ ÇÑ ºÐ¾ßÀÌ´Ù. ¿ùµå¿ÍÀ̵åÀ¥À̶ó´Â °³¹æµÈ ȯ°æÀÌ »õ·Î¿î ÄÄÇ»ÆÃ ȯ°æÀ¸·Î ¶°¿À¸£¸é¼­ ¸ðµç ¼­ºñ½º °³¹ß ±â¼ú ¶ÇÇÑ »õ·Î¿î º¯È­¸¦ ¿ä±¸ÇÏ°Ô µÇ¾ú°í, Database¶ÇÇÑ ¿¹¿Ü´Â ¾Æ´Ï´Ù.

´Ù½Ã ¸»ÇØ, ÇöÀçÀÇ Database ±â¼ú·Î´Â °³¹æµÈ ȯ°æÀ» Áö¿øÇϱ⿡´Â ¹«¸®°¡ µû¸¥´Ù´Â °ÍÀÌ´Ù. ÀÌ¿¡ 95³âÁ߹ݺÎÅÍ »õ·Î¿î À̽´·Î ¶°¿À¸£°í ÀÖ´Â Java ±â¼ú¿¡¼­ Áö¿øÇϰí ÀÖ´Â JDBC ±â¼úÀ» °³¹æ ȯ°æÀ̶óÇÒ ¼ö ÀÖ´Â »õ·Î¿î ÄÄÇ»ÆÃ ȯ°æÀÇ ½ÅDatabase ±â¼ú·Î ¼Ò°³ÇϰíÀÚ ÇÑ´Ù.

Database±â¼ú¿¡ ´ëÇÑ »õ·Î¿î ¿ä±¸¸¦ Á¤¸®ÇØ º¸°í, JDBC ±â¼ú¿¡ ´ëÇÑ ¼Ò°³¿Í À̿뿡 ´ëÇØ »ìÆìº¸°í, À̸¦ ÅëÇØ ¾ÕÀ¸·ÎÀÇ Database ±â¼ú·Î½á JDBC ±â¼úÀ» Á¦¾ÈÇØº¸°íÀÚ ÇÑ´Ù.

Keywords:
Database, Java, DBMS, ODBC, JDBC, SQL OQL, RDB, ORDB, OODB

1. ¼­·Ð

1.1 µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÏ¿©...

Database(µ¥ÀÌÅͺ£À̽º)´Â ÄÄÇ»ÅÍ¿¡¼­ ´Ù·ç´Â ¸ðµç Á¤º¸¸¦ ¾î¶»°Ô ´Ù·ê °ÍÀΰ¡¿¡ ´ëÇÑ ³íÀǰ¡ ÀÌ·ï³½ ÄÄÇ»ÅÍ ±â¼úÀÇ ÇÑ ºÐ¾ßÀÌ´Ù. ÇöÀç »õ·Î¿î ÄÄÇ»ÆÃ ȯ°æÀ¸·Î ´ëµÎµÇ°í ÀÖ´Â ¿ùµå¿ÍÀ̵å À¥À̶ó´Â °³¹æµÈ ȯ°æ¿¡¼­ Á¤º¸°¡ ±× ¾î´À ¶§º¸´Ùµµ Áß¿äÇÑ Àǹ̸¦ °¡Áø Á¸Àç°¡ µÇ¾î¹ö·È´Ù. ´õ¿ì±â »õ·Î¿î Database ±â¼ú¸¶Àú ¿ä±¸µÇ°í ÀÖ´Ù.
ÇöÀç Database ±â¼ú¿¡¼­ Database´Â Å©°Ô ¼¼°¡Áö·Î ºÐ·ù°¡ µÇ´Â µ¥,
°ü°èÇü µ¥ÀÌÅͺ£À̽º, °´Ã¼ °ü°èÇü µ¥ÀÌÅͺ£À̽º, °´Ã¼ ÁöÇâÇü µ¥ÀÌÅͺ£À̽º°¡ ¹Ù·Î ±×°ÍÀÌ´Ù.

1.1.1 °ü°èÇü µ¥ÀÌÅͺ£À̽º

µ¥ÀÌÅͺ£À̽º ¸ðµ¨À» ±¸¼º¿ä¼ÒÀÇ °ü°è Ç¥Çö(Relationship)¿¡ ÁßÁ¡À» µÐ µ¥ÀÌÅͺ£À̽º ¸ðµ¨À» °ü°èÇü µ¥ÀÌÅͺ£À̽º¶ó°í ÇÑ´Ù.
Sybase, Informix, Oracleµî°ú °°Àº °ÍµéÀÌ ÀÖÀ¸¸ç, ÀϹÝÀûÀ¸·Î ¸¹ÀÌ »ç¿ëµÇ¾î ¿Ô´ø µ¥ÀÌÅͺ£À̽ºÀÌ´Ù.


[±×¸² 1] °ü°èÇü µ¥ÀÌÅͺ£À̽º(Relational Database)

1.1.2 °´Ã¼ °ü°èÇü µ¥ÀÌÅͺ£À̽º

µ¥ÀÌÅͺ£À̽º ¸ðµ¨À» °´Ã¼ ´ÜÀ§ÀÇ °ü°èÇ¥Çö(Object Relationship)¿¡ ÁßÁ¡À» µÐ µ¥ÀÌÅͺ£À̽º ¸ðµ¨À» °´Ã¼ °ü°èÇü µ¥ÀÌÅͺ£À̽º¶ó°í ÇÑ´Ù.
Illustra°¡ ´ëÇ¥ÀûÀÎ µ¥ÀÌÅͺ£À̽ºÀ̸ç, ¸ÖƼ¹Ìµð¾î Á¤º¸°¡ ¸¹¾ÆÁö¸é¼­ Á¡Â÷ ÀÌ·± ÇüÅÂÀÇ µ¥ÀÌÅͺ£À̽º·Î ±¸ÃàµÇ°í ÀÖ´Â ½ÇÁ¤ÀÌ´Ù.

[±×¸² 2] °´Ã¼ °ü°èÇü µ¥ÀÌÅͺ£À̽º(Object Relational Database)

1.1.3 °´Ã¼ ÁöÇâÇü µ¥ÀÌÅͺ£À̽º

µ¥ÀÌÅͺ£À̽º ¸ðµ¨À» °´Ã¼¼öÁØÀÇ ÁúÀÇ(Object-level Query)Ç¥Çö¿¡ ÁßÁ¡À» µÐ µ¥ÀÌÅͺ£À̽º ¸ðµ¨À» °´Ã¼ ÁöÇâÇü µ¥ÀÌÅͺ£À̽º¶ó°í ÇÑ´Ù.
ObjectStore, VERSANT¿Í °°Àº µ¥ÀÌÅͺ£À̽º°¡ ÀÌ¿¡ ¼ÓÇϸç, ÇöÀç·Î½á´Â °¡Àå Áøº¸µÈ ÇüÅÂÀÇ µ¥ÀÌÅͺ£À̽º¶ó°í ÇÒ ¼ö ÀÖ°Ú´Ù.

[±×¸² 3] °´Ã¼ ÁöÇâÇü µ¥ÀÌÅͺ£À̽º(Object Oriented Database)

1.2 »ç·Ê·Î º» µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ ±â¼úÀû ¿ä±¸

À¥ ȯ°æ¿¡¼­ Database ±â¼ú¿¡ ¾î¶² »õ·Î¿î ±â¼úÀû ¿ä±¸°¡ ÀÖ´ÂÁö »ìÆìº¸±â Àü¿¡ ¿äÁò ÀÎÅͳÝÀÇ À̽´Áß¿¡ À̽´¶ó°í ÇÒ ¼ö ÀÖ´Â ÀÎÆ®¶ó³Ý ¼Ö·ç¼ÇÀ» ±¸ÃàÇÑ ÇÑ »ç·Ê¸¦ »ìÆìº¸ÀÚ.




[±×¸² 4] ÀÎÆ®¶ó³Ý ¼Ö·ç¼Ç ±¸¼ºµµ

[±×¸²4]´Â ¾î´À ½Å¹®»ç¿¡¼­ ±¸ÃàÇÑ ÀÎÆ®¶ó³Ý ¼Ö·ç¼ÇÀÇ ±¸¼ºµµÀÌ´Ù.
ÀÌ ÀÎÆ®¶ó³Ý ¼Ö·ç¼Ç¿¡ ´ëÇÑ ¿ä±¸»çÇ×Àº ´ÙÀ½°ú °°¾Ò´Ù,

  1. Database¿¡ ´ëÇÑ Å¬¶óÀ̾ðÆ®(Client)¸¦ ¸ÖƼÇ÷§ÆûÀ¸·Î Áö¿øÇÒ °Í. (Win95, WinNT, Mac, Solaris)
  2. ¿©·¯ ¼­¹ö¿¡ ºÐ»êµÇ¾î ÀÖ´Â Database¸¦ È¿À²ÀûÀ¸·Î °ü¸®ÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â °Í.
  3. ¸ðÁ¾ÀÇ Ã³¸®¿¡ ´ëÇÏ¿© º´·ÄÀûÀΠ󸮶ÇÇÑ Áö¿øÇÒ °Í.
  4. Database¿¡ ´ëÇÑ Á¤º¸°Ë»ö ¹× Á¤º¸ÇöȲ ¼­ºñ½ºÀÇ °æ¿ì ½Ç½Ã°£À¸·Î Áö¿øÇÒ °Í.
  5. ÅØ½ºÆ®È­µÈ ±â»çÁ¤º¸¿Í 2D À̹ÌÁö ±×¸®°í, ÇâÈÄ µ¿È­»ó±îÁöµµ DatabaseÈ­ÇÏ¿© Á÷Á¢ °Ë»ö ¹× ¿­¶÷ÇÒ ¼ö ÀÖµµ·Ï ÇÒ °Í.
  6. ±âÁ¸ÀÇ »ç³» MIS¿¡ ±¸ÃàµÇ¾î ÀÖ´Â Database¿Í »õ·Ó°Ô ±¸ÃàµÇ´Â Database¿Íµµ ÀÚÀ¯·Ó°Ô ¿¬µ¿°¡´É ÇÒ °Í.
  7. ¸ðµç Database´Â ÇϳªÀÇ ¼­¹ö°æ·Î¸¦ ÅëÇÏ¿© À¥°ú ¿¬µ¿ÀÌ °¡´ÉÇÒ °Í.
  8. »ç³»ÀÇ ¸ðµç 󸮰¡ À¥ ºê¶ó¿ìÀú»ó¿¡¼­ °¡µ¿µÉ °Í.
»ç½Ç ÀÌ Á¤µµÀÇ ¿ä±¸´Â À¢¸¸ÇÑ ±Ô¸ðÀÇ È¸»ç¿¡¼­´Â ÃæºÐÈ÷ ÀÖÀ»¸¸ÇÑ ¿ä±¸»çÇ×ÀÌ´Ù.
±×·±µ¥, ¹®Á¦´Â Áö±Ý±îÁöÀÇ µ¥ÀÌÅͺ£À̽º ±â¼ú·Î ÀÌ·± ¼Ö·ç¼ÇÀ» ±¸ÃàÇϱâ À§ÇÑ ±â¼úÀûÀÎ µÞ¹ÞħÀ¸·Î´Â ¸Å¿ì ¾î·Á¿î Á¡ÀÌ ¸¹´Ù´Â °ÍÀÌ´Ù.

»õ·Î¿î Database ±â¼ú¿¡ ´ëÇÑ ¿ä±¸¸¦ ÀϹÝÀûÀÎ ¼öÁØÀ¸·Î Á¤¸®¸¦ ÇØ º¸¸é ´ÙÀ½°ú °°´Ù.

  1. Database ClientÀÇ ¸ÖƼÇ÷§Æû Áö¿ø.
  2. ºÐ»êµÈ Database ȯ°æÀ» À§ÇÑ Æ®·£Àè¼Ç ó¸® Áö¿ø.
  3. »óÈ£ µ¶¸³µÈ Æ®·¢Àè¼ÇµéÀÇ º´·Äó¸® Áö¿ø.
  4. ½Ç½Ã°£ Á¤º¸»ç¿ëÀ» À§ÇÑ ½Ç½Ã°£ Database Á¢±Ù Áö¿ø.
  5. À̱âÁ¾ Database ȯ°æÀ» À§ÇÑ ÅëÇÕÀûÀÎ Æ®·£Àè¼Ç Áö¿ø.
  6. ¸ÖƼ¹Ìµð¾î Á¤º¸¿¡ ´ëÇÑ Áö¿ø.
±×·¸´Ù¸é, ÀÌ·± ´Ù¾çÇÑ ¿ä±¸»çÇ×À» ¸¸Á·½ÃÄÑ ÁÙ ¼ö ÀÖ´Â Database ±â¼úÀº ¹«¾ùÀϱî?

2. JDBC - Java Database Connectivity

2.1 °³¿ä

"Standard SQL database Access interface in Java Technology"

ÀÌ ¸»Àº JDBC¸¦ ©¸·ÇÏ°Ô ÇÑ ¸¶µð·Î ¼³¸íÇÑ ¸»ÀÌ´Ù.

JDBC´Â ´Ù¾çÇÑ °ü°èÇü µ¥ÀÌÅͺ£À̽ºµéÀ» À§ÇÑ ÀϰüµÈ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇϸç, Java API¿¡´Â java.sql À̶ó´Â ÆÐŰÁö·Î Á¤ÀǵǾî ÀÖ´Ù.
±× ³»¿ëÀ» º¸¸é, Database Connection, SQL Statements, Result Sets, Database Metadata, µîµîÀ» Áö¿øÇϰí ÀÖÀ¸¸ç, °¢±â ´Ù¸¥ Database¸¦ ¿¬°áÇϰí ÀÖ´Â ´ÙÁß µå¶óÀ̹ö¸¦ Áö¿øÇϱâ À§ÇÑ Driver Manager¸¦ ÅëÇÏ¿© ±¸ÇöµÇ°í ÀÖÀ¸¸ç, Java AppletÀ̳ª Java Application¿¡ ÀÇÇØ ±¸ÇöµÇ°Å³ª »ç¿ëµÉ ¼ö ÀÖ´Ù.
¶ÇÇÑ, ÀÚ¹ÙÀÌ¿ÜÀÇ C/C++°ú °°Àº ¾ð¾î·Î ±¸ÇöµÇ¾î ÀÖ´Â Database Access Libarieyµé°ú Native Method¸¦ »ç¿ëÇÏ¿© ¿¬°áÇÒ ¼ö ÀÖ´Ù.

2.1.1 The JDBC Driver

À̰ÍÀº API, Driver Manager, Driver Module ÀÌ·¸°Ô 3-tier ±¸Á¶·Î µÇ¾î ÀÖ´Ù. ½ÇÁ¦·Î ÀÌ 3-tier ±¸Á¶´Â ´Ù½Ã ´ÙÁß ±¸Á¶·Î ´Ù´Ü°èÈ­µÉ ¼ö°¡ ÀÖ´Â µ¥, Driver ModuleÀÌ ±×°ÍÀε¥ Å©°Ô ¼¼°¡ÁöÀÇ °æ¿ì·Î ³ª´©¾î »ý°¢ÇØ º¼ ¼ö ÀÖ´Ù.

  1. JDBC µå¶óÀ̹ö¸¦ Á÷Á¢ »ç¿ëÇÏ¿© Database¿¡ ¿¬°áÇϰíÀÚ ÇÒ °æ¿ì
  2. JDBC-ODBC Bridge¸¦ ÀÌ¿ëÇÏ¿© ODBC µå¶óÀ̹ö¸¦ ÅëÇØ Database¿¡ ¿¬°áÇϰíÀÚ ÇÒ °æ¿ì
  3. JDBC-ODBC Bridge¾øÀÌ Á÷Á¢ ODBC °¢°¢ÀÇ OpenChannel Server¿Í ¿¬°áÈÄ ODBC Driver Manager·Î ¿¬°áÇϰíÀÚ ÇÒ °æ¿ì

2.1.2 The JDBC-ODBC Bridge Driver

À̰ÍÀº ÇѸ¶µð·Î ¸»Çؼ­, JDBCÀÇ Method È£ÃâÀ» ODBC ÇÔ¼ö È£Ãâ·Î ¹Ù²ãÁÖ´Â µå¶óÀ̹ö¶ó°í º¼ ¼ö ÀÖ´Ù. ´Ù½Ã ¸»Çؼ­, ±âÁ¸¿¡ ODBC¸¦ ÅëÇØ ¿¬°áµÇµµ·Ï ±¸ÃàµÇ¾î ÀÖ´Â ½Ã½ºÅÛÀÇ °æ¿ì¿¡ »õ·Î¿î °³¹ß¾øÀÌ ±âÁ¸ÀÇ ½Ã½ºÅÛÀ» ÀÌ¿ëÇÏ¿© »õ·Î¿î ¼Ö·ç¼ÇÀ̳ª ½Ã½ºÅÛÀ» À¥°ú °°Àº °³¹æµÈ ȯ°æ°ú ¿¬µ¿ÇϰíÀÚ ÇÑ´Ù¸é, JDBC¸¦ ÀÌ¿ëÇÒ ¼ö°¡ ÀÖ´Ù´Â ¸»ÀÌ´Ù. ÀÌ JDBC-ODBC Bridge ºÎºÐÀº JavaSoft»ç¿Í InterSolv Inc. ¿¡¼­ °øµ¿ °³¹ßÇÑ´Ù.



[±×¸² 5] JDBC¿Í ÀÏ¹Ý Database ¿¬°á












[±×¸² 6] JDBC¿Í ODBC¿ÍÀÇ ¿¬°á





[±×¸² 7] OpenChannel Client/Server¸¦ ÀÌ¿ëÇÑ ¿¬°á





2.2 ÀÌ¿ë ¹× ±¸Çö

2.2.1 À̿뿡 ´ëÇÑ ½Ã³ª¸®¿À

[±×¸² 8] Applet¿¡¼­ÀÇ ÀÌ¿ë ½Ã³ª¸®¿À

[±×¸² 9] Application¿¡¼­ÀÇ ÀÌ¿ë ½Ã³ª¸®¿À

[±×¸² 10] Ưº°ÇÑ °æ¿ìÀÇ ÀÌ¿ë ½Ã³ª¸®¿À



2.2.2 JDBC¸¦ »ç¿ëÇÑ ±¸Çö

Database URLs

syntax
jdbc:<subprotocol>:<subname>
jdbc:odbc:<data-source-name>[;<attribute-name>=<attribute-value>]
Examples
jdbc:odbc:fred
jdbc:dbnet://wombet:356/fred
jdbc:odbc:wombat;CacheSize=20;ExtensionCase=LOWER
jdbc:odbc:employee;UID=jbpark;PWD=fooem

Sample Program - Using SELECT
    import java.net.URL;
    import java.sql.*;

    class Select {

         public static void main(String argv[]) {
            try {
                // Create a URL specifying an ODBC data source name.
                String url = "jdbc:odbc:employee";

                // Connect to the database at that URL.
                Connection con = DriverManager.getConnection(url, "jbpark", "");

                // Excute a SELECT statement
                Statement stmt = con.createStatement();
                ResultSet rs = stmt.excuteQuery("SELECT a, b, c, d, key FROM 
                                                 Table1");

                // Step through the result rows.
                System.out.println("Got result:");
                while (rs.next()) {
                    // get the values from the current row:
                    int a = rs.getInt(1);
                    Numeric b = rs.getNumeric(2);
                    char c[] = rs.getString(3).tocharArray();
                    boolean d = rs.getBoolean(4);
                    String key = rs.getString(5);

                    // Now print out the result:
                    System.out.print("   key=" + key);
                    System.out.print("   a=" + a);
                    System.out.print("   b=" + b);
                    System.out.print("   c=");
                    for (int i = 0; i < c.length; i++) {
                        System.out.print(c[i]);
                    }
                    System.out.print("   d=" + d);
                    System.out.print("\n");
                }

                stmt.close();
                con.close();
            } catch (java.lang.Exception ex) {
                ex.printStackTrace();
            }
         }
    }



2.3 JDBC Interface Definitions

  1. java.sql.CallableStatement
  2. java.sql.Connection
  3. java.sql.DataTruncation
  4. java.sql.Date
  5. java.sql.Driver
  6. java.sql.DriverManager
  7. java.sql.DriverPropertyInfo
  8. java.sql.Numeric
  9. java.sql.PreparedStatement
  10. java.sql.ResultSet
  11. java.sql.SQLWarning
  12. java.sql.Statement
  13. java.sql.Time
  14. java.sql.Timestamp
  15. java.sql.Types

3. °á·Ð

JDBC´Â ODBC¿Í °°Àº ±âÁ¸ÀÇ °³¹æÇü Database ¿¬°á¼¼Æ®ÀÇ »óÀ§°³³äÀ¸·Î½á Áö¿øµÈ´Ù.
1996³â¾È ¹ßÇ¥µÉ JDK 1.1¿¡¼­´Â ÃÖÁ¾ ¹öÁ¯ÀÌ ¹ßÇ¥°¡ µÉ°ÍÀ¸·Î ¿¹Á¤µÇ¾î ÀÖ´Ù.
Java ±â¼úÀÇ ´ëºÎºÐÀÌ ±×·±¸¸Å­ ¾ÆÁ÷Àº ´õ ÁÖ¸ñÇØ¾ßÇÒ ±â¼úÀÌ´Ù. ±×·¯³ª, JDBC°¡ »õ·Î¿î ±â¼ú·Î ÀÚ¸®¸Å±èÇϸ®¶ó´Â °Í¿¡ ´ëÇØ¼­´Â ÀǽÉÇÏ ¿©Áö°¡ ¾ø´Ù. ¹®Á¦´Â ¾ó¸¶³ª »¡¸® »ç¿ëÀÚ¿Í °³¹ßÀÚ ¸ðµÎ°¡ ¿ä±¸Çϰí ÀÖ´Â ¼öÁرîÁö ¾ÈÁ¤ÀûÀ¸·Î Áö¿øÇÏ´Â °¡¿¡ ÀÖ´Ù. ±×·¯±â À§Çؼ­´Â JDBC ±â¼ú¿¡ ´ëÇØ °ü¿©Çϰí ÀÖ´Â ¸ðµç ºÐ¾ß¿¡¼­ ¿ÂÈûÀ» ±â¿ï¿©¾ß ÇÒ °ÍÀÌ´Ù. ±×·² ¼ö Àֱ⸦ ±â´ëÇϸ鼭, ÀÌ ±ÛÀ» °¡¸§ÇÑ´Ù.



Âü°í »çÀÌÆ®(References)

[Javasoft96]
The JDBC(tm) Database Access API
URL: http://splash.javasoft.com/jdbc/
[ODMG96]
Object Database Management Group
URL: http://www.odmg.org/
[Javalist96]
Whang's Java List: JDBC
URL: http://www.sicc.co.kr/~sjwhang/javalist/lang/jdbc.htm
[News]
Java News Group
URL: news://comp.lang.java