使用预定义的 scrypt 文件通过 Spring 自动生成 sql 表
Posted
技术标签:
【中文标题】使用预定义的 scrypt 文件通过 Spring 自动生成 sql 表【英文标题】:Generating sql tables by means of Spring automatically using predefined scrypt file 【发布时间】:2017-07-27 22:16:55 【问题描述】:嵌入式数据库(如 H2)的功能使我们能够使用预定义的 scrypt 文件自动生成 sql 表。
豆示例:
@Bean
public DataSource dataSource()
EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
return builder
.setType(EmbeddedDatabaseType.H2)
.addScript("embeddedDB.sql")
.build();
Scrypt 文件示例:
CREATE TABLE Users
(
id INT(11) NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
photo BLOB,
registration_date DATE NOT NULL,
role VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
前段时间在网上看到一个类似的解决方案来配置一个 bean,在 mysql 数据源的情况下自动生成 SQL 表(当 spring 上下文启动时)。该解决方案不包括 JPA/Hibernate。不幸的是,我再也找不到这个例子了...... 那么,我的问题是,在 MySQL 数据源的情况下,Spring 如何实现自动生成 SQL 表?
【问题讨论】:
我终于找到了在哪里看到了解决方案http://***.com/a/23036217/6776032 【参考方案1】:spring boot 中的属性文件
datasource.ranking.hibernate.hbm2ddl.method=create
创建将创建新表更新将离开表。这些表将根据您的类模型创建 然后在你的配置类中设置实体管理器属性
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() throws NamingException
LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();
factoryBean.setDataSource(dataSource());
factoryBean.setPackagesToScan(new String[] "com.package" );
factoryBean.setJpaVendorAdapter(jpaVendorAdapter());
factoryBean.setJpaProperties(jpaProperties());
return factoryBean;
private Properties jpaProperties()
Properties properties = new Properties();
properties.put("hibernate.dialect", environment.getRequiredProperty("datasource.ranking.hibernate.dialect"));
properties.put("hibernate.hbm2ddl.auto", environment.getRequiredProperty("datasource.ranking.hibernate.hbm2ddl.method"));
properties.put("hibernate.show_sql", environment.getRequiredProperty("datasource.ranking.hibernate.show_sql"));
properties.put("hibernate.format_sql", environment.getRequiredProperty("datasource.ranking.hibernate.format_sql"));
/* if(StringUtils.isNotEmpty(environment.getRequiredProperty("datasource.ranking.defaultSchema")))
properties.put("hibernate.default_schema", environment.getRequiredProperty("datasource.ranking.defaultSchema"));
*/
return properties;
【讨论】:
我知道,如何使用 JPA 生成基于类模型的表,但我一直在寻找没有 JPA 的解决方案。 看看这个tutorialspoint.com/jdbc/jdbc-create-tables.htm以上是关于使用预定义的 scrypt 文件通过 Spring 自动生成 sql 表的主要内容,如果未能解决你的问题,请参考以下文章
我可以通过加盐现有的 MD5 散列并使用 Scrypt 或 PBKDF2 HMACSHA256 散列结果来提高 MD5 散列密码的安全性吗?