[์Šคํ”„๋ง DB 1ํŽธ] - 3. DataSource ์ดํ•ด

2023. 3. 14. 21:15ยทSpring/Spring DB

 

DataSource ์ดํ•ด

 

 

์ปค๋„ฅ์…˜์„ ์–ป๋Š” ๋ฐฉ๋ฒ•์€ ์•ž์„œ ํ•™์Šตํ•œ JDBC DriverManager ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์ปค๋„ฅ์…˜ ํ’€์„ ์‚ฌ์šฉํ•˜๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค.

 

 

DriverManager๋ฅผ ํ†ตํ•ด ์ปค๋„ฅ์…˜ ํš๋“ํ•˜๋‹ค๊ฐ€ ์ปค๋„ฅ์…˜ ํ’€๋กœ ๋ณ€๊ฒฝ์‹œ ๋ฌธ์ œ

 

์šฐ๋ฆฌ๊ฐ€ ์•ž์„œ JDBC๋กœ ๊ฐœ๋ฐœํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฒ˜๋Ÿผ DriverManager ๋ฅผ ํ†ตํ•ด์„œ ์ปค๋„ฅ์…˜์„ ํš๋“ํ•˜๋‹ค๊ฐ€,

 

์ปค๋„ฅ์…˜ ํ’€์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?

 

 

์˜ˆ๋ฅผ ๋“ค์–ด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์—์„œ DriverManager ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ปค๋„ฅ์…˜์„ ํš๋“ํ•˜๋‹ค๊ฐ€

 

HikariCP ๊ฐ™์€ ์ปค๋„ฅ์…˜ ํ’€์„ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝํ•˜๋ฉด ์ปค๋„ฅ์…˜์„ ํš๋“ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋„ ํ•จ๊ป˜ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค.

 

์˜์กด๊ด€๊ณ„๊ฐ€ DriverManager ์—์„œ HikariCP ๋กœ ๋ณ€๊ฒฝ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ฌผ๋ก  ๋‘˜์˜ ์‚ฌ์šฉ๋ฒ•๋„ ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅผ ๊ฒƒ์ด๋‹ค.

 

 

 

์ปค๋„ฅ์…˜์„ ํš๋“ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ถ”์ƒํ™”

 

์ž๋ฐ”์—์„œ๋Š” ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด javax.sql.DataSource ๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

 

DataSource ๋Š” ์ปค๋„ฅ์…˜์„ ํš๋“ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ถ”์ƒํ™” ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.

 

์ด ์ธํ„ฐํŽ˜์ด์Šค์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์€ ์ปค๋„ฅ์…˜ ์กฐํšŒ ํ•˜๋‚˜์ด๋‹ค. (๋‹ค๋ฅธ ์ผ๋ถ€ ๊ธฐ๋Šฅ๋„ ์žˆ์ง€๋งŒ ํฌ๊ฒŒ ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค.)

 

public interface DataSource {
    Connection getConnection() throws SQLException;
}

 

 

 

 ์ •๋ฆฌ 

 

๋Œ€๋ถ€๋ถ„์˜ ์ปค๋„ฅ์…˜ ํ’€์€ DataSource ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด๋ฏธ ๊ตฌํ˜„ํ•ด๋‘์—ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ ๊ฐœ๋ฐœ์ž๋Š” DBCP2 ์ปค๋„ฅ์…˜ ํ’€ , HikariCP ์ปค๋„ฅ์…˜ ํ’€ ์˜ ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์˜์กดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ

 

DataSource ์ธํ„ฐํŽ˜์ด์Šค์—๋งŒ ์˜์กดํ•˜๋„๋ก ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์„ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

 

์ปค๋„ฅ์…˜ ํ’€ ๊ตฌํ˜„ ๊ธฐ์ˆ ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์œผ๋ฉด ํ•ด๋‹น ๊ตฌํ˜„์ฒด๋กœ ๊ฐˆ์•„๋ผ์šฐ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

 

 

์Šคํ”„๋ง์€ DriverManager ๋„ DataSource ๋ฅผ ํ†ตํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก

 

DriverManagerDataSource ๋ผ๋Š” DataSource ๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

 

๋•๋ถ„์— DriverManagerDataSource ๋ฅผ ํ†ตํ•ด์„œ DriverManager ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€

 

์ปค๋„ฅ์…˜ ํ’€์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•ด๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

 

 

DriverManager ๋ฅผ ํ†ตํ•ด์„œ ์ปค๋„ฅ์…˜์„ ํš๋“ํ•˜๋Š” ๋ฐฉ๋ฒ•

void driverManager() throws SQLException {
    Connection con1 = DriverManager.getConnection(URL, USERNAME, PASSWORD);
    Connection con2 = DriverManager.getConnection(URL, USERNAME, PASSWORD);
    log.info("connection={}, class={}", con1, con1.getClass());
    log.info("connection={}, class={}", con2, con2.getClass());
}

 

 

์‹ค์ œ ์ปค๋„ฅ์…˜์„ ๊ฐ๊ฐ ๊ฐ€์ ธ์˜ค๊ณ  ์žˆ๋‹ค . --> ์„œ๋กœ ๋‹ค๋ฅธ ์ปค๋„ฅ์…˜ conn0 , conn1 

 

 

 

 

DriverManagerDataSource ๋ฅผ ์‚ฌ์šฉ

์Šคํ”„๋ง์ด ์ œ๊ณตํ•˜๋Š” DataSource ๊ฐ€ ์ ์šฉ๋œ DriverManager

void dataSourceDriverManager() throws SQLException {
    //DriverManagerDataSource - ํ•ญ์ƒ ์ƒˆ๋กœ์šด ์ปค๋„ฅ์…˜์„ ํš๋“
    DriverManagerDataSource dataSource = new DriverManagerDataSource(URL, USERNAME, PASSWORD);
    useDataSource(dataSource);
}

 

private void useDataSource(DataSource dataSource) throws SQLException {
    Connection con1 = dataSource.getConnection();
    Connection con2 = dataSource.getConnection();
    log.info("connection={}, class={}", con1, con1.getClass());
    log.info("connection={}, class={}", con2, con2.getClass());
}

 

 

์ธํ„ฐํŽ˜์ด์Šค(DataSource)๋ฅผ ํ†ตํ•ด ๊ฐ€์ ธ์˜จ๋‹ค๋Š” ์ฐจ์ด 

 

๊ธฐ์กด ์ฝ”๋“œ์™€ ๋น„์Šทํ•˜์ง€๋งŒ DriverManagerDataSource ๋Š” DataSource ๋ฅผ ํ†ตํ•ด์„œ ์ปค๋„ฅ์…˜์„ ํš๋“ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์„ค์ •๊ณผ ์‚ฌ์šฉ์˜ ๋ถ„๋ฆฌ

 

Connection con1 = DriverManager.getConnection(URL, USERNAME, PASSWORD);
Connection con2 = DriverManager.getConnection(URL, USERNAME, PASSWORD);

DriverManager ๋Š” ์ปค๋„ฅ์…˜์„ ํš๋“ํ•  ๋•Œ ๋งˆ๋‹ค URL , USERNAME , PASSWORD ๊ฐ™์€ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ณ„์† ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค.

 

 

DriverManagerDataSource dataSource = new DriverManagerDataSource(URL, USERNAME, PASSWORD);

๋ฐ˜๋ฉด์— DataSource ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์€ ์ฒ˜์Œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋งŒ ํ•„์š”ํ•œ ํŒŒ๋ฆฌ๋ฏธํ„ฐ๋ฅผ ๋„˜๊ฒจ๋‘๊ณ ,

 

Connection con1 = dataSource.getConnection();
Connection con2 = dataSource.getConnection();

์ปค๋„ฅ์…˜์„ ํš๋“ํ•  ๋•Œ๋Š” ๋‹จ์ˆœํžˆ dataSource.getConnection() ๋งŒ ํ˜ธ์ถœํ•˜๋ฉด ๋œ๋‹ค.

 

 

 

์„ค์ •: DataSource ๋ฅผ ๋งŒ๋“ค๊ณ  ํ•„์š”ํ•œ ์†์„ฑ๋“ค์„ ์‚ฌ์šฉํ•ด์„œ URL , USERNAME , PASSWORD ๊ฐ™์€ ๋ถ€๋ถ„์„ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

 

์ด๋ ‡๊ฒŒ ์„ค์ •๊ณผ ๊ด€๋ จ๋œ ์†์„ฑ๋“ค์€ ํ•œ ๊ณณ์— ์žˆ๋Š” ๊ฒƒ์ด ํ–ฅํ›„ ๋ณ€๊ฒฝ์— ๋” ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 


์‚ฌ์šฉ: ์„ค์ •์€ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ , DataSource ์˜ getConnection() ๋งŒ ํ˜ธ์ถœํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

 

 

 

์ด ๋ถ€๋ถ„์ด ์ž‘์•„๋ณด์ด์ง€๋งŒ ํฐ ์ฐจ์ด๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š”๋ฐ, ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ DataSource ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋Š” ์‹œ์ ์— ๋ฏธ๋ฆฌ ๋‹ค ๋„ฃ์–ด๋‘๊ฒŒ ๋˜๋ฉด,

 

DataSource ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณณ์—์„œ๋Š” dataSource.getConnection() ๋งŒ ํ˜ธ์ถœํ•˜๋ฉด ๋˜๋ฏ€๋กœ,

 

URL , USERNAME , PASSWORD ๊ฐ™์€ ์†์„ฑ๋“ค์— ์˜์กดํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

๊ทธ๋ƒฅ DataSource ๋งŒ ์ฃผ์ž…๋ฐ›์•„์„œ getConnection() ๋งŒ ํ˜ธ์ถœํ•˜๋ฉด ๋œ๋‹ค.

 


์‰ฝ๊ฒŒ ์ด์•ผ๊ธฐํ•ด์„œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ(Repository)๋Š” DataSource ๋งŒ ์˜์กดํ•˜๊ณ , ์ด๋Ÿฐ ์†์„ฑ์„ ๋ชฐ๋ผ๋„ ๋œ๋‹ค.

 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•ด๋ณด๋ฉด ๋ณดํ†ต ์„ค์ •์€ ํ•œ ๊ณณ์—์„œ ํ•˜์ง€๋งŒ, ์‚ฌ์šฉ์€ ์ˆ˜ ๋งŽ์€ ๊ณณ์—์„œ ํ•˜๊ฒŒ ๋œ๋‹ค.


๋•๋ถ„์— ๊ฐ์ฒด๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ถ€๋ถ„๊ณผ, ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„์„ ์ข€ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

DataSource ๋ฅผ ํ†ตํ•ด ์ปค๋„ฅ์…˜ ํ’€์„ ์‚ฌ์šฉ

HikariDataSource dataSource = new HikariDataSource();
dataSource.setJdbcUrl(URL);
dataSource.setUsername(USERNAME);
dataSource.setPassword(PASSWORD);
dataSource.setMaximumPoolSize(10);
dataSource.setPoolName("MyPool");

 

HikariCP ์ปค๋„ฅ์…˜ ํ’€์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

HikariDataSource ๋Š” DataSource ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋‹ค.

 

์ปค๋„ฅ์…˜ ํ’€ ์ตœ๋Œ€ ์‚ฌ์ด์ฆˆ๋ฅผ 10์œผ๋กœ ์ง€์ •ํ•˜๊ณ , ํ’€์˜ ์ด๋ฆ„์„ MyPool ์ด๋ผ๊ณ  ์ง€์ •ํ–ˆ๋‹ค.

 

 

useDataSource(dataSource);
Thread.sleep(1000);

 

์ปค๋„ฅ์…˜ ํ’€์—์„œ ์ปค๋„ฅ์…˜์„ ์ƒ์„ฑํ•˜๋Š” ์ž‘์—…์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์†๋„์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ธฐ ์œ„ํ•ด ๋ณ„๋„์˜ ์“ฐ๋ ˆ๋“œ์—์„œ ์ž‘๋™ํ•œ๋‹ค.

 

์ปค๋„ฅ์…˜ ํ’€์— ์ปค๋„ฅ์…˜์„ ์ฑ„์šฐ๋Š” ๊ฒƒ์€ ์ƒ๋Œ€์ ์œผ๋กœ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ผ์ด๋‹ค.

 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ๋•Œ ์ปค๋„ฅ์…˜ ํ’€์„ ์ฑ„์šธ ๋•Œ ๊นŒ์ง€ ๋งˆ๋ƒฅ ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด ๋Šฆ์–ด์ง„๋‹ค.

 

๋”ฐ๋ผ์„œ ์ด๋ ‡๊ฒŒ ๋ณ„๋„์˜ ์“ฐ๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ปค๋„ฅ์…˜ ํ’€์„ ์ฑ„์›Œ์•ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์‹œ๊ฐ„์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

 

๋ณ„๋„์˜ ์“ฐ๋ ˆ๋“œ์—์„œ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ๊ฐ€ ๋จผ์ € ์ข…๋ฃŒ๋˜์–ด ๋ฒ„๋ฆฐ๋‹ค.

 

์˜ˆ์ œ์ฒ˜๋Ÿผ Thread.sleep ์„ ํ†ตํ•ด ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ฃผ์–ด์•ผ ์“ฐ๋ ˆ๋“œ ํ’€์— ์ปค๋„ฅ์…˜์ด ์ƒ์„ฑ๋˜๋Š” ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

์ปค๋„ฅ์…˜ ํ’€ ์ตœ๋Œ€ ์‚ฌ์ด์ฆˆ๋ฅผ ๋„˜์–ด๋ฒ„๋ฆฌ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? 

 

์ดˆ๊ณผ๊ฐ€ ๋˜์—ˆ๋‹ค.

 

ํ’€์ด ํ™•๋ณด๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜๋‹ค๊ฐ€ ์„ค์ •๋œ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์˜ˆ์™ธ๋ฅผ ํ„ฐ๋œจ๋ฆฐ๋‹ค. 

 

 

 

 

 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1/dashboard

 

์Šคํ”„๋ง DB 1ํŽธ - ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ํ•ต์‹ฌ ์›๋ฆฌ - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ DB ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ธฐ์ˆ ์„ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ดํ•ดํ•˜๊ณ , ์™„์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ ์˜ ์›๋ฆฌ์™€ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ , ๋” ๊นŠ์ด์žˆ๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., - ๊ฐ•์˜

www.inflearn.com

 

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Spring > Spring DB' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์Šคํ”„๋ง DB 1ํŽธ] - 6. DB ๋ฝ  (0) 2023.03.19
[์Šคํ”„๋ง DB 1ํŽธ] - 5. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๊ตฌ์กฐ์™€ DB ์„ธ์…˜  (0) 2023.03.15
[์Šคํ”„๋ง DB 1ํŽธ] - 4. ํŠธ๋žœ์žญ์…˜  (0) 2023.03.15
[์Šคํ”„๋ง DB 1ํŽธ] - 2. ์ปค๋„ฅ์…˜ํ’€(Connection Pool)  (0) 2023.03.14
[์Šคํ”„๋ง DB 1ํŽธ] - 1. JDBC ์ดํ•ด  (0) 2023.03.13
'Spring/Spring DB' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [์Šคํ”„๋ง DB 1ํŽธ] - 5. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๊ตฌ์กฐ์™€ DB ์„ธ์…˜
  • [์Šคํ”„๋ง DB 1ํŽธ] - 4. ํŠธ๋žœ์žญ์…˜
  • [์Šคํ”„๋ง DB 1ํŽธ] - 2. ์ปค๋„ฅ์…˜ํ’€(Connection Pool)
  • [์Šคํ”„๋ง DB 1ํŽธ] - 1. JDBC ์ดํ•ด
hello_u
hello_u
  • hello_u
    ๐Ÿ˜œ
    hello_u
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐Ÿ˜œ (345)
      • Hardware (2)
        • BMC (2)
      • Spring (109)
        • Spring ์ž…๋ฌธ (20)
        • Spring ๊ธฐ๋ณธ (27)
        • Spring MVC (18)
        • Spring DB (22)
        • Spring JPA ๊ธฐ๋ณธ (16)
        • Spring JPA ํ™œ์šฉ (6)
      • Develop (27)
        • DB (8)
        • JAVA (4)
        • Web (2)
        • Python (7)
        • OSS (2)
        • Git (2)
        • API (2)
      • Algorithm (155)
        • CodeUp ๊ธฐ์ดˆ (44)
        • ํŒŒ์ด์ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (64)
        • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (4)
        • SWEA (30)
        • Softeer (10)
        • BOJ (2)
      • CS (9)
        • ์ปดํ“จํ„ฐ์ผ๋ฐ˜ (3)
        • ์šด์˜์ฒด์ œ (3)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (0)
        • ์ •๋ณดํ†ต์‹  (1)
        • ์ž๋ฃŒ๊ตฌ์กฐ (1)
        • ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ (1)
        • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (0)
        • ์ตœ์‹  ๋””์ง€ํ„ธ, ์ผ๋ฐ˜์ƒ์‹ (0)
      • ์ž๊ฒฉ์ฆ (41)
        • ์ •๋ณด๋ณด์•ˆ๊ธฐ์‚ฌ (9)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (22)
        • ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 1๊ธ‰ (3)
        • SQLD (7)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
hello_u
[์Šคํ”„๋ง DB 1ํŽธ] - 3. DataSource ์ดํ•ด
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”