Вы можете настроить Hibernate без использования persistence.xml в Spring следующим образом:
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean()
{
Map<String, Object> properties = new Hashtable<>();
properties.put("javax.persistence.schema-generation.database.action",
"none");
HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter();
adapter.setDatabasePlatform("org.hibernate.dialect.MySQL5InnoDBDialect"); //you can change this if you have a different DB
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(adapter);
factory.setDataSource(this.springJpaDataSource());
factory.setPackagesToScan("package name");
factory.setSharedCacheMode(SharedCacheMode.ENABLE_SELECTIVE);
factory.setValidationMode(ValidationMode.NONE);
factory.setJpaPropertyMap(properties);
return factory;
}
Поскольку вы не используете файл persistence.xml, вы должны создать bean-компонент, который возвращает DataSource, который вы указали в приведенном выше методе, который устанавливает источник данных:
@Bean
public DataSource springJpaDataSource()
{
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setUrl("jdbc:mysql://localhost/SpringJpa");
dataSource.setUsername("tomcatUser");
dataSource.setPassword("password1234");
return dataSource;
}
Затем вы используете @EnableTransactionManagement
аннотацию для этого файла конфигурации. Теперь, когда вы помещаете эту аннотацию, вы должны создать один последний компонент:
@Bean
public PlatformTransactionManager jpaTransactionManager()
{
return new JpaTransactionManager(
this.entityManagerFactoryBean().getObject());
}
Теперь не забудьте использовать @Transactional
Аннотация над теми методами, которые работают с БД.
Наконец, не забудьте добавить EntityManager
в свой репозиторий (этот класс репозитория должен иметь аннотацию @Repository
над ним).