객체 관계형 매핑의 개념을 설명하기 전에 앞서 다음과 같은 자바 클래스가 있습니다.public class User { private Integer id; private String firstName; private String lastName;}Database에는 USERS라는 table이 있습니다.idfirst_namelast_name1foo1bar12foo2bar23foo3bar3자바 클래스와 해당 테이블을 매핑하기 위해서는 자바에 많은 방법들이 있습니다.1. JDBC2. JOOQ 또는 Mybatis와 같은 Spring의 JDBC 추상화 SQL 프레임워크3. Hibernate 또는 다른 JPA와 같은 ORM많은 방법들이 있지만 가장 기본이 되는 JDBC를 이해하는 것이 가장 중요합니다. Hiberna..
DriverManager.getConnection 메서드를 사용하여 데이터베이스 연결을 열고 닫는 작업은 시간이 걸립니다. 특히 웹 애플리케이션에서는 매 사용자 액션마다 새로운 데이터베이스 연결을 열기보다는 항상 열려 있고 사용자 간에 공유되는 소규모 커넥션 풀을 사용하는 것이 좋습니다.JDBC 커넥션 풀의 목적은 다음과 같습니다. 커넥션 풀은 소수의 데이터베이스 연결을 열어 두고, 매번 직접 데이터베이스 연결을 여는 대신 커넥션 풀에서 이 중 하나를 요청하여 사용할 수 있습니다.JDBC 커넥션 풀Apache Commons DBCP 및 C3P0HikariCP(추천)Vibur-dbcpOracle's UCPTomcat JDBC Connection PoolJDBC 커넥션 풀 사용법JDBC 코드에서는 더 이상 ..
setAsciiStream()을 사용하여 ASCII 값을 데이터베이스에 저장import java.io.ByteArrayInputStream;import java.sql.*;public class TestApplication { static final String DB_URL = "jdbc:mysql://localhost/YOUR_DATABASE"; static final String USER = "yourUsername"; static final String PASS = "yourPassword"; static final String XML = "ToveJaniReminderDon't forget me this weekend!"; static final String DROP_T..
저장 프로시저 생성하기DELIMITER $$DROP PROCEDURE IF EXISTS `EMP`.`getEmpName` $$CREATE PROCEDURE `EMP`.`getEmpName` (IN EMP_ID INT, OUT EMP_FIRST VARCHAR(255))BEGIN SELECT first INTO EMP_FIRST FROM Employees WHERE ID = EMP_ID;END $$DELIMITER ;프로시저에는 IN, OUT, INOUT 매개변수가 있습니다. PreparedStatement 객체는 IN 매개변수만 사용하지만, CallableStatement 객체는 모두 사용할 수 있습니다.IN: SQL 문이 생성될 때 값이 알려지지 않은 매개변수. setXXX() 메서드를 ..
배치 처리를 사용하면 관련 SQL 문을 하나의 배치로 그룹화하여 데이터베이스에 한 번에 제출할 수 있습니다. 여러 SQL 문을 한 번에 데이터베이스에 보내면 통신 오버헤드를 줄일 수 있어 성능이 향상됩니다.JDBC 드라이버가 이 기능을 지원해야 하는 것은 아니며, DatabaseMetaData.supportsBatchUpdates() 메서드를 사용하여 대상 데이터베이스가 배치 업데이트 처리를 지원하는지 확인해야 합니다. 이 메서드는 JDBC 드라이버가 이 기능을 지원하면 true를 반환합니다.try (Connection conn = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD)) { Statement st = conn.createSta..
예외 처리를 통해 프로그램에서 정의한 오류와 같은 예외 상황을 제어된 방식으로 처리할 수 있습니다. 예외 상황이 발생하면 예외가 throw됩니다. throw된다는 것은 현재 프로그램 실행이 중단되고, 제어가 가장 가까운 적절한 catch 블록으로 전달된다는 것을 의미합니다. 만약 적절한 catch 블록이 없다면, 프로그램의 실행은 종료됩니다.SQLException 메서드드라이버와 데이터베이스 모두 발생할 수 있습니다. 예외가 발생하면 SQLException 타입의 객체가 catch 블록으로 전달됩니다.메서드설명getErrorCode()예외와 관련된 오류 번호getMessage()JDBC 드라이버 오류 또는 데이터베이스 오류 번호와 메시지getSQLState()데이터베이스 오류일 경우 XOPEN SQL 상..