JPA(Java Persistence API)
Java持久层API,是JDK 5.0注解或XML描述对象 - 关系表的映射关系,并将运行期的实体[对象持久化到数据库中。
ORM
对象关系映射(Object Relational Mapping):通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。ORM提供了对数据库的映射,不用sql直接编码,能够像操作对象一样从数据库获取数据。
JPA包括以下三方面的技术
1、ORM映射元数据
JPA支持XML和JDK5.0注释两种元数据形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。
2、Java持久化API
用来操作实体对象,执行CRUD操作,框架在后台替我们完成。
3、查询语言(JPQL)
这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。
注解
@Entity注解:@Entity 是一个类注解,用来注解该类是一个实体类用来进行和数据库中的表建立关联关系
@Table注解,指定当前实体类关联的表
@Entity
@Table(name = "user_info")
public class User {
}
@Id 类的属性注解,该注解表明该属性字段是一个主键,该属性必须具备,不可缺少。
@GeneratedValue 该注解通常和 @Id 主键注解一起使用,用来定义主键的呈现形式。
@Column 是一个类的属性注解,该注解可以定义一个字段映射到数据库属性的具体特征,比如字段长度,映射到数据库时属性的具体名字等。
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Integer userId;
@Column(name = "login_phone_number")
private String loginPhoneNumber;
@Column(name = "user_real_name")
private String userRealName;
@Transactional 声明式事务:Spring框架使用AOP实现
@Autowired 自动装配
@Qualifier(指定注入Bean的名称)如果容器中有一个以上匹配的Bean,则可以通过@Qualifier注解限定Bean的名称
@Resource后面没有任何内容,默认通过name属性去匹配bean,找不到再按type去匹配
@Component 所有受Spring 管理组件的通用形式
@Controller 对应的是web层的Bean
@RestController 注解包含了@Controller注解和@ResponseBody注解 。返回 json 格式。
@Service对应的是业务层Bean
@Repository对应数据访问层Bean
@Primary:自动装配时当出现多个Bean时,被注解为@Primary的Bean将首先被选择