SpringHibernate4

1.概述

本文将重点介绍如何使用Spring设置Hibernate 4 –我们将研究如何使用Java和XML配置来使用Hibernate 4配置Spring 3。 当然,该过程的某些部分对于Hibernate 3文章是通用的 。

2. Maven

要将Spring Persistence依赖项添加到项目pom.xml中 ,请参阅专注于Spring和Maven依赖项的文章 。

继续使用Hibernate 4,Maven依赖项很简单:

<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>4.2.4.Final</version>
</dependency>

然后,要使Hibernate使用其代理模型,我们还需要javassist:

<dependency><groupId>org.javassist</groupId><artifactId>javassist</artifactId><version>3.18.0-GA</version>
</dependency>

并且由于我们将在本教程中使用MySQL,因此我们还需要:

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.26</version><scope>runtime</scope>
</dependency>

最后,我们使用了正确的连接池,而不是仅开发人员的Spring实现– DriverManagerDataSource 。 我们在这里使用Tomcat JDBC连接池 :

<dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-dbcp</artifactId><version>7.0.41</version>
</dependency>

3. Hibernate 4的Java Spring配置

在项目中使用Hibernate 4,从Hibernate 3设置迁移时,配置方面需要进行一些更改。

从Hibernate 3升级时,主要不同之处是使用Hibernate 4创建SessionFactory的方式。

它取代从Hibernate3的包老AnnotationSessionFactoryBean -这是现在从hibernate4包使用LocalSessionFactoryBean的完成。 新的FactoryBean承担同样的责任-从注释扫描中引导SessionFactory 。 这是必需的,因为从Hibernate 3.6开始,旧的AnnotationConfiguration 已合并到Configuration中 ,因此新的Hibernate 4 LocalSessionFactoryBean使用此新的Configuration机制。

还值得一提的是,在Hibernate中4,Configuration.buildSessionFactory方法和机制也被弃用 赞成 Configuration.buildSessionFactory(ServiceRegistry) -这春天LocalSessionFactoryBean中尚未使用。

Hibernate 4的Spring Java配置:

import java.util.Properties;
import javax.sql.DataSource;
import org.apache.tomcat.dbcp.dbcp.BasicDataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
import org.springframework.orm.hibernate4.HibernateTransactionManager;
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import com.google.common.base.Preconditions;@Configuration
@EnableTransactionManagement
@PropertySource({ "classpath:persistence-mysql.properties" })
@ComponentScan({ "org.baeldung.spring.persistence" })
public class PersistenceConfig {@Autowiredprivate Environment env;@Beanpublic LocalSessionFactoryBean sessionFactory() {LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();sessionFactory.setDataSource(restDataSource());sessionFactory.setPackagesToScan(new String[] { "org.baeldung.spring.persistence.model" });sessionFactory.setHibernateProperties(hibernateProperties());return sessionFactory;}@Beanpublic DataSource restDataSource() {BasicDataSource dataSource = new BasicDataSource();dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));dataSource.setUrl(env.getProperty("jdbc.url"));dataSource.setUsername(env.getProperty("jdbc.user"));dataSource.setPassword(env.getProperty("jdbc.pass"));return dataSource;}@Beanpublic HibernateTransactionManager transactionManager() {HibernateTransactionManager txManager = new HibernateTransactionManager();txManager.setSessionFactory(sessionFactory().getObject());return txManager;}@Beanpublic PersistenceExceptionTranslationPostProcessor exceptionTranslation() {return new PersistenceExceptionTranslationPostProcessor();}Properties hibernateProperties() {return new Properties() {{setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));setProperty("hibernate.globally_quoted_identifiers", "true");}};}
}

4. Hibernate 4的XML Spring配置

类似的, Hibernate 4也可以使用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"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"><context:property-placeholder location="classpath:persistence-mysql.properties" /><bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="packagesToScan" value="org.baeldung.spring.persistence.model" /><property name="hibernateProperties"><props><prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop><prop key="hibernate.dialect">${hibernate.dialect}</prop></props></property></bean><bean id="dataSource" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource"><property name="driverClassName" value="${jdbc.driverClassName}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.user}" /><property name="password" value="${jdbc.pass}" /></bean><bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><bean id="persistenceExceptionTranslationPostProcessor" class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/></beans>

要将XML引导到Spring Context中,如果应用程序配置了Java配置,我们可以使用一个简单的Java配置文件:

@Configuration
@EnableTransactionManagement
@ImportResource({ "classpath:hibernate4Config.xml" })
public class HibernateXmlConfig{//
}

或者,如果整体配置是纯XML的,我们可以简单地将XML文件提供给Spring Context。

对于这两种配置类型,JDBC和Hibernate特定的属性都存储在属性文件中:

# jdbc.X
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_hibernate_dev?createDatabaseIfNotExist=true
jdbc.user=tutorialuser
jdbc.pass=tutorialmy5ql# hibernate.X
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql=false
hibernate.hbm2ddl.auto=create-drop

5. Spring,Hibernate和MySQL

Hibernate 3支持的驱动程序和方言已针对Hibernate 3 进行了广泛讨论 -一切仍然适用于Hibernate 4。

6.用法

至此,Hibernate 4已通过Spring进行了完整配置,我们可以在需要时直接注入原始的Hibernate SessionFactory

public abstract class BarHibernateDAO{@AutowiredSessionFactory sessionFactory;...protected Session getCurrentSession(){return sessionFactory.getCurrentSession();}
}

这里重要的一点是,现在这是推荐的使用Hibernate API的方法–旧的HibernateTemplate不再包含在新的org.springframework.orm.hibernate4包中,因为它不应与Hibernate 4一起使用。

7.结论

在此示例中, 我们使用Hiberate 4配置了Spring –都使用Java和XML配置。 这个简单项目的实现可以在github项目中找到–这是一个基于Eclipse的项目,因此应该很容易直接导入和运行。

参考:来自bakgung博客的JCG合作伙伴 Eugen Paraschiv 提供的Spring的Hibernate 4 。

翻译自: https://www.javacodegeeks.com/2013/05/hibernate-4-with-spring.html

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

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

相关文章

qt linux 添加库文件路径,linux下qt使用第三方库的那些事

开发库查看工具&#xff1a;$sudo apt-get install pkg-config很多时候我们并不知道自己电脑有没有这个库&#xff0c;所以我们可以使用这个工具来查看自己有哪些工具&#xff0c;或者哪些工具没有。同时&#xff0c;qmake是对这个工具配置支持的&#xff0c;所以我们很多时候很…

xp系统上安装linux系统教程,XP系统如何安装fedora linux双系统?WinXP安装fedora linux双系统的方法...

有位朋友因为想在linux中熟悉下hadoop的配置开发环境&#xff0c;所以就开始于WinXP系统中安装fedora linux双系统&#xff0c;可是操作了很久都没成功。这该如何怎么办呢&#xff1f;接下来&#xff0c;小编就给大家介绍WinXP安装fedora linux双系统的具体方法。1.下载Fedora-…

solr 的maven_使用Maven运行Solr

solr 的maven使用Maven运行Solr Solr是一个开源搜索服务器&#xff0c;它是使用Lucene Core的索引和搜索功能构建的&#xff0c;它可以用于使用几乎任何编程语言来实现可扩展的搜索引擎。 尽管Solr具有许多优点&#xff0c;但建立一个开发环境并不是其中之一。 这篇博客文章描…

linux指定内核位置,ARM linux内核启动时几个关键地址

1. 内核启动地址ZTEXTADDR解压代码运行的开始地址。没有物理地址和虚拟地址之分&#xff0c;因为此时MMU处于关闭状态。这个地址不一定时RAM的地址&#xff0c;可以是支持读写寻址的flash等存储中介。Start address of decompressor. heres no point in talking about vi…

pae扩展内存 linux,Linux内核-内存管理-PAE(物理地址扩展)

Intel 通过在处理器上把管脚数从 32 增加到 36&#xff0c;以提高处理器的寻址能力&#xff0c;使其达到 2^3664GB&#xff0c;然而线性地址的位数仍然是 32 位&#xff0c;为此&#xff0c;需引入一种新的分页机制。从pentium pro 处理器开始&#xff0c;intel引入一种叫做 PA…

java嵌入式db_Java DB嵌入式模式

java嵌入式dbJava DB是基于Java编程语言和SQL的关系数据库管理系统。 这是Apache软件基金会的开源Derby项目的Oracle版本。 Java SE 7 SDK中包含Java DB。 Java DB有两个部署选项&#xff1a; Embedded和Network Server 。 这篇文章是关于嵌入式部署或模式的。 1.嵌入式 在嵌…

内存属于linux文件吗,linux下的/dev/shm是什么? 内存 文件系统

linux下的/dev/shm是什么&#xff1f;/dev/shm/是linux下一个目录&#xff0c;/dev/shm目录不在磁盘上&#xff0c;而是在内存里&#xff0c;因此使用linux /dev/shm/的效率非常高&#xff0c;直接写进内存。我们可以通过以下两个脚本来验证linux /dev/shm的性能&#xff1a;[r…

群晖备份linux分区,数据丢失的后悔药,群晖NAS备份方案详解

“秒速开机”——据说90%的人都是因为这句话而知道的SSD固态硬盘。相比于机械硬盘&#xff0c;SSD固态硬盘开机快、关机快、打开软件快、载入数据快、拷贝快、删除也快——既快乐、又爽快&#xff0c;更是大块人心!然而&#xff0c;SSD固态硬盘已经可以完全取代机械硬盘了吗&am…

php cdi_异步CDI事件

php cdi几天前&#xff0c;在我们的常规代码审查中&#xff0c;我的一位同事提出了一个问题&#xff0c;即如果可能&#xff0c;一次同时调用CDI观察者&#xff08;这样的方法带有参数Observes &#xff09;将发生多次&#xff1f;用于不同的事件实例。 换句话说&#xff0c;在…

tg3269c网卡驱动linux,TP-Link3269C网卡驱动官方版

TG-3269C驱动是一款能够安装于由普联发布的无线网卡驱动&#xff0c;通过此安装驱动我们手机和其他无线设备才能连接上无线网卡并进行上网&#xff0c;同时如果你的网卡经常出现断开和重连、网络不稳定等情况可以通过重新安装驱动&#xff0c;查看是否是硬件的问题&#xff0c;…

使用Spring Security,Thymeleaf和Okta保护Java应用程序的安全

永不再构建身份验证 –喜欢构建用户管理&#xff1f; 使用Okta&#xff0c;您可以在几分钟内为您的应用程序添加社交登录&#xff0c;多因素身份验证和OpenID Connect支持。 立即创建一个免费的开发者帐户。 在构建Java应用程序时&#xff0c;用户管理是至关重要的考虑因素。 …

红旗linux添加usb无线网卡,在Ubuntu 8.10中安装无线网卡RTL8187SE驱动

本人的笔记本是微星的Wind U90&#xff0c;自带的无线网卡是RTL8187SE。这款无线网卡在一般的Linux下是没有驱动的&#xff0c;微星的官方也仅仅提供在OpenSUSE下的驱动。为了在我的Ubuntu下使用这个网卡&#xff0c;只能自己动手了。还好&#xff0c;有了互联网上各位大侠和微…

java linq_LINQ和Java

java linqLINQ已经非常成功&#xff0c;但在.NET生态系统中也引起了争议。 许多人正在Java世界中寻找可比的解决方案。 为了更好地理解什么是可比的解决方案&#xff0c;让我们看一下LINQ解决的主要问题&#xff1a; 查询语言通常是具有许多关键字的声明性编程语言。 它们提供…

嵌入式 linux restful,嵌入式 RESTful 框架 express.java

软件介绍express.java 是一个微型的 RESTful Web 框架。可用于嵌入应用内部&#xff0c;替代 JMX 用于跨语言通讯。示例代码&#xff1a;WebServer.jettyServer().get("/", new AjaxController() {Overridepublic Object ajax(ParamMap params) {return ResultMap.cr…

将Google reCaptcha与Spring Boot应用程序结合使用

介绍 Google的reCaptcha是一个用于防止漫游器向您的公共表单提交数据或访问您的公共数据的库。 在本文中&#xff0c;我们将研究如何将reCaptcha与基于Spring Boot的Web应用程序集成 设置验证码 您应该从管理面板创建API密钥。 您必须创建一个示例应用程序&#xff0c;如下所…

探索 HTTP 请求的世界:get 和 post 的奥秘(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

linux 书签管理工具,在书签管理工具中使用Ubuntu字体

通过便捷书签管理程序(Bookmarklet&#xff0c;一种在浏览器中存放书签URL地址的应用程序)来在大多数的网站上推广使用Ubuntu系统的默认字体。——读者米格尔费尔南迪斯米格尔在他的想法产生之前告诉我们说&#xff1a;“我发现Ubuntu系统的字体在提高可读性上超过了绝大多数的…

linux18.2安装界面,Ubuntu 18.10下安装Grub Customizer 5.1.0配置grub2图形化界面

配置Grub2/burg引导装载程序Grub Customizer 5.1.0新增加对Ubuntu 18.10的支持&#xff0c;我们可以用PPA源来安装&#xff0c;同时还支持Ubuntu 18.04、16.04、14.04。Grub Customizer简介Grub Customizer是用来配置Grub/burg引导装载程序的图形工具&#xff0c;此次发布的5.1…

使用Eclipse和Open Liberty的Java EE 8上的Java 9

几周前&#xff0c;我写了一篇文章&#xff0c;标题为哪个IDE和服务器支持Java EE 8和Java9 &#xff0c;着眼于Java 9和Java EE 8之间的当前运行状态。您可以期待事情发展很快&#xff0c;我们现在有了一些alpha和支持Java 9和Java EE 8的开发版本。这些是– Payara 5 –适用…

深入浅出linux工具与编程 下载,8208.深入浅出Linux工具与编程.pdf

<>猛点这里下载全部内容目录&#xff1a;第1篇Linux命令及其工具第1章Linux系统与命令1.1Linux操作系统1.1.1Linux重要概念1.1.2Linux组成1.1.3Linux目录结构1.1.4Linux操作系统的组成1.1.5Linux用户管理1.1.6Linux文件管理1.2Linux命令1.2.1Linux命令帮助1.2.2Linux命令…