JPA Day2

1.JPA的主键生成策略

@GeneratedValue(strategy = GenerationType.AUTO) -- 默认根据方言来选择(默认)
@GeneratedValue(strategy = GenerationType.IDENTITY) -- ID自增长策略。只能用于支持ID自增长的数据库
@GeneratedValue(strategy = GenerationType.SEQUENCE) --用于有序列的数据库,如Oracle
@GeneratedValue(strategy = GenerationType.TABLE) --兼容性好支持mysql也支持oracle,但是每创建一个表就会生成另一个序列表,性能低

设置了@GeneratedValue主键自增就不要再手动设置主键的值,因为该主键值已经交给jpa进行维护

2.JPA的实体状态

(1)瞬时状态
​	刚刚new 创建出来,没有和entityManager发生关系

(2)托管状态(持久化状态的数据)
​	已经和entityManager发生关系  ex:数据被查询出来还没成为脱管或删除状态时就处于持久化状态	

(3)脱管状态(游离状态)
​	已经和entityManager脱离关系

(4)删除状态
	如果我们要删除一个内容 remove 这个对象的状态就是删除状态

3.脏数据更新

一个持久化状态的数据,如果修改非主键的值,在commit的时候,会自动发送update语句更新

4.N-To-N问题

一个持久化状态的数据,主键的值被修改

5.实体定义规则

1.实体类不能定义成final类型
2.实体里面的字段,全部声明为包装类型
3.如果实体里面有有参数的构造方法,一定要提供一个无参数构造方法

6.实体之间关系

1.依赖关系
	依赖注入:把对象注入到类里面这个过程,就叫依赖注入
	
2.关联关系
	2.1按照内容或者性质来分:
		多对一:多个员工属于一个部门
		一对多:一个部门下有多个员工
		多对多:一个角色(演员 学生 老师) 对应多个权限
		一对一:一个人对应一张身份证
	2.2按照导航性分:
		单向:只能从一方获取另外一个方
		双向:可以互相获取
		
3.组合关系
	多对一,或者一对多,整体和部分之间不能被分割(人和身体器官)

4.聚合关系
	多对一,或者一对多,整体和部分之间可以被分割(电脑主机和鼠标 键盘 等)

5.泛化关系(体现继承)

7.查询-抓取策略(就是告诉jpa使用什么方式去获取的数据)

多对一抓取策略(推荐使用延迟加载 ,性能要高一点)
	@ManyToOne(fetch = FetchType.EAGER)
	@ManyToOne(fetch = FetchType.LAZY)
	EAGER:急切、迫切 			你不管你使用不使用 都把数据查询出来
    LAZY:懒加载、延迟   		你需要用的才去加载数据  性能要好一点

8.二级缓存

二级缓存的命中条件:
	同一个EntityManagerFactory 不同EntityManager 同一个OID

二级缓存使用
	导包:
	<dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-ehcache</artifactId>
        <version>4.3.8.Final</version>
    </dependency>
    
	 配置开启二级缓存:
	 <!-- 开启二级缓存-->
     <property name="hibernate.cache.use_second_level_cache" value="true" />
     <!--二级缓存实现类-->
     <property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory" />
     <!--查询缓存-->
     <property name="hibernate.cache.use_query_cache" value="true" />

	JPA设置Entity缓存的方法:
	<shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
	ENABLE_SELECTIVE,默认值,除非被@Cacheable显式声明要缓存,否则默认不缓存
	DISABLE_SELECTIVE,除非被@Cacheable显式声明不缓存,否则默认缓存
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个开源的Java框架,提供了快速开发和构建可独立运行的Java应用程序的能力。而JPA (Java Persistence API) 是一种用于在Java应用程序和数据库之间进行对象关系映射的规范。 ClickHouse是一个用于大数据分析的开源列式数据库管理系统。它的设计目标是支持海量数据的实时查询和分析,并能够快速处理大数据量的复杂查询。 将Spring Boot和JPA与ClickHouse结合使用可以实现数据持久化和查询功能。首先,我们可以使用Spring Boot来快速搭建后端应用程序的框架,并使用JPA来进行数据的持久化操作。JPA提供了一种编程方式来简化对数据库的操作,可以与ClickHouse数据库进行集成。 在使用ClickHouse作为后端数据库时,我们需要配置ClickHouse的连接信息,如URL、用户名和密码等。然后,我们可以使用JPA提供的注解来定义实体类,并通过JPA的API来进行对象和数据库表之间的映射。通过调用JPA的方法,我们可以实现对ClickHouse数据库的增删改查操作。 在开发过程中,我们可以使用Spring Boot的自动配置功能来简化ClickHouse的配置工作,通过添加相关的依赖和配置,Spring Boot可以根据需要自动配置相应的Bean,从而减少了开发者的配置工作量。同时,Spring Boot还提供了一些开发工具和插件,可以方便地进行调试和测试。 总之,通过结合Spring Boot和JPA与ClickHouse的使用,我们可以快速搭建一个具有数据持久化和查询功能的后端应用程序。这样可以节省开发时间,提高生产效率,并且能够支持海量数据的实时查询和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值