<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${springframework.version}</version>
</dependency>
database.properties
jdbc.url=jdbc:mariadb://localhost:3306/kingdom
jdbc.driver=org.mariadb.jdbc.Driver
jdbc.username=root
jdbc.password=1234
hibernate.dialect=org.hibernate.dialect.MariaDBDialect
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.creation_policy=update
DataSource
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="url" value="${jdbc.url}"/>
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
SessionFactory
beanSessionFactory
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan" value="com.rakovets.course.java.spring.orm.dal.entity"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.creation_policy}</prop>
</props>
</property>
</bean>
public class UserDao {
@Autowired
private SessionFactory sessionFactory;
protected SessionFactory getSessionFactory() {
return sessionFactory;
}
@Override
public void save(User entity) {
sessionFactory.getCurrentSession().save(entity);
}
}
EntityManagerFactory
beanEntityManagerFactory
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan" value="by.rakovets.course.java.spring.orm.dal.entity"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.creation_policy}</prop>
</props>
</property>
</bean>
@Repository
public class Dao {
@Autowired
private EntityManagerFactory factory;
public EntityManager getEm() {
if (em.get() == null) {
em.set(factory.createEntityManager());
}
return em.get();
}
// ...
}
@Repository
public class Dao {
@PersistenceContext(name = "entityManagerFactory")
private EntityManager em;
public void saveTest() {
Employee e = new Employee();
e.setFirstName("Dmitry");
e.setLastName("Rakovets");
em.persist(e);
em.clear();
}
}