我正在为一个项目开发一些RESTFull Web服务.我使用Spring框架并使用gradle进行构建.问题是,我想在写入和读取数据时加密和解密数据表.我已经有了一个用AES等加密和解密数据的算法(类).我需要的是,如何注释这个方法来休眠实体类,我需要为这个类创建bean吗?
例如: -
@Column(columnDefinition= "LONGBLOB", name = "card_no")
@ColumnTransformer(
read="decrypt(card_no)",
write="encrypt(?)")
private String cardNo;
Run Code Online (Sandbox Code Playgroud)
像这样我想在这里添加我自己的加密/解密java方法.
我将在一个spring项目中配置两个数据库连接。按照以下方式创建了两个数据源bean。
@Bean(destroyMethod = "close")
public BoneCPDataSource getDataSource() {
....
....
return dataSource;
}
@Bean(destroyMethod = "close")
public BoneCPDataSource getDataSource2() {
....
....
return dataSource;
}
Run Code Online (Sandbox Code Playgroud)
这就是我创建实体管理器的方式。
@Bean
@Qualifier("entityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
...
em.setDataSource(getDataSource());
em.setPersistenceUnitName("entityManagerFactory");
...
return em;
}
@Bean
@Qualifier("entityManagerFactory2")
public LocalContainerEntityManagerFactoryBean entityManagerFactory2() {
...
em.setDataSource(getDataSource2());
em.setPersistenceUnitName("entityManagerFactory2");
...
return em;
}
Run Code Online (Sandbox Code Playgroud)
然后,我自动连接到存储库实现类中的实体管理器上方,它对于非事务性数据也可以正常工作。
@PersistenceContext(unitName = "entityManagerFactory2")
@Qualifier(value = "entityManagerFactory2")
private EntityManager entityManager2;
Run Code Online (Sandbox Code Playgroud)
然后按照以下方式创建事务管理器。
@Bean
@Primary
public JpaTransactionManager getTransactionManager() {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
return transactionManager;
}
@Bean(name = …Run Code Online (Sandbox Code Playgroud)