๐Ÿ›  develop/Mac

๋งฅ๋ถ M1 ์ „์ž์ง€๊ฐ‘ ์˜ค๋ผํด DB ์™€ ์ดํด๋ฆฝ์Šค ์—ฐ๋™ํ•˜๊ธฐ

m-ur-phy 2022. 4. 28. 17:25

 

๐Ÿ’ก ์‹œ์ž‘ํ•˜๊ธฐ์— ์•ž์„œ

  • ์ด ๊ธ€์—์„œ ์ด์šฉํ•˜๋Š” ์ž๋ฐ” ๋ฒ„์ „์€ Java 17 ๊ธฐ์ค€ ์ž…๋‹ˆ๋‹ค. 
  • M1 ์—์„œ ์˜ค๋ผํด์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„  shanepark ๋‹˜์˜ M1 Oracle DB ์‹œ๋ฆฌ์ฆˆ 1, 2๋ฅผ ๋งˆ์น˜์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
 

Apple Silicon m1 ๋งฅ๋ถ์—์„œ Oracle Database ์‚ฌ์šฉํ•˜๊ธฐ

โ€‹ ์ •๋ง ๋งŽ์€ ๋ถ„๋“ค์ด m1 ๋งฅ๋ถ์„ ๊ตฌ๋งคํ•˜์…จ๋‹ค๊ฐ€ (ํŠนํžˆ ๊ตญ๋น„์ˆ˜์—… ๋“ฃ๋Š”๋ถ„๋“ค) ์˜ค๋ผํด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•ด ์ขŒ์ ˆ์„ ํ•˜์‹œ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•œ๊ฐ€์ง€ ๋‚˜์œ ์†Œ์‹๊ณผ ์ข‹์€ ์†Œ์‹์œผ๋กœ ํ•ด๋‹น ๊ธ€์„ ์‹œ์ž‘ํ•˜

shanepark.tistory.com

 

 

 

์ „์ž์ง€๊ฐ‘์œผ๋กœ ์ƒ์„ฑํ•œ ์˜ค๋ผํด DB ์™€ ์ดํด๋ฆฝ์Šค ์—ฐ๋™ํ•˜๊ธฐ

[1] ์˜ค๋ผํด JDBC ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ธฐ

 

JDBC(Java Database Connectivity)๋Š” ์ž๋ฐ”์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ž๋ฐ” API์ž…๋‹ˆ๋‹ค. 

์˜ค๋ผํด JDBC ๋‹ค์šด๋กœ๋“œ ์ฐฝ์— ๋“ค์–ด๊ฐ€์„œ JDBC ๋ฅผ ๋‹ค์šด๋ฐ›์•„์ค๋‹ˆ๋‹ค.

 

๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ ์€ ์ž๋ฐ” ๋ฒ„์ „์— ๋”ฐ๋ผ JDBC ๋ฅผ ๋‹ค์šด๋ฐ›์•„ ์ฃผ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ณธ ์ž‘์„ฑ์ž๋Š” Java 17 ์„ ์ด์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ojdbc11-full.tar.gz ๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„์ค๋‹ˆ๋‹ค. 

 

 

[2] ์˜ค๋ผํด JDBC ์›Œํฌ์ŠคํŽ˜์ด์Šค์— ์••์ถ• ํ•ด์ œ

 

์ด์ œ ๋‹ค์šด๋ฐ›์€ JDBC ๋ฅผ ์••์ถ• ํ•ด์ œ ํ•ด์ค๋‹ˆ๋‹ค.

์ด๋•Œ, ์ดํด๋ฆฝ์Šค์—์„œ ์ž‘์—…ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋Š” ํด๋”์— JDBC ๋ฅผ ์••์ถ• ํ•ด์ œ ํ•ด์ค๋‹ˆ๋‹ค.

 

 

[3] Build Path

 

JDBC ๋ฅผ ์‚ฌ์šฉํ•  ํ”„๋กœ์ ํŠธ๋ฅผ ์šฐํด๋ฆญ ํ•ด์ค๋‹ˆ๋‹ค.

[Build Path] -> [Configure Build Path] ๋ฅผ ํด๋ฆญํ•ด์ค๋‹ˆ๋‹ค.

 

Java Build Path ์ฐฝ์—์„œ [Libraries] ํƒญ์„ ํด๋ฆญํ•ด์ค๋‹ˆ๋‹ค.

[Add External JARs...] ์ฐฝ์„ ํด๋ฆญํ•ด์ค๋‹ˆ๋‹ค.

 

์—ฐ๋™์„ ์œ„ํ•ด์„œ ojdbc11.jar ํŒŒ์ผ์„ Open ํ•ด์ค๋‹ˆ๋‹ค.

ojdbc11.jar ์„ ์„ ํƒํ•˜์‹œ๊ณ  [Open] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด์ค๋‹ˆ๋‹ค.

 

์ดํ›„ ์ด๋Ÿฐ์‹์œผ๋กœ JDBC ํŒŒ์ผ์ด ์ž˜ ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ ์ž ๊น!

์˜ค๋ผํด ์ „์ž์ง€๊ฐ‘์„ ์ด์šฉํ•˜์—ฌ JDBC ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ojdbc11 ํŒŒ์ผ ๋ฟ๋งŒ์•„๋‹ˆ๋ผ

osdt_cert

osdt_core

oraclepki

๋ฅผ ์ถ”๊ฐ€๋กœ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๋™์ผํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ „๋ถ€ ์ถ”๊ฐ€ํ•ด ์ค๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ํ›„ [Appy and Close] ๋ฅผ ํด๋ฆญํ•ด์ค๋‹ˆ๋‹ค.

 

์ด์ œ JDBC ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ , ์—ฐ๊ฒฐํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

[4] JDBC ๋กœ๋”ฉ ํ…Œ์ŠคํŠธ

 

์ž๋ฐ” ํด๋ž˜์Šค ํŒŒ์ผ์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ฃผ์‹œ๊ณ , ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์„œ ์‹คํ–‰์‹œ์ผœ ์ค๋‹ˆ๋‹ค.

import java.sql.*;

public class Connect01 {

	public static void main(String[] args) {
		String driver = "oracle.jdbc.driver.OracleDriver";

		try {

			Class.forName(driver);
			System.out.println("JDBC Driver Loading ์„ฑ๊ณต!!");

		} catch (Exception e) {
			
			System.out.println("JDBC Driver Loading ์‹คํŒจ!!");
			e.printStackTrace();
			
		}

	}

์‹คํ–‰ ์‹œํ‚ค๋ฉด ์ฝ˜์†” ์ฐฝ์— "JDBC Driver Loading ์„ฑ๊ณต!!" ์ด ๋œน๋‹ˆ๋‹ค.

์ด์ œ Oracle ๊ณผ ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•ด๋ณผ๊นŒ์š”?

 

 

[5] ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ

 

์ž๋ฐ” ํด๋ž˜์Šค ํŒŒ์ผ์„ ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

import java.sql.*;

public class Connect02 {

	public static void main(String[] args) {

		String driver = "oracle.jdbc.driver.OracleDriver";

		// String url = "jdbc:oracle:thin:@์ „์ž์ง€๊ฐ‘์ด๋ฆ„_์„ฑ๋Šฅ?TNS_ADMIN=/์ „์ž์ง€๊ฐ‘ํŒŒ์ผ๊ฒฝ๋กœ/์ „์ž์ง€๊ฐ‘ํŒŒ์ผ";
		String url = "jdbc:oracle:thin:@์ „์ž์ง€๊ฐ‘์ด๋ฆ„_high?TNS_ADMIN=/์ „์ž์ง€๊ฐ‘ํŒŒ์ผ๊ฒฝ๋กœ/์ „์ž์ง€๊ฐ‘ํŒŒ์ผ";
		String id = "์‚ฌ์šฉ์ž์ด๋ฆ„";
		String pwd = "๋น„๋ฐ€๋ฒˆํ˜ธ";

		Connection con = null;

		try {

			Class.forName(driver);
			con = DriverManager.getConnection(url, id, pwd);
			System.out.println("๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์„ฑ๊ณต!!");

		} catch (Exception e) {

			System.out.println("๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์‹คํŒจ!!");
			e.printStackTrace();

		} finally {
			try {
				if (con != null)
					con.close();
			} catch (Exception e) {
				System.out.println(e.getMessage());
			}
		}
	}
}

 

์ผ๋ฐ˜์ ์œผ๋กœ ๋กœ์ปฌ์—์„œ ์˜ค๋ผํด์„ ์‚ฌ์šฉํ•˜์‹ ๋‹ค๋ฉด

"jdbc:oracle:thin:@localhost:1521:xe"

๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ์ง€๋งŒ,

 

M1 ์œ ์ €๋“ค์€ ์ „์ž์ง€๊ฐ‘์„ ํ†ตํ•ด ์˜ค๋ผํด์„ ์ด์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

"jdbc:oracle:thin:@์ „์ž์ง€๊ฐ‘์ด๋ฆ„_์„ฑ๋Šฅ?TNS_ADMIN=/์ „์ž์ง€๊ฐ‘ํŒŒ์ผ๊ฒฝ๋กœ/์ „์ž์ง€๊ฐ‘ํŒŒ์ผ"

์˜ ํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ "์ „์ž์ง€๊ฐ‘์ด๋ฆ„" ๋ถ€๋ถ„์„ ๋ชจ๋ฅด์‹œ๋Š” ๋ถ„์ด ๋งŽ์„ ๊ฒƒ์ด๋ผ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ์•Œ์•„๋ณด๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ „์ž์ง€๊ฐ‘ ํŒŒ์ผ์„ ์••์ถ• ํ•ด์ œ ํ•ฉ๋‹ˆ๋‹ค.

 

์••์ถ• ํ•ด์ œํ•œ ํด๋”์— ๋“ค์–ด๊ฐ€๋ณด์‹œ๋ฉด tnsnames.ora ํŒŒ์ผ์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํด๋ฆญํ•ด์„œ ๋‚ด์šฉ์„ ํ™•์ธํ•ด๋ณด์‹œ๋ฉด (์ผ๋ฐ˜ txt ํŒŒ์ผ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ƒฅ ๊ฐœ๋ฐœ ํˆด์—์„œ ์—ด์–ด์„œ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค) ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์ด ์ ํ˜€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

๋นจ๊ฐ„ ์ค„๋กœ ํ‘œ์‹œํ•œ ๋ถ€๋ถ„์ด ๋ฐ”๋กœ ์ „์ž ์ง€๊ฐ‘ ์ด๋ฆ„ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๋’ค์˜ high / low / medium ์€ ์˜ค๋ผํด์—์„œ ์ œ๊ณตํ•˜๋Š” DB ์„ฑ๋Šฅ ์„œ๋น„์Šค์˜ ์„ ํƒ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ๊ฐœ์ธ ์‹ค์Šต์„ ์œ„ํ•œ ์‚ฌ์šฉ์ด๊ธฐ ๋•Œ๋ฌธ์— high ๋ฅผ ์„ ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

์ด์ œ ์ด์— ๋งž์ถฐ ์ž‘์„ฑ์„ ์™„๋ฃŒํ•˜์—ฌ ์‹คํ–‰์‹œ์ผœ ์ค๋‹ˆ๋‹ค.

 

๋˜‘๊ฐ™์ด ์ฝ˜์†”์ฐฝ์„ ํ™•์ธํ•˜๋ฉด? ์—ฐ๊ฒฐ ์„ฑ๊ณต ์ž…๋‹ˆ๋‹ค!

 

 

๋งˆ๋ฌด๋ฆฌํ•˜๋ฉฐ

๋Œ€๋ถ€๋ถ„ ์ด ๊ธ€์„ ์ฐพ์•„์ฃผ์‹œ๋Š” ๋ถ„๋“ค์ด ์˜ค๋ผํด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ตญ๋น„ ํ•™์› ๋™๊ธฐ๋“ค์ผ ๊ฒƒ์ด๋ผ ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค.

 

๋งํฌ ๊ฑธ์–ด๋‘” Shane Park ๋‹˜์˜ ๊ธ€์—์„œ๋„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋“ฏ์ด,

๋งฅ๋ถ๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํžˆ ๊ตญ๋น„ ์—ฌ์ •์„ ๋งˆ์น  ์ˆ˜ ์žˆ๊ฒŒ ๊ฐ™์ด ๊ธธ์„ ๊ฐœ์ฒ™ํ•ด ๋‚˜๊ฐ”์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

๋Œ“๊ธ€๊ณผ ๊ณต๊ฐ์€ ํ•ญ์ƒ ํ™˜์˜์ž…๋‹ˆ๋‹ค!