1. 程式人生 > >spring4整合hibernate5.1

spring4整合hibernate5.1

在另一篇文章hibernate5(2)初入門配置例項中,我們針對hibernate5.1版本的嶄新引導配置方法,完成了對資料庫的的插入例項操作,在本節內容中,我們開始引入spring4,完成spring4與hibernate5.1的整合工作,像資料庫中插入一條記錄。在後面學習hibernate中,我們都會使用spring來管理我們的Bean容器。

1. 匯入spring4所需jar包

我們推薦使用maven來管理專案,下面是maven中的spring整合hibernate完整配置。

<properties>
    <project.build.sourceEncoding
>
UTF-8</project.build.sourceEncoding> <org.hibernate-version>5.1.0.Final</org.hibernate-version> <!-- spring版本號 --> <spring.version>4.0.2.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>junit</groupId
>
<artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version
>
1.7.5</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.5</version> <scope>runtime</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> <scope>runtime</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.21</version> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>2.2.2</version> </dependency> <!-- 匯入dbcp的jar包,用來在applicationContext.xml中配置資料庫 --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2.2</version> </dependency> <!-- hibernate --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${org.hibernate-version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>${org.hibernate-version}</version> </dependency> <!-- spring核心包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <!-- mybatis核心包 --> <!-- servlet jsp --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-dbcp2</artifactId> <version>2.0</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> </dependencies>

在這裡,我們順便引入了springMVC相關jar包,在我們的後續學習測試中可能會用到,現在暫時不用理會

2. 編寫spring容器檔案

在上一節中,我們的資料庫、hibernate的相關配置都在hibernate.cfg.xml檔案中完整,使用spring後,這些統統交給spring來進行管理。spring完整例項配置檔案如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:tx="http://www.springframework.org/schema/tx" 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.xsd
                        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close"><!-- 設定為close使Spring容器關閉同時資料來源能夠正常關閉,以免造成連線洩露 --> 
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/yc" />
        <property name="username" value="yc" />
        <property name="password" value="yc" />
        <property name="defaultReadOnly" value="false" /><!-- 設定為只讀狀態,配置讀寫分離時,讀庫可以設定為true
        在連線池建立後,會初始化並維護一定數量的資料庫安連線,當請求過多時,資料庫會動態增加連線數,
        當請求過少時,連線池會減少連線數至一個最小空閒值 -->
        <property name="initialSize" value="5" /><!-- 在啟動連線池初始建立的資料庫連線,預設為0 -->
        <property name="maxActive" value="15" /><!-- 設定資料庫同一時間的最大活躍連線預設為8,負數表示不閒置 -->
        <property name="maxIdle" value="10"/><!-- 在連線池空閒時的最大連線數,超過的會被釋放,預設為8,負數表示不閒置 -->
        <property name="minIdle" value="2" /><!-- 空閒時的最小連線數,低於這個數量會建立新連線,預設為0 -->
        <property name="maxWait" value="10000" /><!-- 連線被用完時等待歸還的最大等待時間,單位毫秒,超出時間拋異常,預設為無限等待 -->
    </bean>
    <!-- 配置我們的回話工廠-->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
        <property name="hibernateProperties">
            <props>
                <!-- MySQL的方言 -->
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                <prop key="javax.persistence.validation.mode">none</prop>
                <!-- 必要時在資料庫新建所有表格 -->
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.show_sql">true</prop>
                <!-- 配置current session的上下文環境,方便我們呼叫sessionFactory獲取當前執行緒統一個session物件 -->
                <prop key="current_session_context_class">thread</prop>
                <!-- 用更漂亮的格式顯示sql語句-->
                <!-- <prop key="hibernate.format_sql">true</prop> -->
            </props>
        </property>
        <property name="packagesToScan" value="com.zeng.model" /><!-- 配置需要掃描的包路徑,在該包下,所有的類註解配置都會被掃描 -->
    </bean>
</beans>

關於spring的配置學習,可參考我另一部落格專欄《Spring研磨分析》

3. 編寫測試實體類

測試實體類與我們上一篇文章例項一樣。

package com.zeng.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity//聲明當前類為hibernate對映到資料庫中的實體類
@Table(name = "t_user")//宣告在資料庫中自動生成的表名為t_user
public class User {
    @Id//宣告此列為主鍵
    @GeneratedValue(strategy = GenerationType.AUTO)//根據不同資料庫自動選擇合適的id生成方案,這裡使用mysql,為遞增型
    private Integer id;
    private String name;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

4. 編寫測試方法

@Test
public void test2(){
    //使用此方法獲取並初始化我們的spring容器,注意pring-datasource.xml必須存放在類路徑的根目錄下。
    ApplicationContext ac = new ClassPathXmlApplicationContext("spring-datasource.xml");
    //從spring容器中獲取我們的會話工廠例項,裡面已完成好各個屬性的配置工作
    SessionFactory sessionFactory = (SessionFactory) ac.getBean("sessionFactory");

    //下面開始我們的資料庫操作
    Session session = sessionFactory.openSession();//從會話工廠獲取一個session
    Transaction transaction = session.beginTransaction();//開啟一個新的事務
    User user = new User();
    user.setName("hello spring");
    session.save(user);
    transaction.commit();//提交事務
}

執行測試檔案,看到列印資訊:
Hibernate: insert into t_user (name) values (?)
說明我們的插入操作已完成,檢視資料,會看到一條新的記錄。

至此,我們輕鬆地完成了spring與hibernate的整合工作,從下一節開始,我們以快速入門為目的,先介紹hibernate的各類使用方法,在結合例項熟悉hibernate的基本使用後,我們再深入開展對hibernate的分析學習。

原始碼下載

相關推薦

spring4整合hibernate5.1

在另一篇文章hibernate5(2)初入門配置例項中,我們針對hibernate5.1版本的嶄新引導配置方法,完成了對資料庫的的插入例項操作,在本節內容中,我們開始引入spring4,完成spring4與hibernate5.1的整合工作,像資料庫中插入一條記

(9)spring4整合Hibernate5

1.匯入spring 包和hibernate 包(hibernate中lib中的required(必備),以及jpa包) 2.匯入dbcp包和log4j(解析XML的)和commons-logging-1.2(Junit必備) 3.配置beans.xml: <?x

spring4整合hibernate5報錯解決

**1、**org.springframework.web.context.support.XmlWebApplicationContext.refresh:544 - Exception encountered during context initiali

我在spring4整合hibernate5遇到的問題

1,nested exception is java.lang.NoClassDefFoundError:org/hibernate/engine/SessionFactoryImplementor hibernate4整合spring3 時出現 neste

整合之道--Spring4整合Hibernate5

Spring與Hiberante整合 通過Hibernate的學習,我們知道,hibernate主要在hibernate.cfg.xml配置檔案中 接下來我們看一下hibernate的一個配置檔案 hibernate配置檔案 hibernate.cf

Spring4整合MyBatis3 (1

開發環境配置: 1.安裝jdk8 2.安裝eclipse 3.安裝Tomcat8 4.安裝MySql5 準備資料庫資源: #建立使用者表 create table tb_user(id int primary key auto_increment,#idloginname varch

springmvc-spring4.3-hibernate5框架整合

                                          &

Spring4.X整合hibernate5.X之事物管理

我們之所以要用Transaction來管理hibernate的session主要目的就是區分開業務邏輯程式碼和持久層程式碼分開。 我所做是在正確匯入了相關jar包和配置好了spring mvc的前提條件下進行的,下面是我的一個在eclipse下面的測試專案的專案目錄結構

spring4+struts2+hibernate5整合出現spring異常

整合spring4+struts2+hibernate5,進行測試時出現異常,異常內容如下: Error creating bean with name 'userDao' defined in file [D:\apache-tomcat-7.0.73\webapps\S

Spring4.3.3 WebSocket-STOMP協議整合 (2.1)-WebSocket-stomp子協議通訊小栗子

                      上一篇中說到:stomp - jsp之間的通訊,是通過stomp,socket.js/stomp.js實現的通訊。如果覺得寫jsp或者js麻煩,或者不怎麼會js,不是太懂,可以用webSocketStomp的client來測試。下面

ssh2項目整合 struts2.1+hibernate3.3+spring3 基於hibernate註解和struts2註解

模塊 port aware -- ids tle des 項目 @service 項目文件夾結構例如以下: 核心配置文件: web.xml <?xml version="1.0" encoding="UTF-8"

Spring4 Quartz2 動態任務,Spring4整合quartz2.2.3簡單動態任務

extend for ignore extends 執行 void throw uart images Spring4 Quartz2 動態任務 Spring4整合quartz2.2.3簡單動態任務, Quartz2.2.3簡單動態定時任務二, SimpleSchedul

Spring4整合MyBatis3(5)

jsp頁面: fkbookapp/WebContent/WEB-INF/content/loginForm.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding=

Spring4整合MyBatis3(4)

控制層功能實現 fkbookapp/src/org/fkit/controller/FormController.java package org.fkit.controller; import org.springframework.stereotype.Controller;

Spring4整合MyBatis3(3)

fkbookapp/src/org.fkit.mapper/UserMapper.java package org.fkit.mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annota

Spring4整合MyBatis3(2)

fkbookapp/WebContent/WEB-INF/web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan

SpringBoot-整合PageHelper5.1.2踩坑

 背景就不介紹了,專案是SpringBoot+MyBatis搭建的,需要整合git上的PageHelper5.1.2,這個外掛大家都比較熟悉了 之前一直用的PageHelper4.0.3,整合是這樣的: //分頁外掛 PageHelper pageHelper = new PageHelp

ssm框架整合1

第一次做框架整合,不免還是有點小激動的,花了2天時間,強行寫了一個登入頁面。記錄一下遇到的問題: 整合思路:從前端到後端的客戶請求,從後端到前端的客戶反饋。 整合過程:用spring-mapper介面整合後端 整合問題:查詢資料庫的時候若資料庫中的時候若資料庫沒有此資

基於springboot2 框架整合1):spring boot專案初始化

前言 專案中使用了很多現成的框架,都是專案經理、架構師帶來的,從來沒有自己整合過!這次決定自己從零開始整合一次,以學習鞏固。過程中參考很多開源框架的思路,工具類等,若有侵權,請速速聯絡,一定妥善處理   一:建立maven專案 這個不多說,給出pom.xml

Spark 2.1.0整合CarbonData 1.1.0

1.新建專案 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http: