sitelink1 | |
---|---|
sitelink2 | |
extra_vars5 | 1 |
extra_vars6 | ko |
* h2 설치 (택1)
> 최신 jar (2025.05.03) : h2-2.3.232.jar
> gradle denpendencies 추가
- runtimeOnly 'com.h2database:h2:2.2.224'
* 샘플 코드
- jar 를 classpath 에 추가후 다음과 같은 java 클래스를 생성후 실행한다.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class H2Example {
private static final String JDBC_URL = "jdbc:h2:./mydbtest"; // 현재 디렉토리에 mydb.mv.db 파일 생성
private static final String USER = "sa";
private static final String PASSWORD = "";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// JDBC 드라이버 로드 (H2는 자동 로드되므로 명시적으로 필요하지 않을 수 있음)
Class.forName("org.h2.Driver");
// 데이터베이스 연결
conn = DriverManager.getConnection(JDBC_URL, USER, PASSWORD);
System.out.println("H2 데이터베이스에 연결되었습니다.");
// Statement 객체 생성
stmt = conn.createStatement();
// 테이블 생성 SQL 쿼리
String createTableSQL = "CREATE TABLE IF NOT EXISTS users (" +
"id INT PRIMARY KEY AUTO_INCREMENT, " +
"name VARCHAR(255), " +
"age INT)";
// 테이블 생성 실행
stmt.executeUpdate(createTableSQL);
System.out.println("users 테이블이 생성되었습니다.");
// 데이터 삽입 SQL 쿼리
String insertDataSQL1 = "INSERT INTO users (name, age) VALUES ('Alice', 30)";
String insertDataSQL2 = "INSERT INTO users (name, age) VALUES ('Bob', 25)";
// 데이터 삽입 실행
stmt.executeUpdate(insertDataSQL1);
stmt.executeUpdate(insertDataSQL2);
System.out.println("데이터가 삽입되었습니다.");
} catch (ClassNotFoundException e) {
System.err.println("H2 드라이버를 찾을 수 없습니다: " + e.getMessage());
} catch (SQLException e) {
System.err.println("SQL 오류 발생: " + e.getMessage());
} finally {
// 리소스 해제 (역순으로)
try {
if (stmt != null) stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println("H2 데이터베이스 연결이 닫혔습니다.");
}
}
}
* 실행하면 콘솔에 다음과 같은 메세지가 출력된다.
users 테이블이 생성되었습니다.
데이터가 삽입되었습니다.
H2 데이터베이스 연결이 닫혔습니다.
* class 경로에 'mydbtest.mv.db' 파일이 생성되어 있다. 잘 찾아보자.
* 다음은 공식홈에서 발췌해 왔다.
Features
* Very fast database engine
* Open source
* Written in Java
* Supports standard SQL, JDBC API
* Embedded and Server mode, Clustering support
* Strong security features
* The PostgreSQL ODBC driver can be used
* Multi version concurrency
Sample Application
1. 첨부파일 #1 참조
2. http://www.h2database.com/html/tutorial.html 에서 "Using Databases in Web Applications" 부분 참조
Test SQL
SET WRITE_DELAY 0;
SET CLUSTER '';
SET DEFAULT_TABLE_TYPE 0;
SET DEFAULT_LOCK_TIMEOUT 2000;
SET CACHE_SIZE 16384;
CREATE USER IF NOT EXISTS SA SALT 'f8752c85c729c186' HASH '883ecfdc106537ace2e018d70b96f50779fcc98fad6150910f3890ac568d9292' ADMIN;
DROP TABLE IF EXISTS PUBLIC.USERINFO;
DROP TABLE IF EXISTS PUBLIC.AUTHORITIES;
DROP TABLE IF EXISTS PUBLIC.EMPLOYEE;
CREATE TABLE PUBLIC.USERINFO(USERNAME VARCHAR(50) NOT NULL PRIMARY KEY,PASSWORD VARCHAR(50) NOT NULL,ENABLED INTEGER DEFAULT 0 NOT NULL);
CREATE TABLE PUBLIC.AUTHORITIES(USERNAME VARCHAR(12) NOT NULL,AUTHORITY VARCHAR(20) NOT NULL);
CREATE TABLE PUBLIC.EMPLOYEE(EMP_NAME VARCHAR(64),PASSWORD VARCHAR(64),EMAIL VARCHAR(64));
INSERT INTO PUBLIC.USERINFO(USERNAME, PASSWORD, ENABLED) VALUES
('admin','admin',1),
('kim','kim',0),
('son','son',1),
('user','user',1);
INSERT INTO PUBLIC.AUTHORITIES(USERNAME, AUTHORITY) VALUES
('admin','ADMIN'),
('admin','USER'),
('user','USER'),
('son','ADMIN'),
('son','USER'),
('kim','USER');
INSERT INTO PUBLIC.EMPLOYEE(EMP_NAME, PASSWORD, EMAIL) VALUES
('admin','admin','admin@gmail.com'),
('user','user','user@gmail.com'),
('son','son','son@gmail.com');
Commands (Data Manipulation)
SELECT INSERT UPDATE DELETE |
BACKUP CALL EXPLAIN MERGE |
RUNSCRIPT SCRIPT SHOW |
Commands (Data Definition)
Commands (Other)
Other Grammar
System Tables
새로운 데이터베이스의 생성
(http://www.h2database.com/html/tutorial.html#creating_new_databases)
데이터베이스 연결시 지정한 URL에 데이터베이스가 생성되어 있지 않다면 입력된 데이터베이스명으로 자동 생성된다.
만일 자동 생성을 원치 않는다면 다음과 같은 옵션으로 자동 생성을 막을 수 있다.
String url = "jdbc:h2:/data/sample;IFEXISTS=TRUE";
만일 해당 데이터베이스가 존재하지 않는 경우 데이터베이스가 존재하지 않는다는 오류 메세지를 출력한다.
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
8 |
PostgreSQL 을 위한 docker pgAdmin 설치
![]() | 황제낙엽 | 2024.02.01 | 80 |
7 |
@Cacheable (Redis) 의 장애 대응용으로 Hystrix 사용
![]() | 황제낙엽 | 2022.09.17 | 76 |
6 |
Redis 아키텍처에 대한 이해
![]() | 황제낙엽 | 2020.06.19 | 183 |
5 | SQLite database | 황제낙엽 | 2019.09.05 | 860 |
4 | Using the H2 Database Sequence | 황제낙엽 | 2011.03.23 | 250 |
3 | Using the H2 Database CSVREAD with a sequence ID Column | 황제낙엽 | 2011.03.23 | 316 |
» |
Pure Java DB (H2 Database)
![]() | 황제낙엽 | 2010.09.27 | 332 |
1 | 엔티티타입 선정 방법 (작성중) | 황제낙엽 | 2008.04.01 | 165 |