spring boot集成hibernate
来源:互联网 发布:mac ifconfig en0 编辑:程序博客网 时间:2024/06/16 04:08
这里主要介绍springboot集成hibernate,通过在dao中注入SessionFactory来访问数据库
创建一个maven项目chapter12-hibernate,pom配置文件如下
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.study</groupId> <artifactId>chapter12-hibernate</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>chapter12-hibernate</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.0.RC1</version> </parent> <dependencies> <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> <exclusions> <exclusion> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc</artifactId> </exclusion> </exclusions></dependency><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency><dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-milestone</id> <url>http://repo.spring.io/libs-milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-milestone</id> <url>http://repo.spring.io/libs-milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories></project>
配置application.properties文件
spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
package com.study.chapter12;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}
创建实体类
package com.study.chapter12.model;import javax.persistence.*;@Entity@Tablepublic class UserDetails {@Id@Column@GeneratedValue(strategy = GenerationType.IDENTITY)private int id;@Columnprivate String firstName;@Columnprivate String lastName;@Columnprivate String email;@Columnprivate String password;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}
创建dao接口
package com.study.chapter12.dao;import java.util.List;import com.study.chapter12.model.UserDetails;public interface UserDao {public List<UserDetails> getUserDetails() ;}
package com.study.chapter12.dao.impl;import java.util.List;import org.hibernate.Criteria;import org.hibernate.SessionFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;import com.study.chapter12.dao.UserDao;import com.study.chapter12.model.UserDetails;@Repositorypublic class UserDaoImpl implements UserDao {@Autowiredprivate SessionFactory sessionFactory;@Overridepublic List<UserDetails> getUserDetails() {Criteria criteria = sessionFactory.openSession().createCriteria(UserDetails.class);return criteria.list();}}
创建service接口
package com.study.chapter12.service;import java.util.List;import com.study.chapter12.model.UserDetails;public interface UserService {public List<UserDetails> getUserDetails();}
创建service接口实现类
package com.study.chapter12.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.study.chapter12.dao.UserDao;import com.study.chapter12.model.UserDetails;import com.study.chapter12.service.UserService;@Servicepublic class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao;public List<UserDetails> getUserDetails() {return userDao.getUserDetails();}}
创建我们的控制器
package com.study.chapter12.controller;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import com.study.chapter12.model.UserDetails;import com.study.chapter12.service.UserService;@Controllerpublic class UserController {@Autowiredprivate UserService userService;@RequestMapping(value = "/list", method = RequestMethod.GET)public ResponseEntity userDetails() {List<UserDetails> userDetails = userService.getUserDetails();return new ResponseEntity(userDetails, HttpStatus.OK);}}
最后步骤,也是最重要的一步:配置注入SessionFactory
新建一个HibernateConfig,该类必须加入@Configuration注解
package com.study.chapter12.config;import javax.persistence.EntityManagerFactory;import org.hibernate.SessionFactory;import org.hibernate.jpa.HibernateEntityManagerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.orm.jpa.vendor.HibernateJpaSessionFactoryBean;@Configurationpublic class HibernateConfig {/** * 配置SessionFactory * /public SessionFactory sesssionFactory(EntityManagerFactory entityManagerFactory){if (entityManagerFactory.unwrap(SessionFactory.class) == null) { throw new NullPointerException("factory is not a hibernate factory"); }else{ return entityManagerFactory.unwrap(SessionFactory.class); }}}
源码下载地址:http://download.csdn.net/detail/guishengbin/9848564
备注:
也可通过如下二种方式配置SessionFactory对象
/**
* 1.在application.properties配置文件中加入:spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext
* 2.配置HibernateJpaSessionFactoryBean
* @Bean
public HibernateJpaSessionFactoryBean sessionFactory() {
return new HibernateJpaSessionFactoryBean();
}
3.在dao中注入SessionFactory
@Autowired
private SessionFactory sessionFactory;
*/
@Bean
public HibernateJpaSessionFactoryBean sessionFactory() {
return new HibernateJpaSessionFactoryBean();
}
/*@Bean
public SessionFactory sessionFactory(HibernateEntityManagerFactory hemf) {
return hemf.getSessionFactory();
}*/
- spring boot集成hibernate
- spring boot集成ehcache 2.x 用于hibernate二级缓存
- IntelliJ IDEA Spring Boot(5) 集成Hibernate
- IntelliJ IDEA Spring Boot(6) 集成Hibernate+Shiro+Ehcache
- Spring Boot 集成MyBatis
- Spring Boot 集成Swagger
- Spring Boot 集成Mybatis
- Spring Boot 集成Swagger
- spring-boot集成mybatis
- Spring Boot 集成Swagger
- Spring Boot 集成Swagger2
- Spring Boot 集成 log4j2
- spring-boot集成shiro
- spring-boot集成Quartz
- Spring Boot集成Swagger2
- Spring boot集成Mybatis
- spring-boot集成MongoDB
- spring-boot集成ActiveMQ
- 小易记单词
- smooth: 对图像进行均值平滑滤波,消除噪声
- Servlet
- 入味
- 树和二叉树
- spring boot集成hibernate
- file的知识
- c++ 中文输出
- WINHEX 数据恢复实用脚本
- 程序设计模式(十) C++ 外观(Facade)模式
- NYOJ
- 剑指Offer——(28)数组中出现次数超过一半的数字
- 【代码笔记】iOS-Label随字自动变大
- docker install on ubuntu 14.04 server