Java DB´Â ¿ÏÀüÈ÷ ÀÚ¹Ù·Î ¸¸µé¾îÁø ¶óÀÌÆ®¿þÀÌÆ® DBMSÀÌ´Ù. 2MBÀÇ ¸Þ¸ð¸®¸¸ ÇÊ¿äÇØ¼, ¿©·¯ºÐÀÇ ¾ÖÇø®ÄÉÀ̼ǿ¡ Á÷Á¢ÀûÀ¸·Î µ¥ÀÌÅͺ£À̽ºÀÇ ±â´ÉÀ» ÃæºÐÈ÷ ÇÒ ¼ö ÀÖ°Ô ÀÓº£µðµå Çϱ⠽±°Ô µÇ¾î ÀÖ´Ù.
JavaDB´Â ¶ÇÇÑ Ç¥ÁØÀ» µû¸£°í, SQL°ú JDBC API¸¦ Áö¿øÇϸç J2EE¿Í ½±°Ô ÅëÇÕÀÌ µÈ´Ù. Java 6¹öÀüÀÇ ¸±¸®½º¸¦ ½ÃÀÛÀ¸·Î, ½ãÀº JDK¿¡ Java DB¸¦ ÆÐŰÁö Çϱ⠽ÃÀÛÇß´Ù.
DBMS ÀÌÈÄÀÇ ±â¼ú
¾ÆÆÄÄ¡ ´õºñ(Apache Derby)´Â Java DBÀÇ Çٽɱâ¼úÀÌ´Ù. ´õºñ(Derby)ÀÇ µ¥ÀÌÅÍ º£À̽º ¿£ÁøÀº ÃæºÐÇÑ ±â´ÉÀ» ÇÏ´Â °ü°èÇü ÀÓº£µðµå µ¥ÀÌÅÍ º£À̽º ¿£ÁøÀÌ´Ù. JDBC¿Í SQLÀº API ÇÁ·Î±×·¡¹ÖÀÇ ÁÖ·ÂÀÌ´Ù.
Java DB¸¦ ±¸¼ºÇÏ´Â ¶Ç ´Ù¸¥ ÇÙ½É ±¸¼º¿ä¼Ò´Â ´õºñ ³×Æ®¿öÅ© ¼¹öÀÌ´Ù. ³×Æ®¿öÅ© ¼¹ö´Â ÀüÅëÀûÀΠŬ¶óÀÌ¾ðÆ® ¼¹ö ±â´ÉÀ» Á¦°øÇÏ´Â ´õºñ µ¥ÀÌÅÍ º£À̽º ¿£ÁøÀÇ ¹üÀ§¸¦ È®ÀåÇÑ´Ù. ³×Æ®¿öÅ© ¼¹ö´Â Ŭ¶óÀÌ¾ðÆ®°¡ Ç¥ÁØ DRDA ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ´Â TCP/IP ¿¬°áÀ» Çã¿ëÇÑ´Ù. ¶Ç ´õºñ ¿£ÁøÀÌ ³×Æ®¿öÅ©°¡ Çü¼ºµÈ JDBC, ODBC/ CLI, Perl, ±×¸®°í PHP Áö¿øÀ» Çã¿ëÇÑ´Ù.
´õºñ´Â ij, dblook, ±×¸®°í sysinfoÀÇ 3°¡Áö À¯¿ëÇÑ À¯Æ¿¸®Æ¼¸¦ °¡Áö°í ÀÖ´Ù.
¡Ü Ij´Â ¾î¶² JDBC µ¥ÀÌÅͺ£À̽º¿Í ¿¬µ¿ÇÏ¿© ½ÇÇàÇÏ´Â SQL ½ºÅ©¸³Æ®¸¦ Çã¿ëÇÏ´Â ÅøÀÌ´Ù.
¡Ü dblook´Â ´õºñ µ¥ÀÌÅͺ£À̽º¸¦ À§ÇÑ ½ºÅ°¸¶ ÃßÃâ ÅøÀÌ´Ù.
¡Ü sysinfo´Â ¹öÀü ³Ñ¹ö¿Í Ŭ·¡½º ÆÐ½º¸¦ Ç¥½ÃÇϵµ·Ï Çã¿ëÇÏ´Â À¯Æ¿¸®Æ¼ÀÌ´Ù.
¸ÖƼ¾²·¹µù(Multithreading) °í¹Î
¾ÖÇø®ÄÉÀ̼ÇÀÌ ÀÓº£µðµåµÈ ´õºñ JDBC µå¶óÀ̹ö¸¦ »ç¿ëÇÑ ´õºñ µ¥ÀÌÅͺ£À̽º¸¦ ¾×¼¼½º ÇÒ ¶§, ´õºñ ¿£ÁøÀº º°°³ÀÇ ÇÁ·Î¼¼½º¿¡¼ ÀÛµ¿µÇÁö ¾Ê°í ½ÃÀÛ°ú Á¾·á½Ã º°°³ÀÇ µ¥ÀÌÅͺ£À̽º ÇÁ·Î¼¼½º°¡ ¾ø´Ù.
´ë½Å¿¡ ´õºñ µ¥ÀÌÅÍ º£À̽º´Â ¾ÖÇø®ÄÉÀ̼Çó·³ °°Àº ÀÚ¹Ù °¡»ó ¸Ó½Å(JVM) ³»¿¡¼ ÀÛµ¿ÇÑ´Ù. ´õºñ´Â ½ÇÁ¦·Î ¾ÖÇø®ÄÉÀ̼ǿ¡¼ »ç¿ëÇÏ´Â ´Ù¸¥ jarÆÄÀÏó·³ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÇÑ ºÎºÐÀÌ µÈ´Ù.
´õºñ´Â ÁÖ¾îÁø µ¥ÀÌÅͺ£À̽º¿¡ ´ÙÁß Á¢¼ÓµéÀ» Áö¿øÇÑ´Ù. ÀÓº£µðµå µÈ ¾ÖÇø®ÄÉÀ̼ÇÀÇ º¸±â´Â µ¿½Ã »ç¿ëÀÚ¸¦ °ü¸®ÇÏ´Â ÀÓº£µðµå µÈ ´õºñÀÇ ÅèĹÀ̳ª Á¦·Î´Ï¸ð ¾ÖÇø®ÄÉÀÌ¼Ç ¼¹öÀÌ´Ù. ¾î¶°ÇÑ À¯Àú¼öµµ À¥¼¹ö¸¦ ÅëÇØ µ¥ÀÌÅͺ£À̽º¸¦ ¾×¼¼½º ÇÏ´Â À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» ½ÇÇàÇÒ ¼ö ÀÖ´Ù.
¿ÀÁ÷ ÇϳªÀÇ JVMÀÌ µ¥ÀÌÅͺ£À̽º¸¦ ºÎÆÃÇÒ ¼ö ÀÖ¾î¼ ´Ù¸¥ JVM¿¡¼ µ¹°í ÀÖ´Â ¿©·¯ ¾ÖÇø®ÄÉÀ̼ÇÀº °°Àº µ¥ÀÌÅͺ£À̽º¸¦ ¾×¼¼½º ÇÒ ¼ö ¾ø´Ù.
JAVA DB »ç¿ë
DBMS »ç¿ëÀ» ½ÃÀÛÇϱâ À§Çؼ´Â SDN(Sun Development Network)¿¡¼ Java DB¸¦ ´Ù¿î ¹Þ¾Æ¾ß ÇÑ´Ù. ¹ÙÀ̳ʸ® ÆÄÀÏÀº ÀÓº£µðµå µ¥ÀÌÅͺ£À̽º ¾ÖÇø®ÄÉÀ̼ÇÀ» Çϱâ À§ÇØ ÇÊ¿äÇÑ ¸ðµç °ÍÀ» Á¦°øÇÑ´Ù.
ÆÄÀÏÀ» ´Ù¿î·Îµå ÇÏ°í ³ª¸é demo, frameworks, javadoc, docs ±×¸®°í lib¶ó´Â ¼ºêµð·ºÅ丮·Î ±¸¼ºµÈ Java DB µð·ºÅ丮¸¦ º¼ ¼ö ÀÖ´Ù.
¡Ü demo 2°³ÀÇ µ¥¸ð ÇÁ·Î±×·¥ÀÌ ÀÖ´Ù. Çϳª´Â ¾î¶»°Ô ÀÓº£µðµå ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µå´ÂÁö¿¡ ´ëÇÑ °ßº»À̰í, ´Ù¸¥ Çϳª´Â Ŭ¶óÀ̾ðÆ®-¼¹ö ȯ°æ¿¡¼ Java DB¸¦ ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö¸¦ º¸¿© ÁÖ´Â µ¥¸ðÀÌ´Ù.
¡Ü frameworks ȯ°æ º¯¼ö, µ¥ÀÌÅͺ£À̽º »ý¼º ¹× ÀÛ¾÷ÀÇ ¼ÂÆÃÀ» À§ÇÑ À¯Æ¿¸®Æ¼¸¦ °¡Áö°í ÀÖ´Ù(º»°í¿¡¼´Â µ¶¸³ÀûÀÎ ¾ÖÇø®ÄÉÀ̼ÇÀ¸·Î ¼³¸íÇϱ⠶§¹®¿¡ ÀÌ ¼ºêµð·ºÅ丮¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù).
¡Ü javadoc API°ü·Ã ¹®¼°¡ ÀÖ´Ù. ¸¸¾à Java DB API Javadoc¿¡¼ ÁöÀûÇÏ´Â °Í ó·³ ¿©·¯ºÐÀÇ IDE¸¦ ±¸¼ºÇÏ·Á¸é À¯¿ëÇÏ´Ù.
¡Ü docs Java DBÀÇ Á¦Ç° ¼Â¾÷, ¾îµå¹Î ¹× ·¹ÆÛ·±½º °¡À̵尡 ÀÖ´Ù.
¡Ü lib JAR ÆÄÀÏ °°Àº ÆÐŰÁö µÈ Java DB¶óÀ̺귯¸®°¡ ÀÖ´Ù.
(´Ù¾çÇÑ ¶óÀ̺귯¸®¿¡ ´ëÇÑ ÀÚ·á´Â Java DB ¹®¼¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù.)
ÀÌ ±â»ç¿¡¼´Â ÀÓº£µðµå µÈ µ¥ÀÌÅͺ£À̽º ¾ÖÇø®ÄÉÀ̼ÇÀ» À§ÇØ derby.jar ¶óÀ̺귯¸® ÆÄÀϸ¸ »ç¿ëÇÒ °ÍÀÌ´Ù. °³¹ßÀ» À§ÇØ Java DB¸¦ ¼³Ä¡Çϱâ À§Çؼ´Â derby.jar ÆÄÀÏÀ» ¾ÖÇø®ÄÉÀÌ¼Ç Å¬·¡½ºÆÐ½ºÀÇ ºÎºÐÀ¸·Î ¸¸µå´Â °Í¸¸ ¿ä±¸µÈ´Ù.
¹ÙÀ̳ʸ® ÆÄÀÏÀ» ¼³Ä¡Çϰí Ŭ·¡½ºÆÐ½º¿¡ derby.jar ÆÄÀÏÀÌ ÀÖÀ¸¸é ´Ù¸¥ JDBC ÄÄÇöóÀÌ¾ðÆ® µ¥ÀÌÅͺ£À̽º¸¦ »ç¿ëÇÏ´Â °Íó·³ Java DB¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù(¸¸¾à Java 6°¡ ÀÌ¹Ì ¼³Ä¡µÇ¾î ÀÖ´Ù¸é, derby.jarÆÄÀÏÀ» Ŭ·¡½ºÆÐ½º¿¡ Æ÷ÇÔ½ÃŰ¸é µÈ´Ù).
µå¶óÀ̹ö °ü¸®
JDBC ±â¼úÀÇ µå¶óÀ̹öÀÇ ·ÎµùÀ¸·Î DBMS¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù(Java DBÀÇ µå¶óÀ̹ö´Â derby.jar ÆÄÀϰú ÇÔ²² Àֱ⠶§¹®¿¡ ´Ù¸¥ °ÍÀ» ´Ù¿î·Îµå ¹ÞÀ» Çʿ䰡 ¾ø´Ù). µå¶óÀ̹ö¸¦ ·ÎµåÇϱâ À§ÇØ Class.forName ¸Þ¼Òµå¸¦ »ç¿ëÇÏ´Â °ÍÀ» ÂüÁ¶ÇÑ´Ù. ÀÓº£µðµå µÈ µå¶óÀ̹ö À̸§Àº org.apache.derby.jdbc.EmbeddedDriverÀ̸ç, ´Ù¸¥ JDBC µå¶óÀ̹ö¸¦ ·ÎµåÇÏ´Â °Íó·³ ÇÒ ¼ö ÀÖ´Ù.
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
µå¶óÀ̹ö ¸Å´ÏÀú·ÎºÎÅÍ ¿¬°áÀ» º¹±¸ÇÏ·Á¸é °£´ÜÇÏ°Ô µ¥ÀÌÅͺ£À̽º¸¦ Á¤ÀÇÇÏ´Â url ½ºÆ®¸µÀ» Á¦°øÇÏ°í µ¥ÀÌÅͺ£À̽º¿Í ÇÔ²² »óÈ£ ¿¬°á¿¡ ¿µÇâÀ» ÁÖ´Â ÇÁ·ÎÆÛƼ(properties)ÀÇ ¼¼ÆÃÀ» Á¦°øÇÑ´Ù. °¡Àå ÀϹÝÀûÀÎ ÇÁ·ÎÆÛƼ »ç¿ëÀº ¿¬°á½Ã À¯Àú¸í°ú ÆÐ½º¿öµå¸¦ ÇÔ²² ÇÏ´Â °ÍÀÌ´Ù.
urlÀÇ dbName Æ÷¼ÇÀ» Á¤ÀÇÇÏ´Â °ÍÀº ƯÁ¤ µ¥ÀÌÅͺ£À̽ºÀÌ´Ù. µ¥ÀÌÅͺ£À̽º´Â ÇöÀç ÀÛ¾÷ µð·ºÅ丮, JARÆÄÀÏ, ƯÁ¤ Java DB µ¥ÀÌÅͺ£À̽º Ȩ µð·ºÅ丮, ÆÄÀÏ ½Ã½ºÅÛ»óÀÇ Àý´ë À§Ä¡ ¶Ç´Â Ŭ·¡½ºÆÐ½º »ó¿¡¼¿Í °°ÀÌ ¸¹Àº À§Ä¡ Áß ÇÑ °÷¿¡¼ ÇÒ ¼ö ÀÖ´Ù.
ÀÓº£µðµå µÈ ȯ°æ¿¡¼ÀÇ µ¥ÀÌÅͺ£À̽º ·ÎÄÉÀ̼ÇÀ» ´Ù·ç´Â °¡Àå ½¬¿î ¹æ¹ýÀº derby.system.home ½Ã½ºÅÛ ÇÁ·ÎÆÛƼ¿¡ ¼¼ÆÃÇÏ´Â °ÍÀÌ´Ù. ÀÌ ÇÁ·ÎÆÛƼ´Â Java DB¿¡ ¸ðµç µ¥ÀÌÅͺ£À̽ºÀÇ µðÆúÆ® Ȩ À§Ä¡¸¦ ¸»ÇÏ´Â °ÍÀÌ´Ù. propertyListÀÇ ¿É¼ÇÀº µ¥ÀÌÅͺ£À̽º ½Ã½ºÅÛ¿¡ ÆÐ½ºÇÒ ¼ö ÀÖ´Â ÇÁ·ÎÆÛƼ ¼ÂÀÌ´Ù.
URL»óÀÇ Java DB ½Ã½ºÅÛ¿¡ ÇÁ·ÎÆÛƼ¸¦ ÆÐ½ºÇϰųª º°°³ÀÇ ÇÁ·ÎÆÛƼ ¿ÀºêÁ§Æ®·Î ÆÐ½ºÇÒ ¼ö ÀÖ´Ù. ¸¸¾à ÇÁ·ÎÆÛƼ°¡ urlÀÇ ÀϺÎÀ̸é, ¼¼¹ÌÄÝ·Ð(;)Àº °¢ ÇÁ·ÎÆÛƼÀÇ ¼ÒÀ¯±ÇÀ» ¼±ÇàÇÏ¿©¾ß¸¸ ÇÑ´Ù. ¾Æ·¡¿¡ °¡Àå ÀϹÝÀûÀÎ ÇÁ·ÎÆÛƼ°¡ ÀÖ´Ù.
create=true
databaseName=nameOfDatabase
user=userName
password=userPassword
shutdown=true
ÀÏ´Ü ¾îµð¿¡ ¸ðµç µ¥ÀÌÅÍ º£À̽º°¡ Á¸ÀçÇÒ °ÍÀÎÁö¸¦ ¸í½ÃÇϸé, µ¥ÀÌÅͺ£À̽º ¿¬°áÀ» º¹±¸ÇÑ´Ù. @
private void setDBSystemDir() {
// Decide on the db system directory: /.addressbook/
String userHomeDir = System.getProperty("user.home", ".");
String systemDir = userHomeDir + "/.addressbook";
// Set the db system directory.
System.setProperty("derby.system.home", systemDir);
}
Connection dbConnection = null;
String strUrl = "jdbc:derby:DefaultAddressBook;user=dbuser;password=dbuserpwd";
try {
dbConnection = DriverManager.getConnection(strUrl);
} catch (SQLException sqle) {
sqle.printStackTrace();
}