Java Persistence API(jpa)

1简述:

然说jap这个东西很老很老,快老到掉牙了,之前从来没有使用过这个玩意,基本都是ssm了,现在也很少有人使用ssh啦,但是真还别说,这个玩意针对单表的操作简直是优秀呀,就是扩展性质差了点,持久层依赖的是Hibernate,听说Hibernate这个框架是个重量级框架啦,现在被mybatis替代了,但是在一些老的项目中还是能见到的,Hibernate这个框架咋也没用,但是以前面试官被问到过,巴拉巴拉巴拉........省略一万字,今天研究了一下Spring对Hibernate的封装呀,就是目标对象jpa啦

2 model主要注解(我感觉,最大优点是根据实体类创建表.):

@Entity:标注model类(实体类)

@Id:实体类注解

@GeneratedValue:主键生成器

@Column: 指定数据库中生成的字段信息

3 配置文件(这玩意配置文件很简洁):

server:
  port: 8088
spring:
  datasource: #数据源
    driver-class-name: com.mysql.cj.jdbc.Driver #数据库驱动
    url: jdbc:mysql://localhost:3306/stu?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai  # 数据库的 JDBC URL
    username: root  #数据库的登录用户名
    password: root   #数据库的登录密码
  application:
    name: jpa
  jpa:
    show-sql: true
    hibernate:
      ddl-auto: update
    ##各个参数说明:
    # update: 第一次加载hibernate会根据实体类建立数据库表结构,以后加载hibernate会根据实体类更新表结构,即使表结构改变了,表中以前的数据仍然会保存着,不会删除以前的数据,部署以后表不会立马建立起来,第一次运行起来才会更新表
    # create: 每次加载hibernate都会重新建立表,删除以前数据,即使实体类没有任何变化
    # create-drop:每次加载hibernate都会建立表,以前的数据都会删除,但是sessionFactory一旦关闭,表就自动删除
    # validate:每次加载加载hibernat验证创建表结构,只会和数据库中的表比较,不会创建新的表,但是会存储数据

4实现: 

mode类:


@Builder
@Data
@Entity
@AllArgsConstructor
@NoArgsConstructor
public class Apple {
    @Id
    @GeneratedValue
    //@GeneratedValue(strategy = GenerationType.TABLE)//根据实际情况进行选择
    private Long id;
    /**
     * 指定生成的字段信息
     */
    @Column(length = 10)
    private String color;
    private Integer count;
    private String address;
    private Double money;
}

Repository泛型指明model类型,主键类型:


@Repository
public interface AppleRepository extends JpaRepository<Apple, String> {

    @Query("select a from apple a")
    public List<Apple> select();

    @Query("delete from apple where id=1")
    //自定的方法必须添加下面的注解
    @Transactional
    @Modifying
    public void delete1(@Param("id") String id);

}

注意: 自定义的持久层方法必须添加注解 @Transactional, @Modifying否则无效

jpa就到这吧!这个简单了解一下就好了,主要还是使用mp比较, mp才是永远的神!

猜你喜欢

转载自blog.csdn.net/weixin_45874214/article/details/126201505
今日推荐