增加了POJO笔记,并且添加了MYBATIS的部分内容。

--------------------------------------------------------
今天学了个新词,‘拭目以待’.	8/4/2022
This commit is contained in:
2022-08-04 00:21:35 +08:00
parent ed5e0fdd4a
commit 367344587f
2 changed files with 35 additions and 0 deletions

View File

@@ -1 +1,21 @@
# mybatis框架
## 1. Mybatis中主要的类及其生命周期
### 1.1 SqlSessionFactoryBuilder
对于SqlSessionFactoryBuilder其推荐的生命周期是创建之后立即销毁不必被保留其理想的作用域是方法的作用域。
> 可以将SqlSessionFactoryBuilder进行保留并用其创建多个SqlSessionFactory实例。但是为了保证XML解析后资源被正常的释放应该在将其创建之后立刻丢弃
### 1.2 SqlSessionFactory
对于SqlSessionFactory实例其理想的作用域和生命周期都应该是整个应用的执行期间。在应用运行期间都会通过该工厂实例来获取SqlSession对象。
> SqlSessionFactory实例在创建完成之后都不应该被修改或者是被重新创建。
### 1.3 SqlSession
对于SqlSession对象来说其生命周期和作用域应该是方法级别或者是请求级别。SqlSession对象并不是线程安全的无法在多线程环境之下被共享。因而无法将其作为Servlet或是HttpSession的属性或是静态属性否则会产生非预期的并发安全问题。
推荐情况下SqlSession应该在接受到http请求时被创建并且在请求返回httpResponse时被销毁。
并且SqlSession必须要被保证正确的关闭。
```java
try(SqlSession sqlSession=sqlSessionFactory.openSession()) {
// operations on sqlSession
}
```
### 1.4 Mapper实例
Mapper实例是通过SqlSession实例来获取的故而Mapper实例最大的生命周期和作用域和SqlSession。Mapper最推荐的生命周期和作用域是方法级别的在方法中获取Mapper并使用后即可丢弃无需在方法外保存Mapper对象。
虽然Mapper也可以和SqlSession一样在request范围内有效但是会发现保留太多Mapper级别的资源而不销毁会很快的产生失控。
Mapper实例和SqlSession实例不同并不需要被显式的销毁。

View File

@@ -0,0 +1,15 @@
# POJO
## POJO定义
POJOPlain Old Java Object是一种直接的类型POJO并不包含对任何框架的引用。
> 对于POJO类型该类属性和方法的定义并没有特定的约束和限制
## Java Bean命名约束
由于对POJO本身并没有对POJO类属性和方法的定义强制指定命名约束因而许多框默认支持Java Bean命名约束。
> ### Java Bean命名约束
> 在Java Bean命名约束中为POJO类属性和方法的命名指定了如下规则
> 1. 属性的访问权限都被设置为private属性通过getter和setter向外暴露
> 2. 对于方法的命名getter和setter遵循getXXX/setXXX的命名规范对于boolean属性的getter可以使用isXXX形式
> 3. Java Bean命名规范要求Java Bean对象需要提供无参构造方法
> 4. 实现Serializable接口能够将对象以二进制的格式进行存储
## 其他命名规范
由于Java Bean命名规范中有些规则强制对Java Bean的命名进行限制可能会带来弊端故而如今许多框架在接受Java Bean命名规范之余仍然支持其他的POJO命名规范
> 如在Spring中通过@Component注解注册Bean对象时被@Component注解的类并不一定要实现Serializable接口也不一定要拥有无参构造方法。