Spring 整合 Hibernate 注解方式

在上一篇文章中,我们创建一个简单的Maven项目结构,并展示如何使用 Spring 和 Hibernate 框架在 MySQL数据库进行数据处理工作(插入,选择,更新和删除)。在本文章中,还是学习如何使用 Spring 和 Hibernate 做同样的事情,这一次我们使用注解方式。

1. Article模型用注解来存储库存数据。

@Entity
@Table(name = "article")
public class Article {
	private int id;
	private String title;
	private String content;
	
	public Article() {
		super();
	}

	public Article(int id, String title, String content) {
		super();
		this.id = id;
		this.title = title;
		this.content = content;
	}
	
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "id", unique = true, nullable = false)
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	@Column(name = "title", nullable = false, length = 100)
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	
	@Column(name = "content", nullable = false, length = 100)
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}

	@Override
	public String toString() {
		return "Article [id=" + id + ", title=" + title + ", content="
				+ content + "]";
	}
}

2. Article数据访问对象

Article DAO接口和实现。在上一篇文章中,DAO类是直接扩展“HibernateDaoSupport“。但注释方式不可能做到这一点,因为没有办法从DAO类会话到工厂bean自动装配。解决方法是创建一个方法自动装配会话工厂。如下:

@Transactional
@Repository("articleDao")
public class ArticleDaoImpl extends HibernateDaoSupport implements ArticleDao {
	/**
	 * 由于使用的是spring的annotation注入,HibernateDaoSupport不能注入sessionFactiry和hibernateTemplemet。
	 */
	@Resource
	public void setMySessionFactory(SessionFactory sessionFactory){  
		super.setSessionFactory(sessionFactory);  
	}

	public void insert(Article article) {
		getHibernateTemplate().save(article);
	}

	public void update(Article article) {
		getHibernateTemplate().update(article);
	}

	public void delete(Article article) {
		getHibernateTemplate().delete(article);
	}

	public List
getArticles() { //from 类名(Article),注意大小写 return (List
) getHibernateTemplate().find("from Article"); } public Article getArticleById(int id) { List articles = getHibernateTemplate().find("from Article where id = ?", id); return (Article) articles.get(0); } }

3. Article业务对象

@Service("articleService")
public class ArticleServiceImpl implements ArticleService {
	
	private ArticleDao articleDao;
	@Autowired
	public void setArticleDao(ArticleDao articleDao) {
		this.articleDao = articleDao;
	}
	public void save(Article article) {
		articleDao.insert(article);
	}
	public void update(Article article) {
		articleDao.update(article);
	}
	public void remove(Article article) {
		articleDao.delete(article);
	}
	public List
findArticles() { return articleDao.getArticles(); } public Article findArticleById(int id) { return articleDao.getArticleById(id); } }

4. 资源配置,修改Hibernate.cfg.xml,Spring-Bean.xml和Spring-Datasource.xml如下:


    
        
        
        
        
        org.hibernate.dialect.MySQL5Dialect
        true
        update
        
        
        
    


	
	


	
		
			database.properties
		
	

	
		
		
		
		
	

	
		
		
		
		
	

	
	
		
	
	

5. 运行测试类,结果和上一篇文章一样

代码下载链接: https://pan.baidu.com/s/1RhusIDwlUVW-r9NvF-9Mnw 密码: k3yn

你可能感兴趣的:(Spring,Hibernate)