通过注解配置Hibernate4.3.9+Spring4.1.6 整合成功

这几天在写hibernate加spring的整合,由于我是自学的,因此也走了很错弯路,我把整合的方法分享出来 希望能够帮助到大家

在整合之前,先下载hibernate的jar包和spring的jar包,这些jar包都可以从官方网站下载到最新的

有少许jar需要我们额外的去下载。


下面是项目的目录结构

[caption id="attachment_351" align="alignnone" width="344"]目录结构 目录结构[/caption]

IuserDao是一个接口:


package his.hib.dao;

public interface IUserDao {
	//查询用户
	public void queruy();
}
userDaoImpl是接口的实现类:



public class userDaoImpl implements IUserDao{


	private HibernateTemplate hibernateTemplate;
	private Session session;

	public void setSessionFactory(SessionFactory sessionFactory) {
		this.hibernateTemplate = new HibernateTemplate(sessionFactory);
	}


	public void queruy() {
		Iterator it = null;
		userloginpo ulp = null;
		this.session = this.hibernateTemplate.getSessionFactory().openSession();
		Query query = this.session.createQuery("from smsuser");
		List list = query.list();
		it = list.iterator();
		if(null != list){
			System.out.println("查询到有学生");
			while(it.hasNext()){
				ulp = (userloginpo) it.next();
				System.out.println("学生的姓名是:"+ulp.getUsername());
			}
		}else{
			System.out.println("没有任何学生");
		}
	}
}

上面的查询语句中,from smsuser  这个smsuser是注解中Entity中所注明的


userloginpo是一个持久化类:



/*
 * 申明当前类是一个持久化类
 * 申明当前类映射的表是smsuser
 */
@Entity(name = "smsuser")
public class userloginpo {
	private int userid;
	private String username;
	private String userpass;
	
	/*
	 * 主键
	 * 主键生成方式,sequence 查找数据库的序列生成
	 * 映射表中userid这个字段,该字段唯一并且不能为空
	 */
	@Id
	@GeneratedValue(strategy=GenerationType.SEQUENCE)
	@Column(name="userid",unique=true,nullable=false)
	public int getUserid() {
		return userid;
	}
	public void setUserid(int userid) {
		this.userid = userid;
	}
	
	//该字段唯一并且不能为空,长度为16
	@Column(name="username",unique=true,nullable=false,length=16)
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	
	@Column(name="userpass",nullable=false,length=16)
	public String getUserpass() {
		return userpass;
	}
	public void setUserpass(String userpass) {
		this.userpass = userpass;
	}
}

注解中的Entity 配置的是当前的类所映射的表名

demo是测试类



public class demo {
	public static void main(String[] args) {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		IUserDao iud = (IUserDao) context.getBean("userdaoimpl");
		iud.queruy();
	}

}


下面我们来看看配置文件中的信息:applicationContext.xml

首先我们需要引入数据库的连接信息

<!-- 加载数据库连接配置信息-->
   <bean id="DBconfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
	    <property name="locations">
	      <value>classpath:jdbc.properties</value>
	    </property>
  </bean>
引入了以后,我们就可以使用${jdbc.username}来获得数据库的用户名,而这个username是在文件jdbc.properties中定义了的。


下面我们配置dataource


	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
    	<property name="url" value="${jdbc.url}" />
    	<property name="driverClassName" value="${jdbc.driver}" />
  	</bean>
这里要注意的是,使用Hibernate4.3.9+Spring4.1.6整合,这里的class使用的是 org.springframework.jdbc.datasource.DriverManagerDataSource


而不是使用的  org.apache.commons.dbcp.BasicDataSource

我最开始就是使用这个 因此我还专门去下载了commons-dbcp2-2.1.jar这个jar包,当然如果您是使用的低版本来整合,就需要这个jar包,这个jar包,我已经分享给大家了,在本博客中

下面我们开始整合hibernate

配置sessionFactory

	<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<property name="dataSource">
			<!-- 连接数据源(注入dataSource) -->
			<ref bean="dataSource"/>
		</property>
		
		<property name="hibernateProperties">
			<props>
				<!-- 配置数据库方言 -->
				<prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
				<!-- sql语句显示 -->
				<prop key="hibernate.show_sql">true</prop>
			</props>
		</property>
		
		<!-- 配置ORM(XML文件)映射文件
		<property name="MappingResoures">
			<list>
				<value></value>
			</list>
		</property>
		-->
		<!-- 配置注解的实体类 -->
		<property name="annotatedClasses">
			<value>his.hib.po.userloginpo</value>
		</property>
	</bean>
这里需要说明的是 这里的sessionFactory你应该使用新的class,如果您参考网上的教程,大多设置的是


org.springframework.orm.hibernate3.LocalSessionFactoryBean  ,实体类的配置文件是xml

或者org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean  实体类采用的是注解

如果您使用的是hibernate4,那么这里class应该使用  org.springframework.orm.hibernate4.LocalSessionFactoryBean  注解或映射文件都可以使用他。


下面就是注入我们的sessionFactory

	<bean id="userdaoimpl" class="his.hib.dao.userDaoImpl">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>


自此,我们就配置完了。运行项目是可以成功运行的

关于jar包:

如果您使用的oracle数据库,请按照您的数据库版本来选择使用ojdbc.jar,比如我用的是oracle11g ,所以我用的jar是ojdbc6.jar

关于ojdbc6.jar ,大家可以看这里https://www.bugkong.com/archives/2015_06_334.html

Spring的jar,除了下载官方的jar,您还需要:

asm-3.3.1.jar

asm-commons-3.1.jar

asm-util-2.2.3.jar

aopalliance-1.0.jar

aspectjweaver.jar

commons-logging-1.2.jar

commons-pool2-2.4.1.jar

cglib-nodep-2.1_3.jar

关于hibernate的jar包,下载官方的jar包,可以将目录下的lib包全部导入。如果有问题,一般都是jar冲突,您可以查看我稍后提供的jar包资源进行对比。


本项目jar包下载地址:Hibernate4.3.9+Spring4.1.6 jar下载  密码:gboc


爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img