目录

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.注意事项

  1. 在配置applicationContext的时候,事务配置中要注意,属性中注入的是SessionFactory。
  2. 配置项较多,配置的时候一定注意检查,否则容易出错

38.Spring-spring和hibernate整合.md的更多相关文章

  1. Java Web开发之Spring | SpringMvc | Mybatis | Hibernate整合、配置、使用

    1.Spring与Mybatis整合 web.xml: <?xml version="1.0" encoding="UTF-8"?> <web ...

  2. 框架篇:Spring+SpringMVC+hibernate整合开发

    前言: 最近闲的蛋疼,搭个框架写成博客记录下来,拉通一下之前所学知识,顺带装一下逼. 话不多说,我们直接步入正题. 准备工作: 1/ IntelliJIDEA的安装配置:jdk/tomcat等..(本 ...

  3. hibernate整合进spring后的事务处理

    单独使用hibernate处理事务 本来只用hibernate开发,从而可以省了DAO层实现数据库访问和跨数据库,也可以对代码进行更好的封装,当我们web中单独使用hibernate时,我们需要单独的 ...

  4. 轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)

    轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)(国家级奖项获奖作品升级版,四版累计印刷27次发行量超10万册的轻量级Jav ...

  5. Spring + Spring MVC+Hibernate框架整合详细配置

    来源于:http://www.jianshu.com/p/8e2f92d0838c 具体配置参数: Spring: spring-framework-4.2.2Hibernate: hibernate ...

  6. java框架篇---spring hibernate整合

    在会使用hibernate 和spring框架后 两个框架的整合就变的相当容易了, 为什么要整合Hibernate?1.使用Spring的IOC功能管理SessionFactory对象 LocalSe ...

  7. Struts+Spring+Hibernate整合入门详解

    Java 5.0 Struts 2.0.9 Spring 2.0.6 Hibernate 3.2.4 作者:  Liu Liu 转载请注明出处 基本概念和典型实用例子. 一.基本概念       St ...

  8. Spring与Hibernate整合,实现Hibernate事务管理

    1.所需的jar包 连接池/数据库驱动包 Hibernate相关jar Spring 核心包(5个) Spring aop 包(4个) spring-orm-3.2.5.RELEASE.jar     ...

  9. spring+hibernate整合:报错org.hibernate.HibernateException: No Session found for current thread

    spring+hibernate整合:报错信息如下 org.hibernate.HibernateException: No Session found for current thread at o ...

随机推荐

  1. 13--Python入门--文件读写--CSV&Excel文件

    EXCEL文件 import pandas as pd excel=pd.read_excel('read_excel.xlsx') print(excel) CSV文件 import pandas ...

  2. 关于WebAPI跨域踩到的一点坑

    最近在尝试前后端分离的WebAPI+AngularJS方案,在率先处理授权的时候,踩到了一点WebAPI跨域的坑,其实严格意义上来说也不算是坑吧,只是我自己对WebAPI不熟悉而已,这里我与大家分享一 ...

  3. js barcode 打印

    新建 html <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset=&quo ...

  4. 学习笔记TF040:多GPU并行

    TensorFlow并行,模型并行,数据并行.模型并行根据不同模型设计不同并行方式,模型不同计算节点放在不同硬伯上资源运算.数据并行,比较通用简便实现大规模并行方式,同时使用多个硬件资源计算不同bat ...

  5. maven安装操作

    首先检查我们的系统是否有安装JDK,检验方法:1.首先在我们的“文件资源管理器”地址栏输入cmd.在“文件资源管理器”地址栏输入cmd命令后,按下键盘上的“Enter”键,进入黑科技模式.在我们的“D ...

  6. LeetCode - X of a Kind in a Deck of Cards

    In a deck of cards, each card has an integer written on it. Return true if and only if you can choos ...

  7. goaccess geoip 测试

      goaccess 是一个很不错的日志实时统计分析工具,我们可以用来方便的分析nginx apcahe iis 等的日志信息 对于geoip 的支持是需要源码编译的,所以基于官方docker 镜像添 ...

  8. awk命令过滤tomcat的访日日志中IP地址

    1. 命令如下 批量过滤日志文件,grep -v是要排除10网段开头的IP地址 sort会自动按ip排序 uniq -c去重并计数 sort -n 按数值从小到大排序 [root@linux-node ...

  9. Zookeeper的下载、安装和启动

    一.下载Zookeeper 版本 zookeeper-3.4.13 下载地址:https://archive.apache.org/dist/zookeeper/ 解压后放在/usr/local/zo ...

  10. centos 7.5安装docker-CE 18

    1.查看系统版本 cat /etc/centos-release CentOS Linux release 7.5.1804 (Core) uname -r 3.10.0-862.el7.x86_64 ...