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