[SPRING] Hibernate 사용자 정의 스키마 생성
SPRINGHibernate 사용자 정의 스키마 생성
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="annotatedClasses">
<list>
<value>info.ems.models.User</value>
<value>info.ems.models.Role</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
</props>
</property>
</bean>
<bean id="dao" class="info.ems.hibernate.HibernateEMSDao" init-method="createSchema">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
그리고 HibernateEMSDao.java :
public class HibernateEMSDao implements EMSDao {
private final Logger logger = LoggerFactory.getLogger(getClass());
private HibernateTemplate hibernateTemplate;
public void setSessionFactory(SessionFactory sessionFactory) {
this.hibernateTemplate = new HibernateTemplate(sessionFactory);
}
public void saveUser(User user) {
hibernateTemplate.saveOrUpdate(user);
}
public List<User> listUser() {
return hibernateTemplate.find("from User");
}
public void createSchema() {
logger.info("inserting default admin user into database");
User admin = new User();
admin.setUsername("admin");
admin.setName("Admin");
admin.setEmail("admin");
admin.setPassword("21232f297a57a5a743894a0e4a801fc3");
saveUser(admin);
logger.info("Admin inserted into database");
try {
System.out.println(listUser().get(0).getId());
} catch (Exception e) {
logger.error("===================Error================");
}
}
}
그것은 효과가있다. 이 구성을 얻으려면 어떤 구성이 도움이됩니까? 같은 것 :
고마워, 안부.
해결법
-
==============================
1.hibernate.hbm2ddl.auto 옵션을 비활성화하고 조건을 검사하고 (아마 일반 JDBC를 사용하여) SchemaExport 클래스의 create 메소드를 호출하거나 호출하지 않을 수 있습니다. 이 작업은 응용 프로그램의 초기화 코드 (웹 응용 프로그램을 사용하는 경우 ServletContextListener)에서 수행됩니다.
hibernate.hbm2ddl.auto 옵션을 비활성화하고 조건을 검사하고 (아마 일반 JDBC를 사용하여) SchemaExport 클래스의 create 메소드를 호출하거나 호출하지 않을 수 있습니다. 이 작업은 응용 프로그램의 초기화 코드 (웹 응용 프로그램을 사용하는 경우 ServletContextListener)에서 수행됩니다.
SchemaExport 클래스를 사용하는 방법에 대한 예제 :
AnnotationConfiguration config = new AnnotationConfiguration(); config.addAnnotatedClass(info.ems.models.User.class); config.addAnnotatedClass(info.ems.models.Role.class); config.configure(); new SchemaExport(config).create(true, true);
from https://stackoverflow.com/questions/6167474/hibernate-custom-schema-creation by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring Boot Maven - 네이티브 라이브러리 포함 (0) | 2019.07.18 |
---|---|
[SPRING] 낙타 석영 경로 테스트 (0) | 2019.07.18 |
[SPRING] Jackson - JSON을 클래스 비 직렬화 (0) | 2019.07.18 |
[SPRING] 스프링 응용 프로그램 컨텍스트가 시작되지 않는지 테스트하는 가장 좋은 방법은 무엇입니까? (0) | 2019.07.18 |
[SPRING] 관리되지 않는 @Bean에 @ConfigurationProperties 사용 (0) | 2019.07.18 |