数据持久层框架jpa的用法
配置类:
@Configuration
@EnableJpaRepositories("com.abel.example.dao")
@EnableTransactionManagement
@ComponentScan
public class JpaConfig {
@Autowired
private DataSource dataSource;
@Bean
public EntityManagerFactory entityManagerFactory() {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
//vendorAdapter.setShowSql(true);
//vendorAdapter.setGenerateDdl(true);
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan("com.abel.example.bean");
factory.setDataSource(dataSource);
Map<String, Object> jpaProperties = new HashMap<String, Object>();
jpaProperties.put("hibernate.ejb.naming_strategy","org.hibernate.cfg.ImprovedNamingStrategy");
jpaProperties.put("hibernate.jdbc.batch_size",50);
//jpaProperties.put("hibernate.show_sql",true);
factory.setJpaPropertyMap(jpaProperties);
factory.afterPropertiesSet();
return factory.getObject();
}
@Bean
public PlatformTransactionManager transactionManager() {
JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setEntityManagerFactory(entityManagerFactory());
return txManager;
}
}
dao:
public interface UserJpaDao extends JpaRepository<User, Long> {
/**
* Find by name.
*
* @param name the name
* @return the user
*/
User findByName(String name);
User getOne(Long id);
List<User> findByUsernameContaining(String username);
User getByUsernameIs(String username);
@Query("select s from User s where name like CONCAT('%',:name,'%')")
List<User> findByNameLike(@Param("name") String name);
}
无mapper