SpringBoot整合Hibernate
作者:互联网
编写配置文件
1 <!--配置读取properties文件--> 2 <context:property-placeholder location="classpath:jdbc.properties"/> 3 <!--配置c3p0数据库连接池--> 4 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 5 <property name="jdbcUrl" value="${jdbc.url}" /> 6 <property name="driverClass" value="${jdbc.driver.class}" /> 7 <property name="user" value="${jdbc.username}" /> 8 <property name="password" value="${jdbc.password}" /> 9 </bean> 10 <!--配置Hibernate的SessionFactory--> 11 <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> 12 <property name="dataSource" ref="dataSource" /> 13 <!--hibernateProperties属性:显示sql语句,开启正向工程等等--> 14 <property name="hibernateProperties"> 15 <props> 16 <!--显示当前执行的sql语句--> 17 <prop key="hibernate.show_sql">true</prop> 18 <!--开启正向工程--> 19 <prop key="hibernate.hbm2ddl.auto">update</prop> 20 </props> 21 </property> 22 <!--扫面实体所在的包--> 23 <property name="packageToScan"> 24 <list> 25 <value>io.guangsoft.pojo</value> 26 </list> 27 </property> 28 </bean> 29 <!--配置hibernate事物管理器--> 30 <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> 31 <property name="sessionFactory" ref="sessionFactory" /> 32 </bean> 33 <!--配置开启注解事物处理--> 34 <tx:annotation-driven transaction-manager="transactionManager" /> 35 <!--配置springIOC的注解扫描--> 36 <context:component-scan base-package="io.guangsoft" /> 37 <!--配置HibernateTemplate对象--> 38 <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate"> 39 <property name="sessionFactory" ref="sessionFactory" /> 40 </bean>
编写实体类
1 @Entity 2 @Table(name="t_user") 3 public class User implements Serializable { 4 @Id 5 @GeneratedValue(strategy=GenerationType.IDENTITY) 6 @Column(name="id") 7 private Integer id; 8 @Column(name="username") 9 private String username; 10 //...set、get方法 11 }
dao层编写
1 @Repository 2 public class UserDaoImpl implements UserDao { 3 @Autowired 4 private HibernateTemplate hibernateTemplate; 5 @Override 6 public void insertUser(User user) { 7 this.hibernateTemplate.save(user); 8 } 9 @Override 10 public void updateUser(User user) { 11 this.hibernateTemplate.update(user); 12 } 13 @Override 14 public void deleteUser(User user) { 15 this.hibernateTemplate.delect(user); 16 } 17 @Override 18 public User selectUserById(Integer id) { 19 return this.hibernateTemplate.get(User.class, id); 20 } 21 }
测试代码
1 @RunWith(SpringJUnit4ClassRunner.class) 2 @ContextConfiguration("classpath:applicationContext.xml") 3 public class UserDaoImplTest { 4 @Autowired 5 private UserDao userDao; 6 @Test 7 @Transactional//测试类对事物提交方式默认是回滚 8 @Rollback(false)//取消自动回滚 9 public void testInsertUser() { 10 User user = new User(); 11 user.setUsername("呵呵"); 12 this.userDao.insertUser(user); 13 } 14 @Test 15 @Transactional 16 @Rollback 17 public void testUpdateUser() { 18 //... 19 } 20 }
使用HQL,Hibernate Query Language,HQL的语法就是将原来sql语句中的字段名称换成对象与属性的名称。
1 @Override 2 public List<User> selectUserByName(String username) { 3 //getCurrentSession:当前session必须要有事物边界,且只能处理唯一的一个事务,当事务提交或者回滚后session自动失效 4 //openSession:每次都会打开一个新的session,加入每次使用多次,则获得的是不同session对象,使用完毕后我们需要手动调用close方法关闭session。 5 Session session = this.hibernateTemplate.getSessionFactory().getCurrentSession(); 6 Query queryTemp = session.createQuery("from User where username = :uname"); 7 Query query = queryTemp.setString("uname", username); 8 return queryTemp.list(); 9 }
QBC查询:query by criteria
1 public List<User> selectUserByNameUseCriteria(String username) { 2 Session session = this.hibernateTeamplate.getSessionFactory().getCurrentSession(); 3 Criteria criteria = session.createCriteria(User.class); 4 criteria.add(Restrictions.eq("username", username)); 5 return criteria.list(); 6 }
标签:username,Hibernate,SpringBoot,hibernateTemplate,session,User,整合,public,user 来源: https://www.cnblogs.com/guanghe/p/10974948.html