38.Spring-spring和hibernate整合.md
目录
1.定义各种类对象
package per.liyue.sh.demo1;
/**
* 此类对应数据库表person * 属性和表字段对应关系 * private int personId:person_id private String personName:person_name private String personIdNumber:person_id_number
*/
public class Person
{
private int personId;
public int getPersonId()
{
return personId;
}
public void setPersonId(int personId)
{
this.personId = personId;
}
public String getPersonName()
{
return personName;
}
public void setPersonName(String personName)
{
this.personName = personName;
}
public String getPersonIdNumber()
{
return personIdNumber;
}
public void setPersonIdNumber(String personIdNumber)
{
this.personIdNumber = personIdNumber;
}
private String personName;
private String personIdNumber;
@Override
public String toString()
{
return "身份信息: 名字:" + personName + " 号码:" + personIdNumber;
}
}
package per.liyue.sh.demo1;
import org.hibernate.SessionFactory;
/**
* Person类的Dao类
*/
public class PersonDao
{ //IOC
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory)
{
this.sessionFactory = sessionFactory;
}
public void savePerson(Person person)
{
sessionFactory.getCurrentSession().save(person);
}
}
package per.liyue.sh.demo1;
/**
* Person类的Service类
*/
public class PersonService
{ //IOC
private PersonDao personDao;
public void setPersonDao(PersonDao personDao)
{
this.personDao = personDao;
}
public void save(Person person)
{
personDao.savePerson(person);
}
}
2.创建Hibernate配置文件
注意:有多种方式配置可以实现Spring和Hibernate的融合,但是这里只用Hibernate完全托管于Spring的方式,所以,不需要配置hibernate.cfg.xml文件。只需要配置表对应类的HIbernate配置文件既*.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><!-- Generated Nov 9, 2006 6:27:53 PM by Hibernate Tools 3.2.0.beta7 --><!-- package:类对象所在的包 auto-import:表面是自动导入包,如果设定为false,则需要在执行hql语句时候将包名写清楚: Demo:在true时候可以写为session.createQuery("from Employee").list(); 在false时候必须写为session.createQuery("from per.liyue.code.hibernatehello.Employee").list(); -->
<hibernate-mapping package="per.liyue.sh.demo1"
auto-import="true">
<!-- 类与表的对应
name:类名称
table:表名称 -->
<class name="Person" table="person">
<!-- 主键 注意和类成员和表列名称的一致对应 -->
<id name="personId"
column="person_id">
<!-- 主键的生成策略:
1.identity 自增长(mysql,db2)
2.sequence 自增长(序列), oracle中自增长是以序列方法实现
3.native 自增长【会根据底层数据库自增长的方式选择identity或sequence】
如果是mysql数据库, 采用的自增长方式是identity
如果是oracle数据库, 使用sequence序列的方式实现自增长
4.increment 自增长(会有并发访问的问题,一般在服务器集群环境使用会存在问题。)
5.assigned 指定主键生成策略为手动指定主键的值
6.uuid 指定uuid随机生成的唯一的值
7.foreign (外键的方式, one-to-one讲)
-->
<generator class="native"/>
</id>
<!-- 非主键,同样一一映射
name:类的属性名称
column:表的字段名称
length:设定字段的长度,默认为255
type:设定映射表的类型,如果不写匹配类对应属性的类型
java类型:必须带完整包名:java.lang.String
hibernate类型:全部都是小写
-->
<property name="personName" column="person_name"></property>
<property name="personIdNumber" column="person_id_name"></property>
</class>
</hibernate-mapping>
3.配置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"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!--1.Hibernate配置--> <!--a.数据源-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql:///hi"></property>
<property name="user" value="root"></property>
<property name="password" value="root"></property>
</bean> <!--b.SessionFactory Spring框架负责SessionFactory的维护,所以不需要hibernate.cfg.xml -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <!--i.数据源-->
<property name="dataSource" ref="dataSource"></property> <!--ii.基本配置:方言等-->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property> <!--iii.映射配置-->
<property name="mappingLocations">
<list>
<value>classpath:per/liyue/sh/demo1/*.hbm.xml</value>
</list>
</property>
</bean> <!--c.事务配置--> <!--i.事务管理器-->
<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean> <!--ii.事务增强管理-->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="save*"/>
</tx:attributes>
</tx:advice> <!--iii.aop切面-->
<aop:aspectj-autoproxy proxy-target-class="false"></aop:aspectj-autoproxy>
<aop:config>
<aop:pointcut id="pt" expression="execution(* per.liyue.sh.demo1.*.*(..))"></aop:pointcut>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pt"></aop:advisor>
</aop:config> <!--2.IOC配置-->
<bean id="person" class="per.liyue.sh.demo1.Person"></bean>
<bean id="personDao" class="per.liyue.sh.demo1.PersonDao">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="personService" class="per.liyue.sh.demo1.PersonService">
<property name="personDao" ref="personDao"></property>
</bean>
</beans>
4.注意事项
- 在配置applicationContext的时候,事务配置中要注意,属性中注入的是SessionFactory。
- 配置项较多,配置的时候一定注意检查,否则容易出错
38.Spring-spring和hibernate整合.md的更多相关文章
- Java Web开发之Spring | SpringMvc | Mybatis | Hibernate整合、配置、使用
1.Spring与Mybatis整合 web.xml: <?xml version="1.0" encoding="UTF-8"?> <web ...
- 框架篇:Spring+SpringMVC+hibernate整合开发
前言: 最近闲的蛋疼,搭个框架写成博客记录下来,拉通一下之前所学知识,顺带装一下逼. 话不多说,我们直接步入正题. 准备工作: 1/ IntelliJIDEA的安装配置:jdk/tomcat等..(本 ...
- hibernate整合进spring后的事务处理
单独使用hibernate处理事务 本来只用hibernate开发,从而可以省了DAO层实现数据库访问和跨数据库,也可以对代码进行更好的封装,当我们web中单独使用hibernate时,我们需要单独的 ...
- 轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)
轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)(国家级奖项获奖作品升级版,四版累计印刷27次发行量超10万册的轻量级Jav ...
- Spring + Spring MVC+Hibernate框架整合详细配置
来源于:http://www.jianshu.com/p/8e2f92d0838c 具体配置参数: Spring: spring-framework-4.2.2Hibernate: hibernate ...
- java框架篇---spring hibernate整合
在会使用hibernate 和spring框架后 两个框架的整合就变的相当容易了, 为什么要整合Hibernate?1.使用Spring的IOC功能管理SessionFactory对象 LocalSe ...
- Struts+Spring+Hibernate整合入门详解
Java 5.0 Struts 2.0.9 Spring 2.0.6 Hibernate 3.2.4 作者: Liu Liu 转载请注明出处 基本概念和典型实用例子. 一.基本概念 St ...
- Spring与Hibernate整合,实现Hibernate事务管理
1.所需的jar包 连接池/数据库驱动包 Hibernate相关jar Spring 核心包(5个) Spring aop 包(4个) spring-orm-3.2.5.RELEASE.jar ...
- spring+hibernate整合:报错org.hibernate.HibernateException: No Session found for current thread
spring+hibernate整合:报错信息如下 org.hibernate.HibernateException: No Session found for current thread at o ...
随机推荐
- Redis学习第六课:Redis ZSet类型及操作
Sorted set是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素时候可以指定,每次指定后,zset会自动重新按新的值调整顺序.可以理解为有两列字段的数据表,一列 ...
- 神州数码多区域OSPF配置
实验要求:掌握多区域OSPF配置 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface s0/1 进入端口 ip address ...
- supervisord.conf
; Sample supervisor config file.;; For more information on the config file, please see:; http://supe ...
- Gym - 100796I:Shell Game(圆台的最大内接球半径)
pro:如题.给定上圆半径r,下圆半径R,高度h.问最大内接球半径. sol:由对称性,我们放到二维来看,即给这么一个梯形,问最大内接圆半径. 证明:如果是一个三角形的内接圆C,他内切于三边. 现在这 ...
- Docker跨主机link
user case:一个app container向一个oracle container跨主机传输数据. 思路一:将oracle对外暴露端口,将hostA的IP添加入app上/ect/hosts上.这 ...
- BEAM188和LINK180简单实例
简介 一开始想做一个绳索单元悬挂重物的仿真,其实想法很简单,但是在实现过程中却出现了很大的问题,纠结了很久,初步归结为:绳索单元在垂直其单元方向上受力,会导致其产生很大的变形,从而导致其不收敛.因此专 ...
- 一 Struts框架(上)
Struts2 是基于MVC的WEB框架 经过六年多的发展,Struts1已经成为了一个高度成熟的框架,不管是稳定性还是可靠性都得到了广泛的证明.市场占有率超过20%,拥有丰富的开发人群,几乎已经成为 ...
- C166 -MDH
Writing a C logic for moving MDH register contents after MUL instruction http://www.keil.com/forum ...
- DNS主从配置详解
实验环境 主服务器:192.168.138.200 从服务器:192.168.138.201 bind安装 安装很简单,执行以下命令即可: yum install -y bind 先看一下bind的版 ...
- edit this cookie chrome插件 (HttpAnalyzerStdV3 获取Cookie 后,再用edit this cookie添加cookie)
插件下载地址及安装方法:http://www.bkill.com/download/154494.html 博客提供下载地址:https://files.cnblogs.com/files/Fooo/ ...