基本概念
ORM:object-relational metadata,对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
JPA:Java Persistence API的简称,中文名为Java持久层API,用注解或XML描述对象和关系表的映射关系,并将运行期的实体对象持久化到数据库中。
JPQL:面向对象的查询语言-Java Persistence Query Language(JPQL)。通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。
Spring Data: Spring 的一个子项目。用于简化数据库访问,支持NoSQL和关系数据库存储。其主要目标是使数据库的访问变得方便快捷。
Spring data JPA:Spring Data JPA是Spring Data家族的一部分,可以轻松实现基于JPA的存储库。 此模块处理对基于JPA的数据访问层的增强支持。 它使构建使用数据访问技术的Spring驱动应用程序变得更加容易。
Spring data JPA主要类结构图:
Spring-Data-JPA依赖配置
<!-- JPA依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- WEB依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Mysql依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
配置文件
#mysql数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#jpa基本配置
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto有以下几种配置:
• validate:在加载hibernate时,验证创建数据库表结构。
• create:每次加载hibernate,重新创建数据库表结构,设置时要注意,如果设置错误的话,就会造成数据的丢失。
• create-drop:在加载的时候创建表,在关闭项目时删除表结构。
• update:加载时更新表结构。
• none:加载时不做任何操作。
spring.jpa.show-sql设置为true时,可以在控制台打印SQL
创建实体对象
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(nullable = false,unique = true)
private String username;
@Column
private String password;
@Entity表明这是一个实体类
@Id表明这是数据库中的主键ID
@GeneratedValue(strategy = GenerationType.AUTO)表明此字段自增长
@Collumn可以设置字段的属性如nullable为非空,unique唯一约束
创建数据操作层
public interface UserRepository extends CrudRepository<User, Long> {
}
创建控制层
@Controller
@RequestMapping("/demo")
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping("/add")
public void addNewUser(String username,String password){
User user = new User(username,password);
userRepository.save(user);
}
@GetMapping("/all")
@ResponseBody
public Iterable<User> getAllUsers(){
return userRepository.findAll();
}
}
运行测试
报错:BeanCreationException
解决方法:
在主运行类上加@EnableJpaRepositories注解
@SpringBootApplication
@EnableJpaRepositories
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
测试成功: