1. 程式人生 > >spring hibernate 整合 註解

spring hibernate 整合 註解

Hibernate:

Hibernate是一個開放原始碼的物件關係對映框架,它對JDBC進行了非常輕量級的物件封裝,它將POJO與資料庫表建立對映關係,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執行。

spring:

spring是J2EE應用程式框架,是輕量級的IoC(控制反轉)和AOP(面向切面程式設計)的容器框架,主要是針對JavaBean的生命週期進行管理的輕量級容器,可以單獨使用,也可以和Struts框架,hibernate框架等組合使用。

IOC (控制反轉)實現方式為DI(依賴注入):1️⃣setter注入 2️⃣ 構造器注入

資料庫連線池

官方:資料庫連線池(Connection pooling)是程式啟動時建立足夠的資料庫連線,並將這些連線組成一個連線池,由程式動態地對池中的連線進行申請,使用,釋放。
個人理解:建立資料庫連線是一個很耗時的操作,也容易對資料庫造成安全隱患。所以,在程式初始化的時候,集中建立多個數據庫連線,並把他們集中管理,供程式使用,可以保證較快的資料庫讀寫速度,還更加安全可靠。

spring架構圖 :

spring架構圖

以下是一個實現spring 和 hibernate 整合的小案例:

1.匯入相關jar包

搜尋jar包(中國倉庫):【連結】MavenRepository:Search/Browse/Explore

https://mvnrepository.com/

這裡寫圖片描述

2.User實體類 及其xml配置 (不需要解釋)

User.java

package com.lanou.entity;

public class User {

    private int userId;
    private String userName;
    private String userPwd;
    public int getUserId() {
        return userId;
    }
    public void setUserId(int userId) {
        this
.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPwd() { return userPwd; } public void setUserPwd(String userPwd) { this.userPwd = userPwd; } }

配置檔案User.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 關係對映將entity與table進行關聯 -->
<hibernate-mapping>

    <class name="com.lanou.entity.User" table="USER">
        <id name="userId" type="int" column="USER_ID">
            <!-- 指明主鍵生成方式 -->
            <generator class="identity"></generator>
        </id>
        <property name="userName" column="USER_NAME" type="string"></property>
        <property name="userPwd" column="USER_Pwd" type="string"></property>
    </class>
</hibernate-mapping>
  1. dao層的UserDao類

UserDao.java

package com.lanou.dao;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate4.HibernateTemplate;
import org.springframework.stereotype.Repository;

import com.lanou.entity.User;

@Repository
public class UserDao {

    // 1.將sessionFactory注入到template
    // template 注入到 UserDao
    // spring 提供一個物件(CRUD操作)

    @Autowired
    HibernateTemplate template;

    public List<User> getAllUsers() {

        String hql = "from User";
        List<User> users = (List<User>) template.find(hql);

        return users;

    }
}

4.重點 配置applicationContext.xml

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"

    xsi:schemaLocation="  
    http://www.springframework.org/schema/context  
    http://www.springframework.org/schema/context/spring-context.xsd  
    http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans.xsd">


    <!-- ✨掃描註解 -->
    <context:component-scan base-package="com.lanou"></context:component-scan>

    <!--1.配置連線池-bean -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver" />
        <property name="jdbcUrl"
            value="jdbc:mysql://localhost:3306/list?characterEncoding=utf-8" />
        <property name="user" value="root" />
        <property name="password" value="123456" />
    </bean>
    <!--2. 獲取sessionFactory 通過spring獲取hibernate提供的sessionFactory -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <!-- 把c3p0注入到sessionFactory中 -->
        <property name="dataSource" ref="dataSource"></property>
        <!--hibernate 的基本配置 -->
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop>

            </props>
        </property>
        <property name="mappingResources">
            <list>
                <value>com/lanou/entity/User.hbm.xml</value>
            </list>
        </property>
    </bean>
    <!-- 3.template配置  將sessionFactory注入到template -->
    <bean id="template" class="org.springframework.orm.hibernate4.HibernateTemplate">

    <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

</beans>

5.編寫測試類

TestHibernate.java

package com.lanou.test;
import java.util.List;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.lanou.dao.UserDao;
import com.lanou.entity.User;

public class TestHibernate {

    /**
     * jUnit單元測試
     */

  @Test
    public void test() {

        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
        UserDao userDao=(UserDao) ac.getBean("userDao");
        List<User> users=userDao.getAllUsers();
        for (User user : users) {
            System.out.println(user.getUserName());
        }
    }
}

spring 註解注入

@Service用於標註業務層元件 (應用在serviceImpl類上)

@Controller用於標註控制層元件(應用在controller類上)

@Repository用於標註資料訪問元件,即DAO元件

@Component泛指元件,當元件不好歸類的時候,我們可以使用這個註解進行標註。

@Autowired 預設按型別裝配

相關推薦

spring hibernate 整合 註解

Hibernate: Hibernate是一個開放原始碼的物件關係對映框架,它對JDBC進行了非常輕量級的物件封裝,它將POJO與資料庫表建立對映關係,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執行。 spring: sp

maven + Struts2 + Spring + Hibernate 整合 >>> 配置文件關系圖

min 模糊 mage 圖片 分享圖片 ssh 所有 配置文件 pan SSH 配置比較多,有很多地方一直都很模糊,這次整理一下思路。 所有源文件都在文末。 XML 文件:鏈接:https://pan.baidu.com/s/1kUHjhAJ 密碼:b4b3 圖片超清

Spring+Hibernate整合

category span spa lns aop pri nco host 繼承 是DAO繼承HibernateTemplate這個類,該類提供了sessionFactory()方法用於註入SessionFactory 通過spring獲取DAO時,註入SessionFa

struts spring hibernate整合

最近等著專案啟動,沒事情幹,把struts2 spring hibernate 又複習了一遍,參考資料是尚學堂-馬老師的視訊講解,感覺很到位,現在把整合的步驟給大家公佈出來,有問題和疑問的大家可以進來討論。 專案所需要的jar包,一共分4部分,spring.jar,hibernate.jar,s

SpringMVC+Spring+Hibernate整合開發

最近突然想認真研究下java web常用框架,雖然現在一直在用,但實現的整體流程不是很瞭解,就在網上搜索資料,嘗試自己搭建,以下是自己的搭建及測試過程。 一、準備工作:      1/安裝並配置java執行環境      2/資料庫的安裝配置(Mysql)      3/安裝並配置伺服器(Tom

Struts2+Spring+Hibernate整合開發(Maven多模組搭建)

Struts2+Spring+Hibernate整合開發(Maven多模組搭建) 0.專案結構 Struts2:web層 Spring:物件的容器 Hibernate:資料庫持久化操作   1.父模組匯入和管理所有需要的jar包 <?xml v

Spring+Hibernate整合開發配置,完整例項

目錄結構 Jar包 配置 一、beans.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.o

Spring+Hibernate整合配置

    在公司一直沒有什麼機會直接折騰SSH“原生態”的SSH當今比較流行的輕量級的框架,用著公司的框架也是鬱悶異常,今天沒事整整原來用過的一個專案的配置,發現就算是自己曾經用過的東西,如果較長時間不返過去重新學習,許多你半熟不熟的知識就是異常陌生。下面貼上我的一些配置,暫

spring hibernate整合: Could not obtain transaction-synchronized Session for current thread

當hibernate 將事務交由 spring管理時,  應將 @Transactional 加入對接的介面層,即其它物件呼叫的方法上,若將@Transactional加在內部方法上,將會出現 Could not obtain transacti

Struts2+Spring+Hibernate整合的例子

最近學習了Struts2,Spring,Hibernate的內容。並做了一個簡單的訊息傳送的例子,因為系統很小,所以也不好意思叫系統。雖然例子簡單,但SSH整合的基本內容都包含了。就記錄下來,方便以後查閱。 這個是系統的基本需求。 使用者能夠傳送訊息(多選使用者進行群發)

spring-hibernate整合 事務不起作用

當spring和hibernate 整合後,事務不起作用 解決辦法:通過Spring的SessionFactory的getCurrentSession的方法建立Session 一、首先說一下hibernate中建立用來連線資料庫的Session,有兩種方式。 1.通過Sp

jsf+spring+hibernate 整合出現的錯誤集合

一.錯誤資訊提示:WARN [main] (Configurator.java:126) - No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpat

Springmvc+Spring+Hibernate整合框架

前言:   最近沒什麼事做,搭個框架寫成部落格記錄下來,拉通一下之前所學知識.   話不多說,我們直接步入正題。   準備工作:      1/安裝並配置java執行環境      2/資料庫的安裝配置(Mysql)      3/安裝並配置伺服器(Tomcat)

U8Framework4SSH ——開源了一套SSH2(Struts2+Spring+Hibernate)整合框架

U8Framework4SSH U8Server中使用的SSH2(Struts2+Spring3+Hibernate4)框架,包括U8Server整合好的配置檔案,以及抽象出來的一些通用元件,使得基於J2EE框架開發的同學可以快速展開工作。 U8Serv

SSH2專案網上書店系統手把手教學_Struts2+Spring+Hibernate整合開發

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-in

Spring+Hibernate整合時關於Hibernate事務管理的問題

org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.

spring hibernate 整合spring使用容器JTA事務管理器

說明: 1.EJB的事務是方法級別的隔離,而spring的攔截事務是類級別的,所以spring管理的jta事務在同一個類的不同方法設定不同的事務傳播策略是無效的。 2.使用了spring的事務,就不能顯示地使用hibernate的開啟事務,提交事務等,spring通過攔截器

struts,springHibernate整合註解式)

首先編寫可持久化的實體@Entity @Table(name = "Stock") public class Stock { @Id //標識實體中ID和底層資料表的主鍵統一 @GeneratedValue private int id; //

SpringHibernate註解整合 hibernate3和hibernate4/5的區別

http://blog.csdn.net/jintaohahahaha/article/details/52856433現在,ssh框架中註解的使用已經非常普遍了,在此我介紹一下spring整合hibernate註解時的配置: hibernate和spring的註解方式

S2SH框架整合(註解)Struts2+Spring+Hibernate+MySql

1 package com.test.common.dao; 2 3 import java.io.Serializable; 4 import java.util.List; 5 6 import org.hibernate.Query; 7 import org.hi