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才是永远的神!