整合spring4.0和hibernate3.0时出现的bug

  • 惭愧啊 说是bug其实是由自己的粗心造成的,折腾了一下午,掩面而泣

spring 整合hibernate有两种方式

    1. 有hibernate.cfg.xml
    1. 无hibernate.cfg.xml

1 有hibernate.cfg.xml

  • 1.1 创建表
create table t_user(
   id  int primary key auto_increment,
   username varchar(50),
 password varchar(32),
  age int 
);
  • 1.2 PO类
  • 代码结构
代码结构
package: com.itheima.domain
                 User.java
                 User.hbm.xml
  • java bean
public class User {
    private Integer id;
    private String username;
    private String password;
    private Integer age;
...........省略setter和getter
}

  • 1.3 映射文件(很重要)!!!
    一定要注意细节,在同时配置多个po 类时, 在拷贝的过程中非常容易出错(一对多或者多对一的引用时容易忘记修改包名)!!!



    
        
            
        
        
        
        
    


  • 1.4 hibernate.cfg.xml


      com.mysql.jdbc.Driver
      jdbc:mysql:///demoDB
 root
 123
        
        org.hibernate.dialect.MySQL5Dialect
        
        
        true
        true
        
        
        update
        
        
        thread
        
        
        

  • 1.5 dao和service
public class UserDaoImpl implements UserDao {
    //使用hibernateTemplate操作数据库
    //需要spring注入模板
    private HibernateTemplate hibernateTemplate;
    public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
        this.hibernateTemplate = hibernateTemplate;
    }

    @Override
    public void save(User user) {
        this.hibernateTemplate.save(user);
    }

}

public class UserServiceImpl implements UserService {

    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    @Override
    public void register(User user) {
        userDao.save(user);
    }

}

  • 1.6 applicationContext.xml



    
        
    


    
    
    
        
    

    
        
    
    
    
    
        
    



5.2.6.4 事务管理

    
    
        
    
    
    
        
            
        
    
    
    
        
    



2 没有hibernte.cfg.xml

  • 不使用hibernate.cfg.xml 配置文件需要注意,在使用.cfg.xml文件时, dao层使用hibernateTmeplate模板操作数据库,不使用cfg.xml时,dao层继承hibernateDaoSupport可以通过this.getHibernateTemplate()
  • 删除hibernate.cfg.xml文件,但需要保存文件内容,将其配置spring中
  • 修改dao层,继承HibernateDaoSupport
  • 2.1 需改spring ,配置sessionFactory

    
    
        
        
        
        
    
    
    
    
        
        
            
                org.hibernate.dialect.MySQL5Dialect
                true
                true
                update
                thread
            
        
        
    


  • 2.2 修改dao使用HibernateDaoSupport
  • 继承HibernateDaoSupport
// 底层需要SessionFactory,自动创建HibernateTemplate模板
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {

    @Override
    public void save(User user) {
        this.getHibernateTemplate().save(user);
    }

}

  • spring 删除模板, 给dao注入sessionFactory

    
        
    

Attention please : 在配置多个po类的时候, 习惯配置好一个ClassName.hbm.xml后通过拷贝配置其他的PO类, 在这个过程中一定要注意的name属性, 一定要修改!!!!!!

你可能感兴趣的:(整合spring4.0和hibernate3.0时出现的bug)