<prop key="hibernate.hbm2ddl.auto">create</prop>
创建一个新的数据库模式并<prop key="hibernate.hbm2ddl.auto">update</prop>
如果不存在则创建并更新现有数据库架构。如果我想检查数据库架构是否存在,并根据数据库架构的创建情况,我该如何实现这一点。目前我的配置applicationContext.xml
is:
<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================");
}
}
}
这是工作。什么配置可以帮助我获得这个?
就像是:
感谢致敬。
您可以禁用hibernate.hbm2ddl.auto
选项,检查条件(可能使用普通 JDBC)并调用(或不调用)create http://docs.jboss.org/hibernate/core/3.5/api/org/hibernate/tool/hbm2ddl/SchemaExport.html#create%28boolean,%20boolean%29的方法模式导出 http://docs.jboss.org/hibernate/core/3.5/api/org/hibernate/tool/hbm2ddl/SchemaExport.html班级。这将在应用程序的初始化代码中完成(aServletContextListener
如果您正在使用网络应用程序)。
有关如何使用的示例SchemaExport
class:
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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)