1.spring-boot
2.Hibernate(贴吧项目)
1. 对象关系映射 (ORM)
Hibernate 允许 Java 对象与数据库表之间进行自动映射。每个 Java 类通常映射为数据库中的一张表,而类的实例对应表中的一行数据。通过这种映射,开发人员无需直接操作 SQL 语句,而是通过操作对象来完成对数据库的增删改查操作。
2. 透明的持久化
Hibernate 提供了对 Java 对象的持久化支持,自动将 Java 对象的状态同步到数据库中。开发人员只需关注业务逻辑,Hibernate 会处理对象状态与数据库数据的同步,简化了数据库操作。
3. 支持多种数据库
Hibernate 是数据库独立的,它支持多种数据库管理系统(DBMS),例如 MySQL、Oracle、PostgreSQL、SQL Server 等。Hibernate 的配置文件中只需要修改数据库连接相关的配置即可切换数据库。
4. 自动化的 SQL 生成
Hibernate 提供了自动生成 SQL 查询的功能。开发者只需要定义 Java 类和对象的映射,Hibernate 会根据对象的属性自动生成相应的 SQL 语句。这降低了手写 SQL 的复杂度和错误率。
5. 持久化上下文(Session)
Hibernate 通过 Session 对象来与数据库进行交互。Session 是 Hibernate 的核心,它用于保存、更新、删除和查询数据。在一个会话中,Hibernate 会跟踪对象的状态,并根据需要将这些对象的更改同步到数据库。
6. 缓存机制
Hibernate 提供了二级缓存和一级缓存机制,以提高性能。一级缓存是会话级别的缓存,默认情况下与每个 Session 关联;二级缓存是跨 Session 的缓存,用于存储应用程序中经常使用的数据,从而减少数据库查询的频率。
7. 查询语言 (HQL)
Hibernate 提供了自己的查询语言 Hibernate Query Language(HQL)。HQL 类似于 SQL,但它是面向对象的,可以通过它进行面向对象的查询操作,而不需要使用传统的 SQL 查询数据库中的表。
8. 事务管理
Hibernate 提供了事务管理功能,可以在数据库操作过程中进行事务控制。它支持与 Java 的事务管理 API(如 JTA、Spring)集成,确保数据库操作的一致性和完整性。
SqlSession sqlSession = sqlSessionFactory.openSession(true); // 自动提交事务
使用mybatis-plus
1.自动控制事务
@Service
public class BaService {
@Autowired
private BaMapper baMapper; // MyBatis-Plus 的 Mapper
@Transactional // 标明该方法需要事务管理
public Ba inquireBaByName(String baname) {
Ba ba = new Ba();
ba.setBaname(baname);
System.out.println("开始通过吧名查询吧!!!" + ba.getBaname());
ba = baMapper.selectOne(new QueryWrapper<>(ba)); // MyBatis-Plus 的查询方法
System.out.println("查询成功!!!");
// 其他操作...
return ba;
}
}
2.手动控制事务
public Ba inquireBaByNameManual(String baname) throws IOException {
// 获取 MyBatis-Plus 的 SqlSessionFactory
SqlSessionFactory sqlSessionFactory = MyBatisPlusConfig.getSqlSessionFactory();
// 手动控制事务
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
BaMapper baMapper = sqlSession.getMapper(BaMapper.class); // 获取 Mapper
Ba ba = new Ba();
ba.setBaname(baname);
System.out.println("开始通过吧名查询吧!!!" + ba.getBaname());
ba = baMapper.selectOne(new QueryWrapper<>(ba)); // MyBatis-Plus 查询
System.out.println("查询成功!!!");
// 提交事务
sqlSession.commit();
return ba;
} catch (Exception e) {
// 发生异常时回滚事务
sqlSession.rollback();
throw new RuntimeException("查询失败,事务已回滚", e);
} finally {
// 关闭 SqlSession
sqlSession.close();
}
}
9. 灵活的映射配置
Hibernate 提供了两种配置方式:
基于 XML 的配置:通过 hibernate.cfg.xml 文件配置数据库连接、映射关系等。基于注解的配置:使用 Java 注解来定义映射关系,简化了 XML 配置。
10. 批量操作
Hibernate 提供了批量操作的支持,通过 Session 批量处理大量的数据插入、更新和删除,从而提高了性能。
Hibernate 工作原理概述
SessionFactory:应用程序通过 SessionFactory 创建 Session 对象,SessionFactory 是 Hibernate 的核心,它是线程安全的,通常在应用启动时创建。Session:通过 Session 对象,开发者与数据库进行交互,执行增删改查等操作。Mapping:Java 类和数据库表之间的关系是通过映射文件(XML)或者注解来定义的。Transaction:Hibernate 使用事务来确保数据库操作的原子性和一致性。Session Closing:操作完成后,Session 会被关闭,释放资源。
总结
Hibernate 通过 ORM 技术大大简化了 Java 程序与数据库之间的交互。它提供了持久化、事务、缓存和查询等功能,使开发人员能够更加专注于业务逻辑,而不是处理数据库细节。由于其强大的功能和灵活性,Hibernate 成为 Java 开发中广泛使用的框架之一。
3.Struts(qq项目)
Struts框架是一个经典的Java Web框架,最初由Apache开发,目的是简化Java Web应用程序的开发,特别是在MVC(Model-View-Controller)架构下。它在Java Web开发中占有重要地位,尽管如今Spring和其他框架逐渐取而代之,但Struts仍然在许多老旧项目中使用。
1. Struts框架的工作原理
Struts基于MVC设计模式,将Web应用程序分成三个主要部分:
Model(模型):表示应用程序的业务逻辑层和数据层,通常是POJO类(Plain Old Java Object)或业务服务层。View(视图):表示用户界面,通常是JSP(Java Server Pages)页面,负责展示数据。Controller(控制器):负责处理请求,通常是一个Action类,接收用户请求并根据业务逻辑返回相应的视图。
Struts的流程:
用户请求:用户通过浏览器发送请求(如GET或POST请求)。前端控制器:Struts的核心组件是ActionServlet,它作为前端控制器(Front Controller),接收所有请求并转发给适当的处理类(通常是Action类)。Action类:根据请求的URL,ActionServlet查找对应的Action类并调用该类的方法。业务逻辑处理:Action类根据需要调用业务逻辑(通常通过调用模型层的服务类)。返回视图:Action类处理完请求后,会返回一个视图名,ActionServlet会根据视图名找到对应的JSP页面并将模型数据传递给它进行显示。
2. Struts框架的核心组件
ActionServlet:是Struts框架的核心控制器,所有的请求都会经过它进行处理。它负责请求分发,并决定哪个Action类来处理请求。
ActionForm:是一个用于封装请求数据的JavaBean。ActionForm类通常用来接收从页面提交的表单数据,并进行验证。
Action:处理用户请求的核心类。Action类中包含业务逻辑,当用户发起请求时,它会接收请求并处理逻辑。
struts-config.xml:Struts的配置文件,定义了Action类与URL的映射关系、表单Bean、全局信息等配置。
Tag Libraries(标签库):Struts使用标签库来简化JSP页面的开发。例如,html标签库提供了一些用于生成表单和HTML元素的标签。
3. Struts框架的典型配置
web.xml:定义了ActionServlet和其映射URL。
xmlCopy Code
struts-config.xml:配置Action类和表单Bean的映射。
Action类:继承Action并重写execute方法处理用户请求。
ActionForm类:用来封装请求中的表单数据。
public class LoginForm extends ActionForm {
private String username;
private String password;
// getters and setters
}
4. Struts的优缺点
优点:
简化了Web开发:Struts框架提供了MVC设计模式的实现,分离了表现层、控制层和业务逻辑层。强大的标签库:Struts的标签库简化了JSP页面的开发,能够自动生成HTML表单、表单校验等。配置灵活:Struts允许通过XML配置文件轻松管理Action类、表单Bean、视图等。良好的社区支持:由于Struts是一个广泛使用的框架,开发者可以找到大量的资源和支持。
缺点:
过于复杂:对于简单的Web应用,Struts框架的配置和结构可能显得过于繁琐,开发过程比较复杂。性能问题:在一些高并发的应用场景下,Struts的性能表现可能不如其他更轻量级的框架。较老:Struts框架相对较老,在新的项目中已经被Spring MVC等更现代的框架所取代。
5. Struts的替代框架
由于Struts的许多缺点,现代Java Web开发通常倾向于使用其他框架,特别是Spring MVC。Spring MVC结合了灵活性、易用性和高性能,是Struts的主要替代品。
6. 结论
尽管Struts框架已经不再是现代Java Web开发的主流选择,但它仍然是理解MVC模式和Web框架设计的一个有价值的学习工具。如果你在维护旧系统,Struts仍然可能是必须使用的框架。对于新的项目,建议考虑使用Spring MVC、Spring Boot或其他现代框架。