Spring-Boot-JPA hibernate 实例

JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用开发工作;其二,Sun希望整合ORM技术,实现天下归一。
用spring boot创建一个JPA实例需要以下几个步骤:
  •  创建配置文件,默认在src/main/resource下
  •  创建实体类
  •  创建jpa repository类操作持久化(CrudRepository)
  •  创建service类
  •  创建controller
  •  测试
 首先建一个maven项目,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.ziyu.springboot</groupId>
  <artifactId>boot3</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  	
  	<!-- spring boot 必须引入的 -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.2.RELEASE</version>
	</parent>
	
	<dependencies>
		<!-- spring boot devtools热部署 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<optional>true</optional><!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖myboot项目的项目如果想要使用devtools,需要重新引入 -->
		</dependency>
		<!-- spring boot 必须依赖的 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- mysql驱动配置依赖包 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<!-- 添加spring-data-jpa依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
	</dependencies>
	
	<build>
		<finalName>${project.artifactId}</finalName>
		<plugins>
			<!-- 资源文件拷贝插件 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<configuration>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
			<!-- java编译插件 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
		</plugins>
		<pluginManagement>
			<plugins>
				<!-- 配置Tomcat插件 -->
				<plugin>
					<groupId>org.apache.tomcat.maven</groupId>
					<artifactId>tomcat7-maven-plugin</artifactId>
					<version>2.2</version>
				</plugin>
				<plugin>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-maven-plugin</artifactId>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
  
</project>

然后在src/main/resource目录下创建一个配置文件application.properties,代码如下:

######  mysql连接池    #######
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456789
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#####   spring jpa #######
spring.jpa.database=MYSQL
#  显示mysql语句
spring.jpa.show-sql=true
#  对应的mysql操作
spring.jpa.hibernate.ddl-auto=update
#  命名策略,创建实体类后悔自动在表中创建表结构
spring.jpa.hibernate.naming.strategy=org.hibernate.cfg.ImprovedNamingStrategy
 之后在src/main/java目录下创建一个包,包名随便,比如com.ziyu.hibernate,然后在该包下创建四个包,包名分别是:  bean,controller,repository,service

在bean包下创建一个实体类Cat.java,代码如下:
package com.ziyu.hibernate.bean;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

/*
 * @Entity  会在数据库中产生对应的表结构信息
 * 
 * @id      指定主键
 * 
 * GeneratedValue(strategy=GenerationType.AUTO)指定主键的生成策略 ,mysqk默认是自增长
*/
@Entity
public class Cat {

	@Id @GeneratedValue(strategy=GenerationType.AUTO)
	private int id;
	
	private String catName;
	
	private int catAge;

	public int getId() {
		return id;
	}

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

	public String getCatName() {
		return catName;
	}

	public void setCatName(String catName) {
		this.catName = catName;
	}

	public int getCatAge() {
		return catAge;
	}

	public void setCatAge(int catAge) {
		this.catAge = catAge;
	}
	
	
	
}
 在com.ziyu.hibernate目录下创建一个启动类HelloApplication.java,代码如下:

package com.ziyu.hibernate;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


@Controller
@SpringBootApplication(exclude = { RedisAutoConfiguration.class })
@Configuration
@EnableAutoConfiguration
public class HelloApplication {

	public static void main(String[] args) {
		SpringApplication app = new SpringApplication(HelloApplication.class);
		app.setBannerMode(org.springframework.boot.Banner.Mode.OFF);
		app.run(args);

		
	}
}
 启动spring boot,在HelloApplication右键Run As > Java Application
如果在test数据库里生成了一个cat表如下图,那么就到这里就已经初步完成了!


接下来在respository包下新建一个接口CatRepository,该接口继承了CrudRepository<Cat, Integer>,代码如下:

package com.ziyu.hibernate.repository;

import org.springframework.data.repository.CrudRepository;

import com.ziyu.hibernate.bean.Cat;

public interface CatRepository extends CrudRepository<Cat, Integer>{

}
 之后在service层创建一个类CatService,代码如下:
package com.ziyu.hibernate.service;

import javax.annotation.Resource;
import javax.transaction.Transactional;

import org.springframework.stereotype.Service;

import com.ziyu.hibernate.bean.Cat;
import com.ziyu.hibernate.repository.CatRepository;

@Service
public class CatService {
	
	@Resource
	private CatRepository catRepository;
	/*	
	 * 
	 * update,save,delete都方法需要绑定事务
	 * 
	 * 用@Transactional进行事务绑定
	*/
	@Transactional
	public void save(Cat cat) {
		catRepository.save(cat);
	}
	
	@Transactional
	public void delete(int id) {
		catRepository.delete(id);
	}
	
	public Iterable<Cat> getAll() {
		return catRepository.findAll();
	}
}

最后在controller层创建CatController,代码如下:
package com.ziyu.hibernate.controller;

import java.util.Iterator;

import javax.annotation.Resource;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.ziyu.hibernate.bean.Cat;
import com.ziyu.hibernate.service.CatService;

@RequestMapping("/cat")
@RestController
public class CatController {

	@Resource
	private CatService catService;
	
	@RequestMapping("/save")
	public String save() {
		Cat cat = new Cat();
		cat.setCatName("peety");
		cat.setCatAge(18);
		catService.save(cat);
		return "save ok";
	}
	
	@RequestMapping("/del")
	public String del() {
		catService.delete(1);
		return "del ok";
	}
	
	@RequestMapping("/getAll")
	public Iterator<Cat> getAll() {
		return catService.getAll().iterator();
	}
}
做到这里代码就已经全部完成了,接下来启动HelloApplication测试:
浏览器输入地址:http://localhost:8080/cat/save 看到如下结果:


接着输入地址:http://localhost:8080/cat/getAll,结果如下:


再测试delete ,http://localhost:8080/cat/del ,结果如下:


OK,测试成功!!
有问题的可以再下面留言。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值