博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【spring框架】spring整合hibernate初步
阅读量:6982 次
发布时间:2019-06-27

本文共 3445 字,大约阅读时间需要 11 分钟。

spring与hibernate做整合的时候,首先我们要获得sessionFactory。
我们一般只需要操作一个sessionFactory,也就是一个"单例",这一点很适合交给spring来管理。
下面的代码演示如何创建一个JDBC DataSource 和Hibernate SessionFactory:
product.hbm.xml
hibernate.dialect=org.hibernate.dialect.HSQLDialect
org.springframework.orm.hibernate3.LocalSessionFactoryBean是spring提供的使用XML配置的sessionFactory,是不支持Annotation的。可以使用:
org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean让sessionFactory支持Annotation注解的形式来配置。
改写为(加了Properties的配置,Properties里面提供了hibernate的一些配置,如方言等属性):
product.hbm.xml
org.hibernate.dialect.MySQLDialect
true
可以看到hibernate的映射方式(mappingResources)是xml的,我们想注入一个使用Annnotation的注解实体类,可以这样改写:
cn.edu.hpu.model.user
org.hibernate.dialect.MySQLDialect
true
做一下实验要引入hibernate的jar包
User的Annotation注解实体类写法:
User.java:
package cn.edu.hpu.model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;@Entitypublic class User {	private int id;	private String name;	@Id	@GeneratedValue	public int getId() {		return id;	}	public void setId(int id) {		this.id = id;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	}
UserDaoImpl的save方法就要用SessionFactory进行数据库数据的add了:
package cn.edu.hpu.dao.Impl;import javax.annotation.Resource;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.springframework.stereotype.Component;import cn.edu.hpu.dao.UserDao;import cn.edu.hpu.model.User;@Component("u")public class UserDaoImpl implements UserDao{		private SessionFactory sessionFactory;		@Resource	public void setSessionFactory(SessionFactory sessionFactory) {		this.sessionFactory = sessionFactory;	}	public SessionFactory getSessionFactory() {		return sessionFactory;	}	public void save(User u) {		Session s=sessionFactory.openSession();		s.beginTransaction();		s.save(u);		s.getTransaction().commit();		System.out.println("add success!!");			}}
(中间出了一次错,java.lang.IllegalStateException: @Resource annotation requires a single-arg。问题出现在配置resource的时候出现错误!
解决方案!@resource配置在了get上(正确的是应该配置在set上))
测试类:
package cn.edu.hpu.service;import org.junit.Test;import org.springframework.beans.factory.BeanFactory;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import cn.edu.hpu.dao.UserDao;import cn.edu.hpu.model.User;public class UserServiceTest {		@Test	public void testAdd() throws Exception{		ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");				UserService userService=(UserService)ctx.getBean("userService");		System.out.println(userService.getClass());		User u=new User();		u.setName("jack");		userService.add(u);		ctx.destroy();	}}
测试成功,数据库储存了一条名为"jack"的字段。

以上是初步的整合,下一次总结是进一步整合。

转载请注明出处:

你可能感兴趣的文章
MaxCompute/DataWorks权限问题排查建议
查看>>
一文读懂一个URL请求的过程是怎样的
查看>>
Java新手入门必须掌握的30个基本概念
查看>>
Android UI进阶之旅8 Material Design之TabLayout
查看>>
快速实现地图迁移数据可视化
查看>>
学习OpenGL ES之渲染到纹理
查看>>
zookeeper学习04 zookeeper收尾+dubbo前瞻
查看>>
Android 7.0 SystemUI 之启动和状态栏和导航栏简介
查看>>
《讲个故事》为什么IP地址与Mac地址 缺一不可
查看>>
华山论剑之浅谈iOS的生产线 工厂模式
查看>>
浅谈javascript异步发展历程
查看>>
在vscode使用editorconfig的正确姿势
查看>>
当心!你的密码正在被手机中的声音泄露!
查看>>
你用过 PropTypes 的这些类型检查么?
查看>>
回顾2016,展望2017!
查看>>
聊聊JVM的年轻代
查看>>
Mybatis技术内幕:初始化之<typeHandlers>标签
查看>>
深入MVVM模型带你理解Vue.js的双向绑定
查看>>
Databinding 双向绑定详解
查看>>
前端项目如何管理
查看>>