๐พ[Database] ๋ฐ์ดํฐ๋ฒ ์ด์ค URL์ด๋ ๋ฌด์์ผ๊น์?
- ๋ฐ์ดํฐ๋ฒ ์ด์ค URL์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ ๋ ์ฌ์ฉ๋๋ ๊ณ ์ ํ ์ฃผ์์ ๋๋ค.
- URL์ ์ ํ๋ฆฌ์ผ์์ฐ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ฅผ ์ฐพ๊ณ , ์ฐ๊ฒฐํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ ํ๊ธฐ ์ํ ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์์ต๋๋ค.
- ์ด URL์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ข ๋ฅ์ ๋ฐ๋ผ ๊ณ ์ ํ ํ์์ผ๋ก ์์ฑ๋๋ฉฐ, ๋ณดํต ํ๋กํ ์ฝ, ์๋ฒ ์์น(ํธ์คํธ), ํฌํธ ๋ฒํธ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ ๋ฑ์ ํฌํจํฉ๋๋ค.
1๏ธโฃ ๋ฐ์ดํฐ๋ฒ ์ด์ค URL์ ๊ธฐ๋ณธ ํ์.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค URL์ ๋ณดํต ๋ค์๊ณผ ๊ฐ์ ํ์์ ๋ฐ๋ฆ ๋๋ค.
jdbc:<๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ>://<ํธ์คํธ>:<ํฌํธ>/<๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ>?<์ต์
๋ค>
- ๊ฐ ๋ถ๋ถ์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-
jdbc
- Java Database Connectivity์ ์ฝ์๋ก, JDBC URL์์ ๋ํ๋ ๋๋ค.
- JDBC(Java Database Connectivity)๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๋ ํ์ค ๋ฐฉ์์ ๋๋ค.
-
<๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ>
- ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ํ์ ๋ํ๋
๋๋ค.
- ์๋ฅผ ๋ค์ด, MySQL, PostgreSQL, Oracle, SQL Server ๋ฑ์ด ์ฌ๊ธฐ์ ๋ค์ด๊ฐ๋๋ค.
- ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ํ์ ๋ํ๋
๋๋ค.
-
<ํธ์คํธ>
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์คํ๋๊ณ ์๋ ์๋ฒ์ ์ฃผ์๋ฅผ ๋ํ๋
๋๋ค.
- ๋ก์ปฌ์์ ์คํ๋ ๊ฒฝ์ฐ
localhost
๋ฅผ ์ฌ์ฉํ๊ณ , ์๊ฒฉ ์๋ฒ์ ๊ฒฝ์ฐ ์๋ฒ IP ์ฃผ์๋ ๋๋ฉ์ธ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค.
- ๋ก์ปฌ์์ ์คํ๋ ๊ฒฝ์ฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์คํ๋๊ณ ์๋ ์๋ฒ์ ์ฃผ์๋ฅผ ๋ํ๋
๋๋ค.
-
<ํฌํธ>
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๊ฐ ์์ ๋๊ธฐ ์ค์ธ ๋คํธ์ํฌ ํฌํธ ๋ฒํธ์
๋๋ค.
- ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ธฐ๋ณธ ํฌํธ๊ฐ ์์ง๋ง, ํ์์ ๋ฐ๋ผ ๋ค๋ฅธ ํฌํธ๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
- MySQL: 3306
- PostgreSQL: 5432
- Oracle: 1521
- ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ธฐ๋ณธ ํฌํธ๊ฐ ์์ง๋ง, ํ์์ ๋ฐ๋ผ ๋ค๋ฅธ ํฌํธ๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๊ฐ ์์ ๋๊ธฐ ์ค์ธ ๋คํธ์ํฌ ํฌํธ ๋ฒํธ์
๋๋ค.
-
<๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ>
- ์ฐ๊ฒฐํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ฆ์
๋๋ค.
- ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์์ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด์ํ ์ ์์ผ๋ฏ๋ก, ์ฐ๊ฒฐํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ช ์ํฉ๋๋ค.
- ์ฐ๊ฒฐํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ฆ์
๋๋ค.
-
<์ต์ ๋ค>
- ์ถ๊ฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ์ํ ์ต์
์ ์ ๋ฌํ ์ ์์ต๋๋ค.
- ์๋ฅผ ๋ค์ด, ์ธ์ฝ๋ฉ ๋ฐฉ์์ด๋ SSL ์ฌ์ฉ ์ฌ๋ถ ๋ฑ์ ์ค์ ์ด ์ฌ๊ธฐ์ ํฌํจ๋ ์ ์์ต๋๋ค.
- ์ถ๊ฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ์ํ ์ต์
์ ์ ๋ฌํ ์ ์์ต๋๋ค.
-
๐ SSL(Secure Socket Layer)
๋คํธ์ํฌ ์์์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ํธํํ์ฌ ์ ์กํ๊ธฐ ์ํ ๋ณด์ ํ๋กํ ์ฝ์ ๋๋ค.
SSL์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ํต์ ์ ์ํธํํ์ฌ, ๋ฐ์ดํฐ๊ฐ ์ ์ก๋๋ ๋์ ์ 3์๊ฐ ์ด๋ฅผ ๋์ฒญํ๊ฑฐ๋ ์์กฐํ์ง ๋ชปํ๋๋ก ๋ณดํธํฉ๋๋ค.
SSL์ ํนํ ์น ๋ธ๋ผ์ฐ์ ์ ์น ์๋ฒ ๊ฐ์ ์์ ํ ํต์ ์ ๋ณด์ฅํ๋ ๋ฐ ๋๋ฆฌ ์ฌ์ฉ๋์์ต๋๋ค.ํ์ฌ๋ SSL์ ํ์ ๋ฒ์ ์ธ TLS(Transport Layer Security)๊ฐ SSL์ ๋์ฒดํ์ฌ ์ฌ์ฉ๋๊ณ ์์ง๋ง, ๋ณดํต ์ฌ๋๋ค์ ์ฌ์ ํ SSL์ด๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํด TLS๋ ํจ๊ป ์ง์นญํฉ๋๋ค.
2๏ธโฃ ๋ฐ์ดํฐ๋ฒ ์ด์ค URL ์์.
1๏ธโฃ MySQL
jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC
-
mysql
: MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ -
localhost
: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ์ฃผ์ (๋ก์ปฌ์์ ์คํ ์ค์ธ ๊ฒฝ์ฐ) -
3306
: MySQL์ ๊ธฐ๋ณธ ํฌํธ ๋ฒํธ -
mydatabase
: ์ฐ๊ฒฐํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ -
useSSL=false
: SSL ์ฌ์ฉ ์ฌ๋ถ (์ด ์์์์๋ ์ฌ์ฉํ์ง ์์) -
serverTimezone=UTC
: ์๋ฒ์ ํ์์กด ์ค์
2๏ธโฃ PostgreSQL
jdbc:postgresql://localhost:5432/mydatabase
-
postgresql
: PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ -
localhost
: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ ์ฃผ์ -
5432
: PostgreSQL์ ๊ธฐ๋ณธ ํฌํธ ๋ฒํธ -
mydatabase
: ์ฐ๊ฒฐํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ
3๏ธโฃ Oracle
jdbc:oracle:thin:@localhost:1521:ORCL
-
oracle:thin
: Oracle์ JDBC ๋๋ผ์ด๋ฒ ์ฌ์ฉ -
localhost
: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ ์ฃผ์ -
1521
: Oracle์ ๊ธฐ๋ณธ ํฌํธ ๋ฒํธ -
ORCL
: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค ์ด๋ฆ
4๏ธโฃ SQL Server
jdbc:sqlserver://localhost:1433;databaseName=mydatabase;integratedSecurity=true;
-
sqlserver
: Microsoft SQL Server ์ฌ์ฉ -
localhost
: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ ์ฃผ์ -
1433
: SQL Sever์ ๊ธฐ๋ณธ ํฌํธ ๋ฒํธ -
mydatabase
: ์ฐ๊ฒฐํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ -
integratedSecurity=true
: ํตํฉ ๋ณด์(Windows ์ธ์ฆ) ์ฌ์ฉ
5๏ธโฃ H2(In-Memory Database)
jdbc:h2:mem:testdb
-
h2:mem
: H2 ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ ์ฌ์ฉ -
testdb
: ๋ฉ๋ชจ๋ฆฌ ๋ด์์ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ
3๏ธโฃ ๋ฐ์ดํฐ๋ฒ ์ด์ค URL ์ฌ์ฉ ๋ฐฉ๋ฒ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค URL์ ์ฃผ๋ก Spring Boot์ ๊ฐ์ ํ๋ ์์ํฌ๋ JDBC(Java Database Connectivity) API๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ ๋ ์ค์ ํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, Spring Boot์์
application.properties
๋application.yml
ํ์ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค URL์ ์ง์ ํ ์ ์์ต๋๋ค.
- ์๋ฅผ ๋ค์ด, Spring Boot์์
๐ application.properties
์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค URL ์ค์ .
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=secret
๐ JDBC API๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์์
String url = "jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC";
String username = "root";
String password = "secret";
Connection conn = DriverManager.getConnection(url, username, password);
4๏ธโฃ ๋ฐ์ดํฐ๋ฒ ์ด์ค URL์ ๊ตฌ์ฑ ์์ ์์ฝ.
-
ํ๋กํ ์ฝ(JDBC) :
jdbc:
๋ก ์์ํ๋ฉฐ JDBC(Java Database Connectivity)๋ฅผ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ์๋ฏธํฉ๋๋ค. - ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ : ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข ๋ฅ(MySQL, PostgreSQL, Oracle ๋ฑ)๋ฅผ ์ง์ ํฉ๋๋ค.
- ์๋ฒ ์ฃผ์(ํธ์คํธ์ ํฌํธ) : ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ์์น๋ฅผ ๋ํ๋ ๋๋ค(๋ก์ปฌ ๋๋ ์๊ฒฉ).
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ : ์ฐ๊ฒฐํ๋ ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
- ์ถ๊ฐ ์ต์ : SSL ์ฌ์ฉ, ํ์์กด ์ค์ ๋ฑ ์ถ๊ฐ์ ์ธ ์ค์ ์ด ํ์ํ ๋ URL์ ํฌํจ๋ ์ ์์ต๋๋ค.
5๏ธโฃ ์์ฝ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค URL์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ ๋ ์ฌ์ฉํ๋ ๊ณ ์ ํ ์ฃผ์๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ, ์๋ฒ ์ฃผ์, ํฌํธ ๋ฒํธ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ ๋ฑ์ ์ ๋ณด๋ฅผ ํฌํจํ์ฌ ์ฐ๊ฒฐ ์ค์ ์ ์ ์ํฉ๋๋ค.