SpringBoot整合Jpa(6)

摘自百度百科

JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体 对象持久化到数据库中。  [1]  
Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用开发工作;其二,Sun希望整合ORM技术,实现天下归一。

优势:

标准化

JPA 是 JCP 组织发布的 Java EE 标准之一,因此任何声称符合 JPA 标准的框架都遵循同样的架构,提供相同的访问 API,这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。
容器级特性的支持
JPA框架中支持大数据集、 事务、并发等容器级事务,这使得 JPA 超越了简单持久化框架的局限,在企业应用发挥更大的作用。

简单方便

JPA的主要目标之一就是提供更加简单的编程模型:在JPA框架下创建实体和创建Java 类一样简单,没有任何的约束和限制,只需要使用 javax.persistence.Entity进行注释,JPA的框架和接口也都非常简单,没有太多特别的规则和设计模式的要求,开发者可以很容易地掌握。JPA基于非侵入式原则设计,因此可以很容易地和其它框架或者容器集成。

查询能力

JPA的查询语言是 面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句,可以看成是Hibernate HQL的等价物。JPA定义了独特的 JPQL(Java Persistence Query Language),JPQL是EJB QL的一种扩展,它是针对实体的一种查询语言,操作对象是实体,而不是关系数据库的表,而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持 子查询。

高级特性

JPA 中能够支持 面向对象的高级特性,如类之间的继承、 多态和类之间的复杂关系,这样的支持能够让开发者最大限度的使用面向对象的模型设计企业应用,而不需要自行处理这些特性在关系数据库的持久化。

整合第一步:需要引入jpa的依赖

         


		
			mysql
			mysql-connector-java
		
		 
        
            org.springframework.boot
            spring-boot-starter-data-jpa
        

第二步:创建实体类entity

             

@Entity(name = "user_t")//数据库表名称
public class User {

	@Id//主键
	@GeneratedValue//自增长
	private int id;
	@Column//数据库对应的字段
	private String user_name;
	@Column
	private String password;
	@Column
	private Integer age;

第三步:创建dao 层

            

import org.springframework.data.jpa.repository.JpaRepository;

import cn.icloudit.entity.User;

public interface UserDao extends JpaRepository{
	
}

第四步:创建service层 

     

@Autowired
	private UserDao userDao;
	
	public User getById(Integer id){
		return userDao.findOne(id);
	}

第五步:创建controller层

   

@RestController
public class UserController {

	@Autowired
	private UserService userService;
	
	@RequestMapping("/findById")
	public User findById(){
		User user = userService.getById(21);
		return user;
	}
}

第六步:在启动类中加上对实体类以及dao层包的扫描

         

@EnableJpaRepositories("cn.icloudit.dao")
@EntityScan("cn.icloudit.entity")

第七步:启动

 SpringBoot整合Jpa(6)_第1张图片

整合成功

你可能感兴趣的:(SpringBoot)