Package com.easydesk.torque
Class DatabaseBackup
java.lang.Object
com.easydesk.torque.DatabaseBackup
DatabaseBackup
- Author:
- Youngho Cho
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidexportDatabaseToInsertSql(String outputPath) 백업 대상 테이블 목록을Torque.getDatabaseMap().getTables()가 아니라 JDBCDatabaseMetaData로 직접 조회한다.voidexportTableToInsertSql(String tableName, String outputPath) 특정 table backup (테이블명으로 직접 지정)voidexportTableToInsertSql(TableMap tableMap, String outputPath) 특정 table backup (Torque TableMap으로 지정) - 하위 호환용으로 남겨둠.
-
Constructor Details
-
DatabaseBackup
public DatabaseBackup()새로운DatabaseBackup인스턴스를 생성한다.
-
-
Method Details
-
exportDatabaseToInsertSql
백업 대상 테이블 목록을Torque.getDatabaseMap().getTables()가 아니라 JDBCDatabaseMetaData로 직접 조회한다. Torque의 TableMap은 스키마 전체가 한 번에 등록되는 게 아니라, 각 테이블의 생성된Base*Peer클래스가 (static 초기화 블록에서) 실제로 "로딩"되는 시점에 하나씩 DatabaseMap에 등록된다 (JVM 클래스 lazy loading). 그래서 이 메서드를 부르는 시점까지 어떤 화면/코드도 건드리지 않은 테이블의 Peer 클래스는 아직 로딩되지 않았을 수 있고, 그런 테이블은 DatabaseMap에 없어서 백업 대상에서 조용히 빠진다. (JUnit 테스트에서는 같은 JVM(surefire reuseForks) 안에서 다른 테스트들이 먼저 돌면서 대부분의 Peer 클래스를 이미 로딩해놓은 상태라 우연히 전체 테이블이 다 나왔던 것이고, 방금 켠 웹 앱에서는 그때까지 실제로 접근한 화면들의 Peer 클래스만 로딩되어 있어서 일부(예: 15개)만 백업됐던 것이다.) JDBC DatabaseMetaData#getTables()는 Peer 클래스 로딩 여부와 무관하게 실제 DB에 존재하는 테이블을 그대로 조회하므로 이 문제가 없다. HSQLDB의 내부 LOB 저장용 테이블 (SYSTEM_LOBS 스키마) 등이 섞여 나오지 않도록 스키마를 "PUBLIC"(사용자 테이블이 생성되는 기본 스키마)으로 한정했다. 테이블은 알파벳/JDBC 순서가 아니라 FK 의존성 순서(부모 테이블 먼저)로 정렬해서 처리한다. 개별 백업 파일(테이블명.sql)을 나중에 손으로 합쳐서 하나의 seed 파일로 쓸 때, 순서를 잘못 맞추면(예: 자식 테이블을 부모보다 먼저 insert) "foreign key no parent" 에러가 나는 문제를 겪은 적이 있어서, 아예 이 메서드가 부모→자식 순서를 계산해서 각 테이블을 그 순서로 처리하고,COMBINED_FILE_NAME로 전체를 이미 올바른 순서로 합친 파일도 같이 만들어준다 - 여러 테이블을 하나의 seed 파일로 합쳐야 할 때는 이 파일을 쓰면 된다.- Parameters:
outputPath- 백업 파일을 저장할 경로,null이면 기본 백업 폴더를 사용한다.- Throws:
Exception- 백업 중 오류가 발생한 경우
-
exportTableToInsertSql
특정 table backup (테이블명으로 직접 지정)- Parameters:
tableName- 백업할 테이블 이름outputPath- 백업 파일을 저장할 경로- Throws:
Exception- 백업 중 오류가 발생한 경우
-
exportTableToInsertSql
특정 table backup (Torque TableMap으로 지정) - 하위 호환용으로 남겨둠.- Parameters:
tableMap- 백업할 테이블의 TableMapoutputPath- 백업 파일을 저장할 경로- Throws:
Exception- 백업 중 오류가 발생한 경우
-