1. 程式人生 > >spring boot基礎搭建(三)

spring boot基礎搭建(三)


重新配置hibernate:

在config包下建立HibernateConfiguration類如下:

程式碼:

package com.config;


import org.hibernate.SessionFactory;

import org.springframework.beans.factory.annotation.Qualifier;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.context.annotation.

Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.orm.hibernate5.HibernateTransactionManager;

import org.springframework.orm.hibernate5.LocalSessionFactoryBean;


import javax.sql.DataSource;

import java.util.Properties;


/**

* Created by onion on 2017-03-30 15:18.

*/

@Configuration

public class HibernateConfiguration {


//配置sessionFactory

@Bean

public LocalSessionFactoryBean sessionFactory(@Qualifier("dataSource") DataSource dataSource,

@Value("${spring.hibernate.packageScan}") String packageScan,

@Value("${spring.jpa.properties.hibernate.dialect}"

) String dialect,

@Value("${spring.jpa.show-sql}") String showSql,

@Value("${spring.jpa.properties.hibernate.format_sql}") String formatSql,

@Value("${spring.jpa.properties.hibernate.use_sql_comments}") String useSqlComments,

@Value("${spring.jpa.hibernate.ddl-auto}") String ddlAuto) {

      LocalSessionFactoryBean localSessionFactoryBean = new LocalSessionFactoryBean();

      localSessionFactoryBean.setDataSource(dataSource);

      localSessionFactoryBean.setPackagesToScan(packageScan);

      Properties properties = new Properties();

      properties.setProperty("hibernate.dialect", dialect);

      properties.setProperty("hibernate.show_sql", showSql);

      properties.setProperty("hibernate.format_sql", formatSql);

      properties.setProperty("hibernate.use_sql_comments", useSqlComments);

      properties.setProperty("hibernate.hbm2ddl.auto", ddlAuto);

      localSessionFactoryBean.setHibernateProperties(properties);

return localSessionFactoryBean;

  }


//配置hibernate事務處理

@Bean

public HibernateTransactionManager transactionManager(SessionFactory sessionFactory) {

      HibernateTransactionManager transactionManager = new HibernateTransactionManager();

      transactionManager.setSessionFactory(sessionFactory);

return transactionManager;

  }


}


然後在application.properties新增以下程式碼:

spring.jta.transaction-manager-id=transactionManager

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

spring.hibernate.packageScan=com.tgb.model


將UserService程式碼修改為:

package com.tgb.service;


import com.tgb.dao.UserDao;

import com.tgb.model.User;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Transactional;


import java.util.List;


/**

* Created by onion on 2017-03-28 09:11.

*/

@Service

@Transactional(rollbackFor = Exception.class)

public class UserService {

@Autowired

private UserDao userDao;


public User addUser(User user) {

      User user1 = new User();

      user1.setName("測試資料");

      user1.setAge(2);

userDao.save(user1);

int i = 10/0;

return userDao.save(user);

  }


@Transactional(readOnly = true)

public List<User> getAll() {

return userDao.findAll();

  }

}

上面的Transactional(rollbackFor = Exception.class)註解是設定事務處理。

在addUser方法中我們int i = 10/0 會出現異常。當出現異常資訊時候我們實現了資料回滾。


在dao包下新建impl包,如下:

在dao包下新建GenericDao類,如下:

其中程式碼:

package com.tgb.dao;


import java.util.List;


/**

* Created by onion on 2017-03-30 15:57.

*/

public interface GenericDao<T, PK> {


void save(T entity);


void delete(T entity);


void deleteAll(List<T> entities);


void saveOrUpdate(T entity);


T findById(PK id);


void update(T entity);


  List<T> findAll(Object... args);


  Object getUniqueObject(String hql, Object... params);


  List<T> findAllbyhql(String hql);


void deletebyhql(String hql);


  List<T> queryPage(T entity, int page, int rows);


}

在dao.impl下建立類GenericDaoImpl,如下:

程式碼:

package com.tgb.dao.impl;


import com.tgb.dao.GenericDao;

import org.hibernate.HibernateException;

import org.hibernate.Query;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.orm.hibernate5.HibernateCallback;

import org.springframework.orm.hibernate5.support.HibernateDaoSupport;

import java.io.Serializable;

import java.lang.reflect.ParameterizedType;

import java.util.List;


/**

* Created by onion on 2017-03-30 15:59.

*/

public class GenericDaoImpl <T, PK extends Serializable> extends HibernateDaoSupport implements GenericDao<T, PK> {


@Autowired

public void InitSession(SessionFactory sessionFactory) {

      setSessionFactory(sessionFactory);

  }


private Class<T> clazz;


public GenericDaoImpl() {

clazz = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];

  }


@Override

public void save(T entity) {

      getHibernateTemplate().save(entity);

  }


@Override

public T findById(PK id) {

return getHibernateTemplate().get(clazz, id);

  }


@Override

public void update(T entity) {

      getHibernateTemplate().update(entity);

  }


@Override

public void saveOrUpdate(T entity) {

      getHibernateTemplate().saveOrUpdate(entity);

  }


@Override

public void delete(T entity) {

      getHibernateTemplate().delete(entity);

  }


@Override

public void deleteAll(List<T> entities) {

      getHibernateTemplate().deleteAll(entities);

  }


@Override

public List<T> findAll(Object... args) {

return (List<T>) getHibernateTemplate().find("from " + clazz.getName(), args);

相關推薦

spring boot基礎搭建

重新配置hibernate: 在config包下建立HibernateConfiguration類如下: 程式碼: package com.config; im

Spring Boot實戰筆記-- Spring常用配置Bean的初始化和銷毀、Profile

div nbsp troy string 實例化 public ive work 初始 一、Bean的初始化和銷毀   在我們的實際開發的時候,經常會遇到Bean在使用之前或之後做些必要的操作,Spring對Bean的生命周期操作提供了支持。在使用Java配置和註解配置下提

Spring Boot參考教程內部應用監控Actuator

使用方式 實現類 pat igp pid localhost aid 倉庫 默認 3. 內部應用監控(Actuator) 如上2.4中所述,傳統spring工程中工程的初始化過程,bean的生命周期,應用的內部健康情況均無法監控,為了解決這個問題,spring boot提供

spring boot入門筆記 - banner、熱部署、命令行參數

nal rop dep ioc devtools 一點 一個 splay option   1、一般項目啟動的時候,剛開始都有一個《spring》的標誌,如何修改呢?在resources下面添加一個banner.txt就行了,springboot會自動給你加載banner.

Spring Boot學習筆記—— 新增Mybatis、Druid

一、前言 之前我們對Spring Boot的View和Control配置都有了一定的瞭解,在Model層配置上,我們將使用Mybatis、Druid進行開發,下面就對其進行配置。 二、開始配置 MyBatis 是一款優秀的持久層框架,Druid是一個高效能的資料庫連線池,並且提供

spring boot 整合 jpa -- 之表關係對映

spring boot 整合 jpa (一) – 之基礎配置 https://blog.csdn.net/qq_41463655/article/details/82939481 spring boot 整合 jpa (二) – 之資料操作 https://blog.csdn.net/q

Spring Boot 最佳實踐模板引擎FreeMarker整合

一、FreeMaker介紹 FreeMarker是一款免費的Java模板引擎,是一種基於模板和資料生成文字(HMLT、電子郵件、配置檔案、原始碼等)的工具,它不是面向終端使用者的,而是一款程式設計師使用的元件。 FreeMarker最初設計是用來在MVC模式的Web

Spring boot使用總結校驗[email protected] 使用

spring boot 1.4預設使用 hibernate validator 5.2.4 Final實現校驗功能。hibernate validator 5.2.4 Final是JSR 349 Bean Validation 1.1的具體實現。 一 初步使用

Spring Boot學習筆記檔案上傳與訪問靜態檔案

檔案上傳 寫法和Spring MVC沒啥區別看起來 package org.test.Controll; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.we

Spring Boot學習筆記——使用JPA查詢資料庫返回需要的資料

1.概述 在上一篇中,我們已經學會了如何建立執行一個Spring Boot程式,但是他還遠遠滿足不了一個網站的基本需求,完成這篇的學習後我們就能實現一個簡單的雛形。 2.目標 在本篇中,實現的簡單的資料庫訪問,讀取資料的功能。 3.詳細步驟 (1)在第

CentOS 7 spring boot專案上線

  域名註冊 百度阿里雲 搜尋框搜素 域名  com 或 cn選一個進去   點選加入清單下方會提示選擇 :需要實名認證才能購買         

Spring Boot 學習筆記Spring boot 中的SSM

Spring boot 下的 Spring mvc @Controller:即為Spring mvc的註解,處理http請求; @RestController:Spring4後新增註解,是@Controller與@ResponseBody的組合註解,用於返回字串或json資料; package c

spring boot +WebSocket 點對點式

前兩篇部落格演示了廣播式的websocket 推送。 廣播式有自己的應用場景,但是廣播式不能解決我門一個常見的場景,即訊息由誰傳送、由誰接收的問題。 本例中演示了一個簡單的聊天室程式。例子中只有兩個使用者,互相傳送訊息給彼此,因需要使用者相關內容,所以這裡引

Spring boot Caffeine快取——使用註解

註解在Spring中的應用很廣泛,幾乎成為了其標誌,這裡說下使用註解來整合快取。 cache方面的註解主要有以下5個 @Cacheable 觸發快取入口(這裡一般放在建立和獲取的方法上) @CacheEvict 觸發快取的eviction(用於刪除的

Spring Boot學習之Spring Boot的核心

1、Spring Boot的專案一般都會有*Application的入口類,入口類中會有main方法,這是一個標準的Java應用程式的入口方法。 @SpringBootApplication註解是Spring Boot的核心註解,它其實是一個組合註解:下面我們

Spring Boot常用註解

一.概述 Spring Boot推薦使用java配置完全代替XML配置,java配置是通過@Configration和@Bean註解實現的 @Configration註解聲明當前類是一個配置類,相當於Spring中的一個XML檔案 @Bean註解作用在方法

spring-springmvc搭建springMVC添加對靜態資源訪問的支持及對Fastjson的支持

gmv port ack register repos servle 配置 als img 1.添加對靜態資源.js/.img/.css的訪問 方式有3種: 1,更改springmvc 的DispatherServlet的urlpattern的路徑改為“/*

nodejs web應用伺服器搭建:業務的實現+mongo的基礎使用

前言 本章節主要是關注業務實現的,就是持久層資料的CURD操作,和業務處理。 資料: mongoose 文件 其他章節連結: nodejs web應用伺服器搭建(一):跑起你的伺服器 nodejs web應用伺服器搭建(二):express 框架說明(應用) nodej

Spring Boot 學習筆記—— 快速搭建Spring Boot專案

一、前言 Spring Boot是Spring系列框架的整合,使用“習慣優於配置”的理念快速搭建專案,在專案打包時還能根據需求打包為jar(內建servlet容器)或war檔案,相對以前的Spring、Spring MVC來說Spring Boot並沒有技術上的升級,而是為我們做好了大部

spring boot 整合 jpa -- 之基礎配置

spring boot 整合 jpa (二) – 之資料操作 https://blog.csdn.net/qq_41463655/article/details/82939560 spring boot 整合 jpa (三) – 之表關係對映 https://blog.csdn.ne