这几天在写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/天,具体规则查看活动详情