springboot整合hibernate


看完了上一篇文章,相信對hibernate有了點了解,再看看springboot整合hibernate

1使用springinit選擇jpa和mysqldriv和web快速搭建

2創建普通maven在pom.xml文件里面添加要使用的jpa依賴:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

下面再看看完整版的依賴

  <dependencies>

            <!-- 添加對jsp視圖解析的支持 -->
            <dependency>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-jasper</artifactId>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
            </dependency>


            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>


            <!-- 下面兩個引入為了操作數據庫 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>



            <dependency> 
                <groupId>org.springframework.boot</groupId> 
                <artifactId>spring-boot-starter-tomcat</artifactId> 
                <scope>provided</scope> 
            </dependency>

            <!-- 只需引入spring-boot-devtools 即可實現熱部署 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
            </dependency>

            <!-- Json包 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.16</version>
            </dependency>

            <!-- 為了監控數據庫 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.0.25</version>
            </dependency>


            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>3.14</version>
            </dependency>

            <!-- Junit 單元測試 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>

            <dependency> 
                <groupId>io.springfox</groupId> 
                <artifactId>springfox-swagger2</artifactId> 
                <version>2.6.0</version> 
            </dependency> 
            <dependency> 
                <groupId>io.springfox</groupId> 
                <artifactId>springfox-swagger-ui</artifactId> 
                <version>2.6.0</version> 
            </dependency>

 

添加依賴之后需要配置一些連接mysql所需要的配置,創建一個application.properties:

resources下的應用配置文件application.properties。在myecplise里面創建配置文件是放在src文件夾下面,

但是最后編譯出來的文件還是在classes文件夾下面 

先來個最簡單的

spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root

再看個加強版本

 # 數據庫訪問配置
    # 主數據源,默認的
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    spring.datasource.url=jdbc:mysql://localhost:3306/test
    spring.datasource.username= root
    spring.datasource.password= root
    spring.datasource.driverClassName = com.mysql.jdbc.Driver


    # 下面為連接池的補充設置,應用到上面所有數據源中
    # 初始化大小,最小,最大
    spring.datasource.initialSize=5
    spring.datasource.minIdle=5
    spring.datasource.maxActive=20
    # 配置獲取連接等待超時的時間
    spring.datasource.maxWait=60000
    # 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 
    spring.datasource.timeBetweenEvictionRunsMillis=60000
    # 配置一個連接在池中最小生存的時間,單位是毫秒 
    spring.datasource.minEvictableIdleTimeMillis=300000
    spring.datasource.validationQuery=SELECT 1 FROM DUAL
    spring.datasource.testWhileIdle=true
    spring.datasource.testOnBorrow=false
    spring.datasource.testOnReturn=false
    # 打開PSCache,並且指定每個連接上PSCache的大小 
    spring.datasource.poolPreparedStatements=true
    spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
    # 配置監控統計攔截的filters,去掉后監控界面sql無法統計,'wall'用於防火牆 
    spring.datasource.filters=stat,wall,log4j
    # 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄
    spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
    # 合並多個DruidDataSource的監控數據
    spring.datasource.useGlobalDataSourceStat=true


    #JPA Configuration:  
    spring.jpa.database=MYSQL
    # Show or not log for each sql query
    spring.jpa.show-sql=false
    spring.jpa.generate-ddl=true  
    # Hibernate ddl auto (create, create-drop, update)
    spring.jpa.hibernate.ddl-auto=create  
    #spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect  
    spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy  
    #spring.jpa.database=org.hibernate.dialect.MySQL5InnoDBDialect 
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect


    spring.mvc.view.prefix=/WEB-INF/view/
    spring.mvc.view.suffix=.jsp
    #spring.resources.static-locations=classpath:/resources/,classpath:/static/

若需要部署到外部的tomcat容器中,則添加下面類即可。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;
/**
 * 修改啟動類,繼承 SpringBootServletInitializer 並重寫 configure 方法
 * @author ZSX
 *
 */
public class SpringBootStartApplication extends SpringBootServletInitializer {

    private static final Logger logger = LoggerFactory.getLogger(SpringBootStartApplication.class);

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(Application.class);
    }

}

 然后創建實體類

這里創建一個簡單的User實體類,需要用到javax中的Entity,Id,GeneratedValue與GenerationType注解.
Entity用於標識實體類,Id用於標識主鍵,GeneratedValue與GenerationType用於配置主鍵.

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    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;
    }
}

 

 創建倉庫UserRepository保存用戶記錄.需要繼承CrudRepository<T,ID>,第一個類型為實體類,第二個類型為主鍵類型.

import org.springframework.data.repository.CrudRepository;

public interface UserRepository extends CrudRepository<User,Integer>
{
}

其余交給hibernate

如控制層的controller就這樣

@Controller
@RequestMapping(path = "/demo")
public class MainController {
    @Autowired
    private UserRepository userRepository;

    @PostMapping(path = "/add")
    public @ResponseBody String addNewUser(@RequestParam String name)
    {
        User user = new User();
        user.setName(name);
        userRepository.save(user);
        return "Saved.";
    }

    @GetMapping(path = "/all")
    public @ResponseBody Iterable<User> getAllUsers()
    {
        return userRepository.findAll();
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM