spring data jpa 学习笔记
springboot 集成 springData Jpa
1.在pom.xml添加依赖
1 <!-- SpringData-Jpa依赖--> 2 <dependency 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-starter-data-jpa</artifactId> 5 </dependency> 6 7 <!-- mysql驱动:com.mysql.jdbc.Driver -->
2.application.xml中配置数据库连接信息,自动创建表结构设置
1 spring.datasource.url=jdbc:mysql://localhost:3306/test 2 spring.datasource.username=root 3 spring.datasource.password=123456 4 spring.datasource.driver-class-name=com.mysql.jdbc.Driver 5 spring.jpa.properties.hibernate.hbm2ddl.auto=create-drop
Spring-data-jpa依赖于Hibernate
spring.jpa.properties.hibernate.hbm2ddl.auto是hibernate的配置属性,主要作用是:自动创建、更新、验证数据库表结构
参数配置介绍:
create:
每次加载hibernate时都会删除上一次的生成的表,
然后根据model类重新生成表,哪怕没有改变,
这是导致数据库表数据丢失的一个重要原因。
create-drop:
每次加载hibernate时根据model类生成表,但sessionFactory关闭时,表自动删除。
update:最常用
首次加载hibernate时根据model类自动建立起表结构(要先建立数据库)
以后加载hibernate时根据model类自动更新表结构,即使表结构变了,老数据不删除。
注意:当部署到服务器后,表结构不会立即建立起来,应用首次运行后才会建立表结构。
validate:
每次加载hibernate时,验证创建数据库表结构,和数据库表比较,不创建新表,会插入新值。
创建User实体,会被映射到数据库
hibernate.hbm2ddl.auto,应用启动时自动创建表
1 @Entity 2 public class User { 3 4 //没有默认构造会报错 5 public User(){ 6 7 } 8 9 public User(String name, Integer age) { 10 this.name = name; 11 this.age = age; 12 } 13 14 @Id 15 @GeneratedValue 16 private Long id; 17 18 @Column(nullable = false) 19 private String name; 20 21 @Column(nullable = false) 22 private Integer age; 23 24 public Long getId() { 25 return id; 26 } 27 28 public void setId(Long id) { 29 this.id = id; 30 } 31 32 public String getName() { 33 return name; 34 } 35 36 public void setName(String name) { 37 this.name = name; 38 } 39 40 public Integer getAge() { 41 return age; 42 } 43 44 public void setAge(Integer age) { 45 this.age = age; 46 } 47 48 }
Dao接口 继承 JpaRepository接口 完成数据访问
1 public interface UserRepository extends JpaRepository<User, Long> { 2 3 User findByName(String name); 4 5 @Query("from User u where u.name=:name") 6 User findUser(@Param("name") String name); 7 8 }