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
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: