복붙노트

[SPRING] 데이터베이스를 삭제하고 다시 만든 후 최대 절전 모드로 강제로 테이블 만들기

SPRING

데이터베이스를 삭제하고 다시 만든 후 최대 절전 모드로 강제로 테이블 만들기

나는 자바 2 ee와 웹 응용 프로그램을 개발하고있다. 나는 또한 최대 절전 모드와 MySQL을 사용한다. 백업 파일을 복원하려면 응용 프로그램의 일부 지점에서 현재 데이터베이스를 삭제하고 다시 작성해야합니다. 다음과 같이 수행합니다.

    Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/?user=user&password=pass");
    Statement statement = (Statement) conn.createStatement();
    statement.executeUpdate("DROP DATABASE tcs;");
    statement.executeUpdate("CREATE DATABASE tcs charset=utf8 collate=utf8_persian_ci;");

삭제 및 재생성 후 기본 사용자 (봄 보안 사용자)와 데이터베이스를 초기화해야합니다.

    User admin = new User();
    UserAuthority ROLE_USER = new UserAuthority("ROLE_USER");
    ROLE_USER.save();
    admin.addUserAuthority(ROLE_USER);
    admin.setEnabled(true);

    admin.save();

하지만 마지막 줄에서는이 예외를 던집니다.

Hibernate: insert into roles (authority) values (?)
[DEBUG][16:19:17,734] [http-bio-8080-exec-10] NewPooledConnection:367  com.mchange.v2.c3p0.impl.NewPooledConnection@bcbe33a handling a throwable.
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'tcs.roles' doesn't exist

hibernate가 시작할 때 테이블을 생성한다는 것을 알지만,이 경우 drop / recreate 후에 테이블을 다시 만들지 못한다. 그래서 어떻게 테이블을 다시 생성하기 위해 최대 절전 모드로 만들 수 있는가? 또는 가상으로 Hibernate.createTable (Class)과 같은 것이 있는가?

해결법

  1. ==============================

    1.구성에 다음 속성을 추가해야합니다.

    구성에 다음 속성을 추가해야합니다.

    SessionFactory가 생성되고 파괴 될 때마다 삭제하고 다시 만듭니다.

    <property name="hbm2ddl.auto">create-drop</property>
    

    기타 가능한 옵션 :

  2. ==============================

    2.미래의 Google 직원을 위해 : 어쨌든 세션 플랜트를 만들 필요가 있었기 때문에이 라인을 추가하고 매력적이었습니다.

    미래의 Google 직원을 위해 : 어쨌든 세션 플랜트를 만들 필요가 있었기 때문에이 라인을 추가하고 매력적이었습니다.

    새로운 Configuration (). configure (). buildSessionFactory ();

    hibernate 4에서는 buildSessionFactory ()가 사용되지 않지만, 여기에있는 코드를 사용하여 동일한 작업을 수행 할 수 있다고 생각합니다.

  3. from https://stackoverflow.com/questions/16999259/force-hibernate-to-create-tables-after-dropping-and-recreating-database by cc-by-sa and MIT license