什么是JPA?
JPA全称为Java Persistence API ,Java持久化API是Sun公司在Java EE 5规范中提出的Java持久化接口。JPA吸取了目前Java持久化技术的优点,旨在规范、简化Java对象的持久化工作。使用JPA持久化对象,并不是依赖于某一个ORM框架。
为什么要使用JPA?
ORM 是Object-Relation-Mapping,即对象关系影射技术,是对象持久化的核心。ORM是对JDBC的封装,从而解决了JDBC的各种存在问题。JPA的实现框架主要有Hibernate、TopLink、JDO等,主要接口有CrudRepository、JpaRepository。
用户数据访问层的接口
1.该接口需要继承JpaRepository接口2.继承接口时,需要通过泛型指定进行数据持久化操作时,所对应的Entity实体类+逐渐类型
@Repository
publicinterfaceIuserDAOextendsJpaRepository<User,Integer>{
List<User>findUserByLoginPhoneNumber(StringphoneNumber);
List<User>findUserByLoginPhoneNumberLike(StringloginPhoneNumber);
}
创建实体类和映射的注解
JPA 基本注解:1.@Entity 标注用于实体类声明语句之前,指出该Java 类为实体类,将映射到指定的数据库表。2.@Table 映射表格a)常和@Entity配合使用。b)Name可选,表示表的名称。3.@Id 映射生成主键:通常置于属性声明语句之前,也可置于属性的getter方法之前。必须有,定义了映射到数据库表的主键属性4.@GeneratedValue 用于标注主键的生成策略,通过 strategy 属性指定。(strategy=GenerationType.AUTO)主键策略:a)IDENTITY:采用数据库 ID自增长的方式来自增主键字段b)AUTO: JPA自动选择合适的策略,是默认选项;c)SEQUENCE:通过序列产生主键5.@Column 映射表格列 (可选):常用属性是 name,用于设置映射数据库表的列名。
//标注当前类为持久化层的实体类,该类型的对象,可以进行ORM操作
@Entity
//标注当前实体类对应的数据库的“数据表的名称”
@Table(name="user_info")
publicclassUserimplementsSerializable{
@Id//标注当前属性为主键字段
@GeneratedValue(strategy=GenerationType.IDENTITY)//标注当前主键的生成方式
@Column(name="user_id")//标注当前属性对象的“数据表中的字段名称”
privateIntegeruserId;
//标注当前属性对应的"数据表的字段名称“
@Column(name="login_phone_number")
privateStringloginPhoneNumber;
@Column(name="user_real_name")
privateStringuserRealName;
@Column(name="last_login_time")
privateDatelastLoginDateTime;
}