mysql5.7 hibenate5.1_5.7 Spring与Hibernate整合应用

下面以一个简单的实例说明Spring与Hibernate的整合策略,步骤如下。

1 在SQL Server 2005中创建数据库表

数据库名为XSCJ,表见附录A的登录表。

2 创建Web项目

命名为“Hibernate_Spring”

3 添加Spring的开发能力

右击项目名,选择【MyEclipse】→【Add Spring Capabilities…】菜单项,将出现如图5.9所示的对话框,选中要应用的Spring的版本及所需的类库文件。注意,本书用的Spring版本为Spring 2.0。选择Spring的核心类库Spring 2.0 Core Libraries、Spring 2.0 Web Labraries、Spring 2.0 AOP Libraries和Spring 2.0 Persistence JDBC Libraries。

634429

b4b1be81db79880fa92bbaab4a48c4fb.png

图5.9  添加Spring Capabilities

单击【Next】按钮,提示是否建立Spring配置文件,在默认情况下选择application Context.xml文件的存放路径,选择在WEB-INF文件夹下,然后单击【Finish】按钮,如图5.10所示。

634429

74482d80096167465294c4ffd49b29dc.png

图5.10  创建applicationContext.xml文件

4 加载Hibernate框架

右击工程文件,选择【MyEclipse】→【Add Hibernate Capabilities…】菜单项,出现如图5.11所示的对话框。选择Hibernate版本及需要的类库。

91c86c0e2153ddd11eb80c1d82c6c059.png

图5.11  添加Hibernate库

单击【Next】按钮,出现如图5.12所示对话框,提示是用Hibernate的配置文件还是用Spring的配置文件进行SessionFactory的配置,选择使用Spring来对Hibernate进行管理。这样最后生成的工程中就不包含hibernate.cfg.xml,好处是在一个地方就可以对Hibernate进行管理。

634429

b12162816e60af6e615e483267ad8a41.png

图5.12  定义Hibernate配置

单击【Next】按钮,出现如图5.13所示的对话框,提示是创建一个新的Hibernate配置文件还是使用已有的配置文件,由于刚才已经生成了Spring配置文件,并且要在其中进行Hibernate的配置,所以选择复选框“Existing Spring configuration file”。

634429

e4abbd39aeeda2dde777fd2280a08382.png

图5.13  定义Spring-Hibernate配置

单击【Next】按钮,出现如图5.14所示的对话框,要求选择数据库连接信息。这里需要注意一点,Bean Id处填写数据源的名称,如“datasource”。数据源的创建请参考4.2.1节中的第2步。

634429

70f18c94402257f4120d7686f78925cb.png

图5.14  指定新的Spring数据源连接信息

单击【Next】按钮,出现如图5.15所示的对话框,提示是否创建SessionFactory类,由于本程序Spring为注入sessionFactory,所以不用创建,单击【Finish】按钮。

5818448c970f347c05e96d77a03c2380.png

634429

图5.15  定义SessionFactory属性

5 生成与数据库表对应的Java数据对象和映射

打开MyEclipse的Database Exploer Perspective,右击DLB表,选择Hibernate Reverse Engineering菜单项,如图5.16所示设置。

634429

cdebb588f9c015f1e53f9566b042777b.png

图5.16  Hibernate映射文件和POJO类

单击【Next】按钮,在ID generator中选择native,直接单击【Finish】按钮完成。

6 编写DlDao.java接口

在src文件夹下建立包org.dao,在该包先建立接口,命名为“DlDao”,这里主要以添加用户为例,代码如下:

package org.dao;

import org.model.Dlb;

public interface DlDao {

public void save(Dlb dl);

}

7 编写DlDao.java实现类

在src文件夹下建立包org.dao.imp,在该包下建立类,命名为“DlDaoImp”,代码。

package org.dao.imp;

import org.dao.DlDao;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.model.Dlb;

public class DlDaoImp implements DlDao{

//依赖注入SessionFactory对象,set方法注入

private SessionFactory sessionFactory;

public void setSessionFactory(SessionFactory sessionFactory) {

this.sessionFactory = sessionFactory;

}

public void save(Dlb dl) {

try{

//获得Session对象

Session session=sessionFactory.openSession();

Transaction ts=session.beginTransaction();

session.save(dl);

ts.commit();

}catch(Exception e){

e.printStackTrace();

}

}

}

8  修改Spring配置文件applicationContext.xml

applicationContext.xml文件的代码修改。

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-2.0.xsd">

class="org.apache.commons.dbcp.BasicDataSource">

value="com.microsoft.sqlserver.jdbc.SQLServerDriver">

value="jdbc:sqlserver://localhost:1433;databaseName=XSKC">

class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

org.hibernate.dialect.SQLServerDialect

/org/model/Dlb.hbm.xml

9 编写测试类

在src文件夹下建立包test,在该包下建立类Test,代码如下:

package test;

import org.dao.DlDao;

import org.model.Dlb;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.FileSystemXmlApplicationContext;

public class Test {

public static void main(String[] args){

Dlb dlb=new Dlb();

dlb.setId(1);

dlb.setXh("081109");

dlb.setKl("123456");

ApplicationContext context=new

FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml");

DlDao dlDao=(DlDao) context.getBean("dlDao");

dlDao.save(dlb);

}

}

运行该测试类后,打开数据库,可以发现在DLB表中添加了一项记录,如图5.17所示。

c80beb18ba94f3a8e5bb45ad1b0255a2.png 

634429

图5.17  登录表

Spring的Hibernate ORM 框架带来了方便的HibernateDaoSupport类,该类为Dao类提供了非常方便的方法getHibernateTemplate(),Dao类只要继承HibernateDaoSupport就可以使用该方法,例如上例的Dao实现类可以改成如下的代码:

package org.dao.imp;

import org.dao.DlDao;

import org.model.Dlb;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class DlDaoImp extends HibernateDaoSupport implements DlDao{

public void save(Dlb dl) {

getHibernateTemplate().save(dl);

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505569.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 多进程多线程_Java并发编程原理与实战三:多线程与多进程的联系以及上下文切换所导致资源浪费问题...

一、进程考虑一个场景:浏览器,网易云音乐以及notepad 三个软件只能顺序执行是怎样一种场景呢?另外,假如有两个程序A和B,程序A在执行到一半的过程中,需要读取大量的数据输入(I/O操作),而此时CPU只…

python用法查询笔记_Python爬虫学习笔记(三)

handler处理器自定义 - Cookies && URLError && json简单使用Cookies:以抓取https://www.yaozh.com/为例Test1(不使用cookies):代码:import urllib.request# 1.添加URLurl "https://www.yaozh.com/"# 2.添加请求头…

java编程实现素数环_结对编程(JAVA实现)

项目成员:黄思扬(3117004657)、刘嘉媚(3217004685)二、PSP表格PSPPersonal Software Process Stages预估耗时(分钟)实际耗时(分钟)Planning计划6040 Estimate 估计这个任务需要多少时间6040Development开发14401505 Analysis 需求分析3015 Design Spec 生成设计文档…

java版的中世纪战争_世界战争英雄设置-火焰纹章英雄英雄地图及AI命令设置

英雄地图及AI命令设置游戏中练级塔中的AI设置和故事地图中的一样,所以如果故事地图中的AI是主动出击的,那练级塔一样的地图也是主动出击。故事地图中配置有5个敌人,在练级塔中也一样会配置5个敌人。不同的是职业可能会发生变化,但…

python pip安装依赖的常用软件源

目录 引言 一、什么是镜像源?​​​​​​​ 二、清华源 三、阿里源 四、中科大源 五、豆瓣源 六、更多资源 引言 在软件开发和使用过程中,我们经常需要下载和更新各种软件包和库文件。然而,由于网络环境的限制或者服务器的负载&#…

java虚拟机规范 51cto_java虚拟机

最近学习java虚拟机做了一些整理,会陆续发完。Java虚拟机一、概念:当我们谈到java虚拟机的时候,有可能指下面3个方面:1):抽象java虚拟机的规范。2):一个java虚拟机具体的实现。------实现是指:实…

ipv6+ssh+java_IPv6的本地联网地址计算方法详解

IPv6的世界里,如果DHCP6和SLACC这两位大佬都为没有为可怜的网卡分配IP地址,也没有人为网卡设置静态的IP地址,系统就会为网卡计算一个IPv6的网址来。这样的网址只能在本地使用,不得路由,所以,被称为“link-l…

java互斥锁的实现原理_java-深入分析synchronized原理

互斥锁互斥锁futex,全拼fast userspace mutexes,直翻为快速用户空间互斥器,它是我们上层应用实现锁的最常用方法。futex是一块所有进程都可以访问的内存,是通过cpu的原子操作修改内存中的值来尝试获取琐,如果没有竞争&…

京东开普勒php接口,IOS菜鸟初学第十五篇:接入京东开普勒sdk,呼起京东app打开任意京东的链接-Go语言中文社区...

我之前写了一篇关于接入京东联盟sdk的文章,但是最近,由于这个原因,如下图导致需要重新集成京东的sdk,但是由于某种原因,因为android和ios端不统一,android接入的是京东开普勒的SDK,这次为了统一…

oracle安装过程掉电,Oracle数据库掉电后ORA-01172磁盘坏块解决方法

由于服务器突然掉电,重启机器后发现数据库无法启动。数据库版本 Oracle10201,OS REDHAT 5.4数据库无归档,无备份 [oraclehuna由于服务器突然掉电,重启机器后发现数据库无法启动。数据库版本 Oracle10201,,O…

linux删除了mount目录,Linux记录-分区(df/fdisk/mount/umount/fuser)

1.查看磁盘挂载(df -TH)2.卸载umount /dev/vdb13.查杀用户进程(fuser -m -v -i -k /dev/vdb1)4.再次卸载umount /dev/vdb1,并查看挂载信息df -TH5.删除分区(fdisk /dev/vdb m d 1 d w)6.查看分区(fdisk -l,没有Start-End磁盘分区表示可用)7.添加分区(fdi…

linux中pak命令,如何在Linux系统中安装Flatpak

选择你的Linux发行版快速安装Flatpak及使用Flatpak。支持Ubuntu、Fedora、Red Hat Enterprise Linux、Deepin、Endless OS、Linux Mint、openSUSE、Arch、Debian、CentOS、Gentoo、Solus、Alpine、Mageia、Pop!_OS、elementary OS、Raspbian。以下为你逐一介绍如何在这些Linux版…

ubuntu 改linux密码忘了怎么办,Ubuntu 14.04忘记root密码的解决方法

电脑20多天没用,忘记Ubuntu 14.04 root密码了,下面是在网上找到的一个解决办法,其它的和这个也大概相同。因为其中有些缺漏,没能给我解决问题。通过分析最终问题还是解决了,现解决方案的关键点记录一下。希望能方便到其…

linux设置历史命令保留数目限制,linux下修改history命令保存条数

在linux系统下、history命令会保存多少条命令呢?曾在一本书上说,如果注销系统,那么会将所有的历史命令都定入到~/.bash_history,但只保留1000条命令(这个是由默认的shell变量所设置了的)但是为什么我们执行history命令后会出现大于1000条的历…

android 手机壁纸源码,Android工程实现换壁纸功能【附源码】

最近工作要实现换壁纸小功能,将代码做成demo发出来没有采用zip格式换肤,因为只是更换一张图片背景1.将三张图放入drawable-hdpi,我放的是480*800的2.用sharedPreference存取皮肤的id,以便于下次启动的时候根据id来选择用哪个皮肤,在onresume()里刷新皮肤3.存到sharedPreference…

android webview 加载本地,webview加载本地资源的各种尝试

1.webview 打开sd卡上的静态html文件 ,js文件既然放在assets文件夹下能找到,那能通过放在sd卡,能加载吗?答:事实证明,是没有用的。2.既然能拿到html的数据,那我们是不是重写html的script的tag的…

apple手表android手机,Apple Watch 4发布了,安卓手机用户如何选择呢?

Apple Watch 4发布了,安卓手机用户如何选择呢?2018年09月13日 17:40作者:黄页编辑:黄页分享一年一度的“科技界春晚”苹果新品发布在今天凌晨举行。苹果带来了新一代的智能手表——Apple Watch Series 4系列。作为“课代表”,科技…

android投屏到电视机,华为手机如何投屏到电视机上?按步骤,1分钟搞定手机投屏电视机...

现在,越来越多的人开始用上了华为手机,几乎人手一台。在平时学习、工作中,我也经常使用华为手机来处理、完成很多事项、任务,例如把手机投屏到电视机上。除了满足学习、工作需求,我也经常把手机投屏电视来看视频、玩游…

html语言可以干什么,JavaScript语言能做什么?

JavaScript是除了HTML和CSS之外,万维网的核心技术之一。JavaScript支持交互式web页面,是web应用程序的重要组成部分。绝大多数网站都使用它,主要的网络浏览器都有专门的JavaScript引擎来执行它。JavaScript(简称“JS”) 是一种具有函数优先的…

html获取当前二级域名,列举某域名下所有二级域名的方法总结

鬼仔注:本文为总结文,转载请注明来源( http://huaidan.org )这里介绍三种列举某域名下所有二级域名的方法,有知道其他方法的请到 http://huaidan.org/archives/1088.html 留言进行补充~谢谢。1、命令行下列举此方法好像是hoky很久以前写的&am…