学习日报2023年5月19日
(2023-05-19 21:43:06)
标签:
it教育 |
分类: 两年成长日记 |
今日完成:
时间:6:35-7:00
内容:英语百词斩打卡+英语单词复习
时间:8:00-8:10
内容:元宇宙项目组晨会
时间:8:23-9:23
内容:Spring
AOP(xml、注解)博客总结
总结:9:53完成博客总结,过程中新增了JDK动态代理和CGLIB动态代理的内容。
时间:10:17-10:42
内容:SSH框架——
hibernate——如何支持悲观锁
总结:完成计划
时间:10:52-11:17
内容:SSH框架——hibernate——如何支持乐观锁+回顾内容
总结:完成计划
时间:11:27-11:50
内容:SSH框架——
hibernate——缓存介绍
总结:完成计划
时间:13:30-14:10
内容:英语口语练习
时间:14:35:15:00
内容:明确为什么要设计内部类,以及如何访问private修饰的内部类
总结:未完成,15:25
为什么要设计内部类:
1.封装性:内部类与相关的类组织在一起,提供更高的封装性,如果一个类只在另一个类内部使用,将其声明为内部类可以将其隐藏起来,避免暴露。
2.非静态内部类,持有对外部类实例的引用,使得内部类能够秦松的访问和操作外部类的属性和方法。
3.实现细节隐藏:内部类可以用于隐藏复杂的实现细节。通过将某些功能实现为内部类,可以将其细节隐藏在外部类之内,从而简化外部类的接口和实现。
业务上:1.
是为了体现每个学生都有操作活动颗粒的能力,所以将操作这些颗粒的能力视为了内部类(属性和方法)。对于外部类而言简化了外部了IDE结构和实现。
由于内部类的访问修饰符为private,
将私有内部类提升为公共内部类:如果可行的话,将私有内部类更改为公共内部类。这样,它将对外部类以及其他类可见,可以在方法参数中直接使用私有内部类的类型。
将私有内部类提取到单独的类文件中:如果你需要在多个类中使用私有内部类,可以将私有内部类提取到单独的类文件中,使其成为一个独立的类。然后在需要使用私有内部类的类中,将其实例作为方法参数进行操作。
使用数据传输对象(DTO):创建一个公共的数据传输对象(DTO),该对象包含与私有内部类相匹配的字段和属性。在前端调用方法时,使用DTO作为参数类型传递数据结构,并在方法内部将DTO转换为私有内部类对象。
使用反射:使用反射来访问私有内部类,并在方法参数中使用私有内部类类型。我之前提供的关于使用反射的方法可以帮助你实现这个需求。
时间:15:35-16:00
内容:先假设已经能够拿到内部类的类型了,梳理实现使用JPA如何插入用户的签到信息的NS图
总结:
问题一:JPA的接口通常是用于对实体类进行持久化操作的,需要实体类被标记为
@Entity才能与数据库进行映射和交互。
问题二:灵活设置那些实体类能够被映射成表,那些实体类不能被映射成表吗?
考虑使用其他的ORM框架或持久化解决方案,如MyBatis或Hibernate的XML映射配置。这些框架提供了更灵活的映射配置方式,允许你选择性地指定实体类与表之间的映射关系。
如果你希望自己创建表,而不是由JPA自动创建表,并且仍然想使用JPA的增删改查接口,可以采取以下步骤:
在实体类上使用
@Entity注解:确保你的实体类上仍然标记了@Entity注解,这样JPA仍然能够识别该类作为实体类进行映射。
禁用自动创建表:在配置文件(如
persistence.xml或application.properties)中,禁用JPA的自动创建表功能。具体的配置方法取决于你所使用的持久化提供程序(如Hibernate、EclipseLink等)。通常,你需要将自动创建表的选项设置为false。
使用
@Table注解指定表名:在实体类上使用@Table注解,显式地指定你所创建的表的表名。
时间:16:00-16:25
内容:整理目前的问题以及现有的解决思路
问题一:
由于为私有的内部类,controller层的方法的参数无法声明为私有内部类类型的形参。
使用反射获取似乎也不可行。
问题二:
背景:了解到使用JPA的接口需要实体类被标记为@Entity才能与数据库进行映射和交互。
如果我们想要使用JPA的接口,让JPA来做ORM映射的话,我们的内部类需要添加@Entity注解。
添加@Entity注解之后默认JPA自动会将其创建成表,但是我们的内部类们是我们自己创建的。
JPA提供了相应的配置,禁用JPA的自动创建表功能,但是无法做到指定那些类能够创建为类,
哪些类不将其创建为表。
问题:
那么由于我们的Actor类是使用jpa自动创建表的,如果我们禁用JPA自动创建表的话,
那么Actor类我们需要自己去创建,当然由于Actor类使用@Entity注解它依然能够使用JPA的接口。
问题三:
由于我们创建的表名是我们自己定义的表名,并不是实体名或者指定好的表名。所以当进行使用JPA进行ORM的时候,JPA是用实体类类名或者指定表名进行相应的CRUD
,我们可能需要使用自定义查询。
时间:16:30-16:55-17:12
内容:领导沟通会+请教马总问题+找梓龙了解登陆模块+再次请教马总问题
总结:先将梓龙负责的部分进行梳理,绘制NS图
梓龙负责模块的现状:1.通过模板生成对应学生参与颗粒的controller,生成的学生参与颗粒controller中的方法的参数类型为对应的颗粒参与类型
2.现在的ORM是通过反射拼接的SQL然后交给JPA中的Query执行相应的操作
时间:17;35-18:00
内容:绘制宏观的登陆模块的NS图
总结:完成计划
时间:19:00-19:10
内容:英语单词学习
时间:19:31-19:56
内容:绘制学生生成类和表的NS图预计完成50%
总结:完成计划
时间:19:58-20:23
内容:继续绘制学生生成类和表的NS图预计完成50%
总结:未完成,剩余20%
时间:20:30-20:55
内容:继续绘制学生生成类和表的NS图完成剩余20%
总结:未完成,21:28完成计划
明日计划:
SSH架构——Hibernate——视频4个番茄
宏观整理Hibernate相关知识点两个番茄
已在禅道建立对应的开发任务
前一篇:学习日报2023年5月18日
后一篇:学习日报2023年5月20日