成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Hibernate【與Spring整合】

chadLi / 1116人閱讀

摘要:常用的配置屬性加載映射文件映射到文件夾加載映射文件映射到具體位置我們推薦的就是使用這一種,就可以少了的配置文件了。

前言

前面已經(jīng)學(xué)習(xí)了如何使用Spring與Struts2進(jìn)行整合,本博文主要講解如何使用Spring對(duì)Hibernate進(jìn)行整合

Spring和Hibernate整合的關(guān)鍵點(diǎn):

SessionFactory對(duì)象交給Spring來創(chuàng)建

Hibernate的事務(wù)交給Spring進(jìn)行管理

Spring和Hibernate整合步驟 引入jar包

連接池/數(shù)據(jù)庫驅(qū)動(dòng)包

Hibernate相關(guān)jar

Spring 核心包(5個(gè))

Spring aop 包(4個(gè))

spring-orm-3.2.5.RELEASE.jar 【spring對(duì)hibernate的支持】

spring-tx-3.2.5.RELEASE.jar 【事務(wù)相關(guān)】

配置文件

hibernate.cfg.xml

bean.xml

bean.xml




hibernate.cfg.xml


    
    

        
        com.mysql.jdbc.Driver
        jdbc:mysql:///zhongfucheng
        root
        root
        
        org.hibernate.dialect.MySQL5Dialect


        
        
        true
        
        true
        
        create

    
搭建配置環(huán)境測(cè)試

User

package bb;

/**
 * Created by ozc on 2017/5/15.
 */
public class User {

    private String name;
    private String password;
    private int id;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "name="" + name + """ +
                ", password="" + password + """ +
                "}";
    }
}

IUser接口

public interface IUser {
    void save();
}

UserDao

public class UserDao implements IUser {

    @Override
    public void save() {

    }

}

userService

public class UserService {
    
    private UserDao userDao;

    public void save() {
        userDao.save();
    }
}
測(cè)試Spring環(huán)境

首先,我們為userDao、userService使用Spring來創(chuàng)建對(duì)象,以及添加對(duì)象的依賴關(guān)系,看看Spring的環(huán)境是否成功

創(chuàng)建UserDao實(shí)例--->@Repository

@Repository
public class UserDao implements IUser {

    @Override
    public void save() {

    }

}

創(chuàng)建userService實(shí)例,并注入userDao屬性


@Service
public class UserService {

    @Autowired
    private UserDao userDao;

    public void save() {
        userDao.save();
    }
}

在Spring配置文件中使用注解掃描器





    

測(cè)試:成功得到userService對(duì)象,并且userService對(duì)象含有userDao屬性的值

public class Test2 {

    @Test
    public void test33() {
        ApplicationContext ac = new ClassPathXmlApplicationContext("spring-config.xml");


        UserService userService = (UserService) ac.getBean("userService");
        System.out.println(userService);
    }
}

測(cè)試Hibernate環(huán)境

映射配置文件






    
        
            
        
        
        
    

主配置文件加載映射文件

        

創(chuàng)建SessionFactory,Session

@Repository
public class UserDao implements IUser {

    @Override
    public void save(User user) {

        //得到SessionFactory
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

        //得到Session
        Session session = sessionFactory.openSession();
        session.beginTransaction();

        session.save(user);
        
        session.getTransaction().commit();
        session.close();
    }

}

測(cè)試:

public class Test2 {

    @Test
    public void test33() {
        ApplicationContext ac = new ClassPathXmlApplicationContext("spring-config.xml");


        UserService userService = (UserService) ac.getBean("userService");
        userService.save(new User());

    }
}

使用Spring創(chuàng)建SessionFactory對(duì)象

Spring與Hibernate整合的關(guān)鍵點(diǎn)之一就是使用Spring來創(chuàng)建SessionFactory對(duì)象。其中又有三種方式來創(chuàng)建SessionFactory

直接加載hibernate主配置文件
    
    
        
        
        
    

那么在userDao中就不用我們自己手動(dòng)來創(chuàng)建SessionFactory對(duì)象了。

@Repository
public class UserDao implements IUser {


    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public void save(User user) {

        //得到Session
        Session session = sessionFactory.openSession();
        session.beginTransaction();

        session.save(user);

        session.getTransaction().commit();
        session.close();
    }

}

連接池交給Spring管理

我們知道Hibernate對(duì)C3P0的連接池支持度比不上Spring,因此我們可以使用Spring的連接池。因此我們加載Hibernate的主配置文件又使用Spring的數(shù)據(jù)庫連接池

也就是說,一部分配置在hibernate.cfg.xml,一部分配置在Spring文件中

    
    
        
        
        
        
        
        
        
        
    


    
    

        
        
        
    

配置文件全寫Spring中【推薦】

上面我們一部分是加載Hibernate的主配置文件,一部分是使用Spring配置文件的數(shù)據(jù)庫連接池...這樣不好...我們應(yīng)該在Spring中對(duì)其進(jìn)行同一的管理!





    
    
        
        
        
        
        
        
        
        
    


    
    

        

        
        
            
                org.hibernate.dialect.MySQLDialect
                true
                update
            
        

        


        
        
            
                bb/User.hbm.xml
            
        

    

    

我們推薦的就是使用這一種,就可以少了Hibernate的配置文件了。并且容易統(tǒng)一管理。

Spring管理事務(wù)

到目前為止,我們是使用Hibernate編程式事務(wù)控制管理,Spring與Hibernate整合另一個(gè)關(guān)鍵就是使用Spring對(duì)Hibernate進(jìn)行事務(wù)管理

    
    

        
        
    

    
    

值得注意的是:Spring與Hibernate整合,Spring只支持線程的Session,并且不用我們手動(dòng)配置

userDao

@Repository
public class UserDao implements IUser {


    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public void save(User user) {
        sessionFactory.getCurrentSession().save(user);
    }

}

userService添加@Transactional注解就是為Hibernate添加了事務(wù)管理了。

@Service
@Transactional
public class UserService {

    @Autowired
    private UserDao userDao;

    public void save(User user) {
        userDao.save(user);
    }
}
如果文章有錯(cuò)的地方歡迎指正,大家互相交流。習(xí)慣在微信看技術(shù)文章,想要獲取更多的Java資源的同學(xué),可以關(guān)注微信公眾號(hào):Java3y

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68737.html

相關(guān)文章

  • ssh(Spring+Struts2+hibernate)整合

    摘要:需求整合框架做一個(gè)保存用戶的業(yè)務(wù),業(yè)務(wù)比較簡(jiǎn)單,重在框架整合。 需求:整合ssh框架做一個(gè)保存用戶的業(yè)務(wù),業(yè)務(wù)比較簡(jiǎn)單,重在ssh框架整合。創(chuàng)建數(shù)據(jù)庫和表 CREATE DATABASE ssh01; USE DATABASE; 表由Hibernate創(chuàng)建,可以看配置是否成功 一:導(dǎo)入jar包 Hibernate需要jar Hibernate基本jar mysql驅(qū)動(dòng) ...

    tulayang 評(píng)論0 收藏0
  • 納稅服務(wù)系統(tǒng)【總結(jié)】

    摘要:要是使用到日歷的話,我們想到使用這個(gè)日歷類上面僅僅是我個(gè)人總結(jié)的要點(diǎn),如果有錯(cuò)誤的地方還請(qǐng)大家給我指正。 納稅服務(wù)系統(tǒng)總結(jié) 納稅服務(wù)系統(tǒng)是我第一個(gè)做得比較大的項(xiàng)目(不同于javaWeb小項(xiàng)目),該項(xiàng)目系統(tǒng)來源于傳智Java32期,十天的視頻課程(想要視頻的同學(xué)關(guān)注我的公眾號(hào)就可以直接獲取了) 我跟著練習(xí)一步一步完成需求,才發(fā)覺原來Java是這樣用來做網(wǎng)站的,Java有那么多的類庫,頁面...

    ispring 評(píng)論0 收藏0
  • 慕課網(wǎng)_《基于SSH實(shí)現(xiàn)員工管理系統(tǒng)之框架整合篇》學(xué)習(xí)總結(jié)

    時(shí)間:2017年08月16日星期三說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)源碼:無學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 課程介紹 課程目錄 1.ssh知識(shí)點(diǎn)回顧 2.搭建ssm開發(fā)環(huán)境 3.struts2整合spring 4.spring整合hibernate 5.案例:使用ssh框架開發(fā)...

    icattlecoder 評(píng)論0 收藏0
  • springboot整合hibernate和jpa

    摘要:首先我得先提出幾個(gè)創(chuàng)建的項(xiàng)目的做法一來創(chuàng)建創(chuàng)建之后就能用或來導(dǎo)入這個(gè)項(xiàng)目了二先創(chuàng)建項(xiàng)目,在上安裝相關(guān)的包例如只需引入即可實(shí)現(xiàn)熱部署下面兩個(gè)引入為了操作數(shù)據(jù)庫包添 首先我得先提出幾個(gè)創(chuàng)建springboot的項(xiàng)目的做法: 一、http://start.spring.io/來創(chuàng)建: showImg(https://segmentfault.com/img/bV3jC1?w=1914&h=8...

    smallStone 評(píng)論0 收藏0
  • Java3y文章目錄導(dǎo)航

    摘要:前言由于寫的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個(gè)博客導(dǎo)航。 前言 由于寫的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個(gè)博客導(dǎo)航。 由于更新比較頻繁,因此隔一段時(shí)間才會(huì)更新目錄導(dǎo)航哦~想要獲取最新原創(chuàng)的技術(shù)文章歡迎關(guān)注我的公眾號(hào):Java3y Java3y文章目錄導(dǎo)航 Java基礎(chǔ) 泛型就這么簡(jiǎn)單 注解就這么簡(jiǎn)單 Druid數(shù)據(jù)庫連接池...

    KevinYan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<