sh_Spring整合Hibernate
分别介绍了Sping和Hibernate,以下是将它们整合到一块去了。
一、Hibernate内容
1.创建PO类。
package cn.tgb.domain; //User实体
public class User {
private Integer id;
private String username;
private String password; public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
2.编写User.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping>
<class name="cn.tgb.domain.User" table="t_user">
<id name="id">
<generator class="native"></generator>
</id>
<property name="username"></property>
<property name="password"></property>
</class>
</hibernate-mapping>
3.编写Hibernate.cfg.xml
<? xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration>
<session-factory>
<!-- #1核心四项 -->
<property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="hibernate.connection.url">jdbc:sqlserver://localhost:1433; DatabaseName=hibernate02</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password">123456</property> <!-- #2设置方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property> <!-- #3 sql -->
<!-- * 输出sql-->
<property name="hibernate.show_sql">true</property>
<!-- * 格式化sql -->
<property name="hibernate.format_sql">true</property>
<!-- * 是否创建表 -->
<property name="hibernate.hbm2ddl.auto">update</property> <!-- #4整合c3p0 -->
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> <!-- #5 web项目6.0 取消bean校验 -->
<property name="javax.persistence.validation.mode">none</property> <!-- #6加入映射文件 -->
<mapping resource="cn/tgb/domain/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
二、Spring内容
1.Dao实现类:使用HibernateTemplate对PO类进行操作。
package cn.tgb.dao.impl; import java.util.List; import org.springframework.orm.hibernate3.HibernateTemplate; import cn.tgb.dao.UserDao;
import cn.tgb.domain.User; public class UserDaoImpl implements UserDao{ //使用hibernateTemplate对PO类进行操作
private HibernateTemplate hibernateTemplate;
//提供set方法
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
} @Override
public void save(User user) {
this.hibernateTemplate.save(user);
} @Override
public void update(User user) {
this.hibernateTemplate.update(user);
} @Override
public void delete(User user) {
this.hibernateTemplate.delete(user);
} @Override
public User findById(Integer uid) {
return this.hibernateTemplate.get(User.class, uid);
} @Override
public List<User> findAllUser() {
return this.hibernateTemplate.find("from User");
} }
2.Service实现类:直接使用dao层,通过spring tx管理事务
package cn.tgb.service.impl; import java.util.List; import cn.tgb.dao.UserDao;
import cn.tgb.domain.User;
import cn.tgb.service.UserService; public class UserServiceImpl implements UserService{
//引入UserDao
private UserDao userDao;
//提供set方法
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
} @Override
public void addUser(User user) {
this.userDao.save(user);
} @Override
public void updateUser(User user) {
this.userDao.update(user);
} @Override
public void deleteUser(User user) {
this.userDao.delete(user);
} @Override
public User findUserById(Integer uid) {
return this.userDao.findById(uid);
} @Override
public List<User> findAllUser() {
return this.userDao.findAllUser();
} }
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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
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/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- #1配置sessionFactory,
通过LocalSessionFactoryBean载入配置获得SessionFactory
--> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- #1.1确定配置文件的位置 -->
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
</bean>
<!-- #2 hibernateTemplate -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<!-- 须要使用sessionFactory获得session,操作PO对象 -->
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- #3 dao -->
<bean id="userDao" class="cn.tgb.dao.impl.UserDaoImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"></property>
</bean>
<!-- #4 service -->
<bean id="userService" class="cn.tgb.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean> <!-- #5 事务管理 -->
<!-- #5.1事务管理器 -->
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<!-- 必须确定sessionFactory。 从而获得session,再获得事务 -->
<property name="sessionFactory" ref="sessionFactory"></property>
</bean> <!-- #5.2事务通知(增强),对指定目标方法进行增强 -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="add*"/>
<tx:method name="update*"/>
<tx:method name="delete*"/>
<tx:method name="find*" read-only="true"/>
</tx:attributes>
</tx:advice> <!-- #5.3使用aop生成代理,进行增强 -->
<aop:config>
<!-- 确定切入点 -->
<aop:pointcut expression="execution(* cn.tgb.service..*.*(..))" id="txPointCut"/>
<!-- 声明切面 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
</aop:config>
</beans>
至此,Spring和Hibernate就算整合好了。以下编写一个測试类測试下。
package cn.tgb.test; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.tgb.domain.User;
import cn.tgb.service.UserService; public class TestApp {
public static void main(String[] args) { //1.创建建用户
User user = new User();
user.setUsername("jiangxiao");
user.setPassword("123"); //2.获取Sping配置文件
String xmlPathString="applicationContext.xml";
ApplicationContext applicationContext= new ClassPathXmlApplicationContext(xmlPathString); //3.通过Ioc获得UserService
UserService userService = (UserService) applicationContext.getBean("userService"); //4.运行加入用户操作
userService.addUser(user);
}
}
分析总结:
这张思维导图大概介绍了一下配置文件的配置内容和载入过程,当中蓝色的云朵部分是Spring整合Hibernate的内容。
程序执行时。通过载入配置文件,便将程序中全部的配置信息都载入了。假设有个扩展改动什么的也方便。
日后会继续介绍它们两个与Struts的整合。
sh_Spring整合Hibernate的更多相关文章
- 【Java EE 学习 53】【Spring学习第五天】【Spring整合Hibernate】【Spring整合Hibernate、Struts2】【问题:整合hibernate之后事务不能回滚】
一.Spring整合Hibernate 1.如果一个DAO 类继承了HibernateDaoSupport,只需要在spring配置文件中注入SessionFactory就可以了:如果一个DAO类没有 ...
- spring整合hibernate的详细步骤
Spring整合hibernate需要整合些什么? 由IOC容器来生成hibernate的sessionFactory. 让hibernate使用spring的声明式事务 整合步骤: 加入hibern ...
- spring整合hibernate
spring整合hibernate包括三部分:hibernate的配置.hibernate核心对象交给spring管理.事务由AOP控制 好处: 由java代码进行配置,摆脱硬编码,连接数据库等信息更 ...
- spring 整合hibernate
1. Spring 整合 Hibernate 整合什么 ? 1). 有 IOC 容器来管理 Hibernate 的 SessionFactory2). 让 Hibernate 使用上 Spring 的 ...
- Spring整合Hibernate。。。。
环境搭建,在eclipse中导入spring和hibernate框架的插件,和导入所有使用到的架包 首先,hibernate的创建: 建立两个封装类,其中封装了数据库中表的属性,这儿只写属性,gett ...
- Spring 整合 Hibernate
Spring 整合 Hibernate •Spring 支持大多数流行的 ORM 框架, 包括 Hibernate JDO, TopLink, Ibatis 和 JPA. •Spring 对这些 OR ...
- 使用Spring整合Hibernate,并实现对数据表的增、删、改、查的功能
1.1 问题 使用Spring整合Hibernate,并实现资费表的增.删.改.查. 1.2 方案 Spring整合Hibernate的步骤: 1.3 步骤 实现此案例需要按照如下步骤进行. 采用的环 ...
- Spring整合Hibernate详细步骤
阅读目录 一.概述 二.整合步骤 回到顶部 一.概述 Spring整合Hibernate有什么好处? 1.由IOC容器来管理Hibernate的SessionFactory 2.让Hibernate使 ...
- Spring学习7-Spring整合Hibernate
一.Springl为什么要整合Hibernate 二者的整合主要是把hibernate中核心的一些类型交给spring管理,这些类型主要包括sessionFactory. transactionM ...
随机推荐
- tarjan - tarjan的几种用法
前言 tarjan是一种神奇的算法, 它可以在线性时间内求强联通分量/缩点/LCA/割点/割边/... 但由于博主咸鱼,暂时掌握不了这么多, 先讲讲其中最简单的一些. 概述 tarjan是以DFS为基 ...
- Leetcode36--->Valid Sudoku(判断给定的数独是否有效)
题目:给定一个数独,某些部分已经被填上了数字,其余空的地方用‘.’表示:判断给定的数独是否有效: 数独规则: 每一行不能有重复的数字:每一列不能有重复的数字:将数独框划分为三行三列,没9个小方格不能有 ...
- Leetcode 456.132模式
132模式 给定一个整数序列:a1, a2, ..., an,一个132模式的子序列 ai, aj, ak 被定义为:当 i < j < k 时,ai < ak < aj.设计 ...
- niubi-job:一个分布式的任务调度框架设计原理以及实现
niubi-job的框架设计是非常简单实用的一套设计,去掉了很多其它调度框架中,锦上添花但并非必须的组件,例如MQ消息通讯组件(kafka等).它的框架设计核心思想是,让每一个jar包可以相对之间独立 ...
- AtCoder Regular Contest 080
手贱去开了abc,这么无聊.直接arc啊 C - 4-adjacent Time limit : 2sec / Memory limit : 256MB Score : 400 points Prob ...
- Hadoop全分布式模式安装
一.准备 1.准备至少三台linux服务器,并安装JDK 关闭防火墙如下 systemctl stop firewalld.service systemctl disable firewalld.se ...
- 【bzoj3782】上学路线 dp+容斥原理+Lucas定理+中国剩余定理
题目描述 小C所在的城市的道路构成了一个方形网格,它的西南角为(0,0),东北角为(N,M).小C家住在西南角,学校在东北角.现在有T个路口进行施工,小C不能通过这些路口.小C喜欢走最短的路径到达目的 ...
- 【前端学习笔记】2015-09-09~~~~nodejs中的require()和module.exports
nodejs中一个js文件就可以看做是一个模块 在node环境中,可以直接var a=require('模块路径以及不带扩展名的模块名') exports---module.exports 其中nod ...
- C# 数据库写入Sql Bulk索引损坏异常问题System.InvalidOperationException: DataTable internal index is corrupted: '4'
C# 数据库写入Sql Bulk索引损坏异常问题 System.InvalidOperationException: DataTable internal index is corrupted: '4 ...
- 洛谷P1101 单词方阵
题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间[color=red ...