spring整合hibernate

1、hibernate使用注解。

daoImpl需要继承HibernateDaoSupport对象,针对给对象的getHibernateTemplate()进行hibernate操作。操作的语句是hql语句。

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="configProperties"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<value>jdbc.properties</value>
</list>
</property>
</bean> <bean id="propertyConfigure"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="properties" ref="configProperties" />
</bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="url" value="${jdbc.url}" />
</bean> <bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
destroy-method="destroy">
<property name="dataSource" ref="dataSource"></property>
<property name="annotatedPackages" value="classpath:com" /> 该package下的所有类都会当成实体类加载
<property name="annotatedClasses"> 配置实体类
<list>
<value>com.entity.Cat</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.dialect">${jdbc.dialect}</prop>
<prop key="hibernate.hbm2ddl.auto">saveorupdate</prop> 创建表结构
</props>
</property>
</bean>   <bean id="catDao" class="com.dao.CatDaoImpl">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

Cat.java

package com.entity;

import java.util.Date;

import javax.jdo.annotations.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType; @Entity
@Table(name="cat")
public class Cat {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY) //主键规则配置
private int id;
@Column(name="name")
private String name;
@Column(name="createDate")
@Temporal(value=TemporalType.TIMESTAMP) <!--Date类型在数据库里面设定 -->
private Date createDate; public void setName(String name) {
this.name = name;
} public String getName() {
return name;
} public void setId(int id) {
this.id = id;
} public int getId() {
return id;
} public void setCreateDate(Date createDate) {
this.createDate = createDate;
} public Date getCreateDate() {
return createDate;
} }

测试:

public static  void method1(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); CatDao catdao=context.getBean("catDao",CatDao.class);
/*Cat cat=new Cat();
cat.setName("喵咪");
cat.setCreateDate(new Date());
catdao.createCat(cat); List<Cat> cats=catdao.listCats();
for(int i=0;i<cats.size();i++){
System.out.println(cats.get(i).getId()+"\t"+cats.get(i).getName()+"\t"+cats.get(i).getCreateDate().toLocaleString());
}*/ Cat cat1=catdao.findCatByName("喵咪");
System.out.println(cat1.getId()+"\t"+cat1.getName()+"\t"+cat1.getCreateDate()); }

使用xml实现hibernate整合

1、sessionFactory的class由org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean变成了org.springframework.orm.hibernate3.LocalSessionFactoryBean

2、加入property名为mappingResources的注入实体类映射文件

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" destroy-method="destroy">
<property name="dataSource" ref="dataSource" />
<property name="mappingResources"><!-- 配置实体类 -->
<list>
<value>com/entity/Dog.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.dialect">${jdbc.dialect}</prop>
<prop key="hibernate.hbm2ddl.auto">saveorupdate</prop><!-- 创建表结构
--></props>
</property>
</bean> <bean id="dogDao" class="com.dao.DogDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping>
<class name="com.entity.Dog" table="Dog">
<id name="id" type="int">
<column name="id"></column>
<generator class="identity" />
</id>
<property name="name" type="string">
<column name="name"></column>
</property>
<property name="age" type="int">
<column name="age"></column>
</property>
</class>
</hibernate-mapping> package com.entity; public class Dog {
private int id;
private String name;
private int age;
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;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} }
public  static void method2(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
DogDao dogdao=context.getBean("dogDao",DogDao.class); /*Dog dog=new Dog();
dog.setName("旺旺");
dog.setAge(12);
dogdao.createDog(dog);*/ List<Dog> dogs=dogdao.findAll();
System.out.println(dogs.get(0).getName()); } package com.dao; import java.util.List; import com.entity.Dog; public interface DogDao {
public void createDog(Dog dog);
public List<Dog> findAll();
public void updateDog(Dog dog);
public Dog findDogByName(String name);
} package com.dao; import java.util.List; import org.hibernate.Session;
import org.hibernate.Transaction;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.entity.Dog; public class DogDaoImpl extends HibernateDaoSupport implements DogDao{ public void createDog(Dog dog) {
// Session session=this.getSession();
//Transaction tx=session.beginTransaction();
// try{ /* 我现在要将事物配置在applicationContext中 */
this.getHibernateTemplate().save(dog);
// tx.commit();}
// catch(Exception e){
// tx.rollback();
// }
} @SuppressWarnings("unchecked")
public List<Dog> findAll() { List<Dog> dogs=this.getHibernateTemplate().find("from Dog");
return dogs;
} public void updateDog(Dog dog) {
// Session session=this.getSession();
// Transaction tx=session.beginTransaction();
// try{
this.getHibernateTemplate().update(dog);
// tx.commit();}
// catch(Exception e){
// tx.rollback();
// } } public Session createSession(){
Session session=this.getSession();
if(session==null||!session.isOpen()){
session=getHibernateTemplate().getSessionFactory().openSession();
}
return session;
}
public void closeSession(){
this.getSession().close();
} @SuppressWarnings("unchecked")
public Dog findDogByName(String name) { List<Dog> dogs=this.getHibernateTemplate().find("select d from Dog d where name=?",name );
if(dogs.size()>0){
Dog d=dogs.get(1);
return d;
}
return null;
} }

整合后使用hibernate事务管理

另外一半使用service类,方便aop

package com.service;

import java.util.List;

import com.entity.Dog;

public interface DogService  {
public void createDog(Dog dog);
public List<Dog> findAll();
public void updateDog(Dog dog);
public Dog findDogByName(String name); } package com.service; import java.util.List; import com.dao.DogDao;
import com.entity.Dog; public class DogServiceImpl implements DogService{
private DogDao dogDao; public void setDogDao(DogDao dogDao) {
this.dogDao = dogDao;
} public DogDao getDogDao() {
return dogDao;
} public void createDog(Dog dog) {
dogDao.createDog(dog);
} public List<Dog> findAll() { return dogDao.findAll();
} public Dog findDogByName(String name) {
return dogDao.findDogByName(name);
} public void updateDog(Dog dog) {
dogDao.updateDog(dog);
} }
<bean id="hibernateTransactionAttributeSource" class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource"> <!-- 事务管理规则 -->
<property name="properties"> <!-- 具备事务管理的方法名 -->
<props>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="create*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean> <bean id="hibernateTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <!-- hibernate 事务管理器 -->
<property name="sessionFactory" ref="sessionFactory"></property>
</bean> <bean id="dogService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="hibernateTransactionManager"> </property>
<property name="target"> <!-- 被管理的对象,匿名Bean -->
<bean class="com.service.DogServiceImpl">
<property name="dogDao" ref="dogDao"></property>
</bean>
</property>
<property name="transactionAttributeSource" ref="hibernateTransactionAttributeSource" /> <!-- 设置事务管理规则 -->
</bean>
public static void method3(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
DogService dogservice=context.getBean("dogService",DogService.class); Dog d=new Dog();
d.setName("旺仔");
d.setAge(13); dogservice.createDog(d);
}

spring的orm模块的更多相关文章

  1. Spring之ORM模块

    ORM模块对Hibernate.JDO.TopLinkiBatis等ORM框架提供支持 ORM模块依赖于dom4j.jar.antlr.jar等包 在Spring里,Hibernate的资源要交给Sp ...

  2. 1.Spring——七大主要模块

    Spring有七大功能模块,分别是Spring Core,AOP,ORM,DAO,MVC,WEB,Content. 下面分别简单介绍: 1.Spring Core Core模块是Spring的核心类库 ...

  3. spring的核心模块有哪些?

    Spring的七个核心模块,供大家参考,具体内容如下 1.Spring core:核心容器 核心容器提供spring框架的基本功能.Spring以bean的方式组织和管理Java应用中的各个组件及其关 ...

  4. Spring之WEB模块

    Spring的WEB模块用于整合Web框架,例如Struts 1.Struts 2.JSF等 整合Struts 1 继承方式 Spring框架提供了ActionSupport类支持Struts 1的A ...

  5. [02] Spring主要功能模块概述

    1.Spring主要功能模块   1.1 Core Container Spring的核心容器模块,其中包括: Beans Core Context SpEL Beans和Core模块,是框架的基础部 ...

  6. 一头扎进Spring之---------Spring七大核心模块

    Spring七大核心模块 核心容器(Spring Core) 核心容器提供Spring框架的基本功能.Spring以bean的方式组织和管理Java应用中的各个组件及其关系.Spring使用BeanF ...

  7. Spring中各个模块

    Spring中个模块介绍 核心模块 ​ 提供了对Bean的配置.管理.创建等以及IOC/DI.如果只需要提供IOC/DI功能,只需要引入Beans和Core两个jar包 Core 包含Spring框架 ...

  8. Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->Spring Framework中的spring web MVC模块

    spring framework中的spring web MVC模块 1.概述 spring web mvc是spring框架中的一个模块 spring web mvc实现了web的MVC架构模式,可 ...

  9. Spring第七篇【Spring的JDBC模块】

    前言 上一篇Spring博文主要讲解了如何使用Spring来实现AOP编程,本博文主要讲解Spring的对JDBC的支持- 对于JDBC而言,我们肯定不会陌生,我们在初学的时候肯定写过非常非常多的JD ...

随机推荐

  1. BZOJ5281: [Usaco2018 Open]Talent Show 01分数规划+01背包

    Description FarmerJohn要带着他的N头奶牛,方便起见编号为1…N,到农业展览会上去,参加每年的达牛秀!他的第i头奶牛重 量为wi,才艺水平为ti,两者都是整数.在到达时,Farme ...

  2. 【TCP/IP详解 卷一:协议】TCP的小结

    前言:TCP学习的综述 在学习TCP/IP协议的大头:TCP协议 的过程中,遇到了很多机制和知识点,详解中更是用了足足8章的内容介绍它. TCP协议作为 应用层 和 网络层 中间的 传输层协议,既要为 ...

  3. python 获取指定文件夹的大小

    def getdirsize(dirpath): size = for root, dirs, files in os.walk(dirpath): size += sum([getsize(join ...

  4. Python day20正则表达式和re方法

    元字符6个函数以及几个元字符1.'.'通配符2.'^'以什么开头3.'$'以什么结尾4.'*'紧挨着的字符0~∞次5.'+'紧挨着的字符1~∞次6.'?'紧挨的字符0次或1次7.'{}' {0,}== ...

  5. [原][OSG]整理osg渲染一帧的流程

    参考:最长的一帧 先看下frame void ViewerBase::frame(double simulationTime) { advance(simulationTime);//记录仿真时间,帧 ...

  6. 牛客练习赛7 E 珂朵莉的数列

    珂朵莉的数列 思路: 树状数组+高精度 离散化不知道哪里写错了,一直wa,最后用二分写的离散化 哪位路过大神可以帮我看看原来的那个离散化错在哪里啊 通过代码: import java.math.Big ...

  7. stats.js随时查看fps

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. Unity 中 ContextMenu 的用法

    在自定义脚本中的方法前加入  [ContextMenu("Execute")]  标签,然后将脚本挂载到对象上,可以再编辑模式下执行标记的方法: 自定义脚本如下: using Sy ...

  9. 百度echart如何动态生成图表

    百度echart如何动态生成图表 一.总结 一句话总结: clear hideloading setOption 主要是下面三行代码: myChart.clear(); //清空画布myChart.h ...

  10. 《图解Http》 10,11章:构建Web的技术, Web的攻击技术

    10.2动态HTML 通过调用客户端脚本语言js,实现对web页面的动态改造.利用DOM文档对象模型,指定想发生变化的元素. 10.22 更容易控制的DOM 使用DOM可以将HTML内的元素当作对象操 ...