[java] Hibernate에서 데이터베이스 스키마(Schema)를 변경하는 방법은?

Hibernate는 ORM(Object-Relational Mapping) 프레임워크로, 객체와 관계형 데이터베이스 간의 매핑을 관리해줍니다. 스키마 변경은 데이터베이스 구조를 수정하는 작업으로, Hibernate에서 스키마 변경을 수행하려면 다음과 같은 절차를 따를 수 있습니다.

  1. 엔티티 클래스 수정: 먼저, 엔티티 클래스를 수정하여 변경하고자 하는 스키마 변경 내용을 반영해야 합니다. 예를 들어, 새로운 필드를 추가하거나 기존 필드를 수정하거나 삭제하는 경우 엔티티 클래스에 해당 변경 사항을 반영해야 합니다.

  2. Hibernate 설정 수정: Hibernate 설정 파일인 hibernate.cfg.xml 또는 persistence.xml 파일을 열어, 기존 스키마와의 매핑 관계를 수정해야 합니다. 스키마 변경 내용에 따라 엔티티와 데이터베이스 테이블 간의 매핑을 조정해야 합니다.

  3. 데이터베이스 스키마 변경: Hibernate에서 제공하는 기능을 사용하여 데이터베이스 스키마를 변경할 수 있습니다. Hibernate의 내부 마이그레이션 도구를 활용하거나, Hibernate를 통해 데이터베이스 연결을 설정한 후, 자동으로 스키마 변경을 수행할 수 있습니다.

Hibernate를 사용하여 스키마 변경을 수행하는 예제 코드는 다음과 같습니다.

// Hibernate 설정
Configuration configuration = new Configuration().configure();
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
    .applySettings(configuration.getProperties());
SessionFactory sessionFactory = configuration.buildSessionFactory(builder.build());
    
// 엔티티 매니저 생성
EntityManager entityManager = sessionFactory.createEntityManager();
    
// 데이터베이스 스키마 변경
entityManager.getTransaction().begin();
entityManager.createNativeQuery("ALTER TABLE your_table ADD COLUMN new_column INT").executeUpdate();
entityManager.getTransaction().commit();
    
// 엔티티 매니저 종료
entityManager.close();
    
// 세션 팩토리 종료
sessionFactory.close();

위의 코드에서는 ALTER TABLE 문을 사용하여 “your_table” 테이블에 “new_column”이라는 새로운 열을 추가하고 있습니다. 필요에 따라 해당 코드를 수정하여 다른 스키마 변경 작업을 수행할 수 있습니다.

참고 문서: