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

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

spring2.5+hibernate3.3整合:

jar包:

hibsrnate核心包下:

hibernate3.jar
lib/required/*.jar
lib/optional/ehcache-1.2.3.jar
hibernate注解包下的lib/test/slf4j12.jar

spring安装包下的
dist/spring.jar
dist/modules/spring-webmvc-struts.jar
lib/jakarta-commons/commons-logging.jar
lib/aspectj/aspectjweaver.jar/aspectjrt.jar
lib/cglib/cglib-nodep_2.1.3.jar
lib/j2ee/common-annotations.jar
lib/log4j/log4j-1.2.15.jar

 

第一步

导入jar包,spring有关包,hibernate有关包,数据库有关包。

 

第二步

编写beans.xml配置文件

装载数据源:

注册sessionFactory:

  
cn/itcast/domain/Person.hbm.xml
hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.hbm2ddl.auto=update hibernate.show_sql=true
sessionFactory中mappingResources加载映射文件,hibernateProperties属性配置hibernate一些配置属性,dataSource属性配置数据源

 

如果spring需要使用二级缓存的话,将二级缓存的cfg.xml中的信息也放在hibernateProperties的value属性中。

 

springframework还提供了OpenSessionInView过滤器,我们可以自行配置用于hibernate开发。例子:

openSessionInView
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
openSessionInView
/*

 

 

注册事务管理器(使用的是spring的hibernate事务管理器):

 

beans.xml全代码:

cn/itcast/domain/Person.hbm.xml
hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.hbm2ddl.auto=update hibernate.show_sql=true
View Code

 

剩下的代码和普通的hibernate开发,普通的spring开发差不多了。

 

使用sessionFactory操作数据库:

@Transactional @Service("personService")public class PersonServiceBean implements PersonService {        @Resource(name="sessionFactory")    private SessionFactory sessionFactory;        public void save(Person person){        //spring会自动帮我们管理session        sessionFactory.getCurrentSession().persist(person);    }

注意:

  使用sessionFactory操作数据库,sessionFactory的getCurrentSession()方法得到Session,而不是使用openSession()方法,因为spring自动帮我们管理session。

  操作方法可以使用persisit()和merge方法替代save()和update(),表现更好点罢了!

 

至于hibernate映射文件等其他和前面没什么区别。

 

完整代码:

  

package cn.itcast.domain;public class Person {    private Integer id;    private String name;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }        public Person() {        super();    }        public Person(Integer id, String name) {        super();        this.id = id;        this.name = name;    }    public Person( String name) {        super();        this.name = name;    }        }
Person.java
Person.hbm.xml
package cn.itcast.service;import java.util.List;import cn.itcast.domain.Person;public interface PersonService {    public abstract void save(Person person);    public abstract void update(Person person);    public abstract Person getPerson(Integer personId);    public abstract void delete(Integer personId);    public abstract List
getPersons();}
PersonService.java
package cn.itcast.service.impl;import java.util.List;import javax.annotation.Resource;import org.hibernate.SessionFactory;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Propagation;import org.springframework.transaction.annotation.Transactional;import cn.itcast.domain.Person;import cn.itcast.service.PersonService;@Transactional @Service("personService")public class PersonServiceBean implements PersonService {        @Resource(name="sessionFactory")    private SessionFactory sessionFactory;        public void save(Person person){        //spring会自动帮我们管理session        sessionFactory.getCurrentSession().persist(person);    }        public void update(Person person){        sessionFactory.getCurrentSession().merge(person);    }        @Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true)    public Person getPerson(Integer personId){        return (Person) sessionFactory.getCurrentSession().get(Person.class, personId);    }        public void delete(Integer personId){        sessionFactory.getCurrentSession().delete(                sessionFactory.getCurrentSession().load(Person.class, personId));    }        @SuppressWarnings("unchecked") @Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true)    public List
getPersons(){ return sessionFactory.getCurrentSession().createQuery("from Person").list(); }}
PersonServiceBean
package junit.test;import java.util.List;import org.junit.BeforeClass;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import cn.itcast.domain.Person;import cn.itcast.service.PersonService;public class PersonServiceTest {    private static PersonService personService;    @BeforeClass    public static void setUpBeforeClass() throws Exception {        try{            ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");            personService=(PersonService) ctx.getBean("personService");        }catch(RuntimeException e){            e.printStackTrace();        }    }        @Test public void testSave(){        personService.save(new Person("小张"));    }    @Test public void testDetete(){        personService.delete(1);    }    @Test public void testUpdate(){        Person person=personService.getPerson(1);        person.setName("小丽");        personService.update(person);    }    @Test public void testGetPerson(){        Person person=personService.getPerson(1);        System.out.println(person.getName());    }    @Test public void testGetPersons(){        List
persons=personService.getPersons(); for(Person p:persons){ System.out.println(p.getName()+"--"+p.getId()); } }}
PersonServiceTest
cn/itcast/domain/Person.hbm.xml
hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.hbm2ddl.auto=update hibernate.show_sql=true
beans.xml
jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc\:mysql\://localhost\:3306/customers?useUnicode\=true&characterEncoding\=UTF-8jdbc.username=guodaxiajdbc.password=961012gzjdbc.maxPoolSize=100jdbc.minPoolSize=10jdbc.initialPoolSize=20jdbc.maxIdleTime=600jdbc.acquireIncrement=5
jdbc.properties

 

jar:

 

jar不敢保证,但是其他配置大概就是这样了。

 

转载地址:http://mobvl.baihongyu.com/

你可能感兴趣的文章
open files
查看>>
MVC ——RouteTable.Routes的使用
查看>>
玩转X-CTR100 | STM32F4 l X-Assistant串口助手控制功能
查看>>
TCP/IP学习笔记1--概述,分组交换协议
查看>>
深入百度外链工具引发的思考
查看>>
DataBindings 与 INotifyPropertyChanged 实现自动刷新 WinForm 界面
查看>>
VB中数据占几个字节
查看>>
交通压力主动感知系统
查看>>
对于技术服务和业务的思考
查看>>
数据链路层
查看>>
Memcached 客户端使用
查看>>
【193】◀▶ PowerShell 官方资料索引
查看>>
linux 学习
查看>>
JDK安装和环境变量配置
查看>>
GO环境配置
查看>>
Android ocr识别文字介绍(文字识别)
查看>>
hdoj 2199 Can you solve this equation? 【二分枚举】
查看>>
2014互联网百强企业出炉 八爪鱼排名99
查看>>
springboot整合最新版dubbo以及dubbo-admin的安装
查看>>
dubbo的负载均衡策略和容错策略
查看>>