Java 作为一种主流编程语言,拥有丰富的开发框架,能够帮助开发者高效地构建高质量的应用。没错。这次我们主要讲解
Java 工程开发框架以及一些实战案例。
1. 常见 Java 开发框架
1.1 Spring Framework
1.1.1 简介
Spring 是一个开源框架,主要用于企业级应用开发。它提供了全面的基础设施支持,包括依赖注入、面向切面编程、数据访问、事务管理等。
1.1.2 核心模块
- Spring Core:提供依赖注入功能
- Spring AOP:提供面向切面编程支持
- Spring Data:简化数据访问层开发
- Spring MVC:用于构建 Web 应用
1.2 Hibernate
1.2.1 简介
Hibernate 是一个开源的对象关系映射(ORM)框架,它简化了 Java 对数据库的访问。它将 Java 对象与数据库表进行映射,使得开发者可以使用面向对象的方式操作数据库。
1.2.2 核心功能
- 映射配置:将 Java 类与数据库表映射
- 数据查询:支持 HQL(Hibernate Query Language)和原生 SQL
- 事务管理:支持声明式事务管理
1.3 Apache Struts
1.3.1 简介
Apache Struts 是一个开源的 Web 应用框架,主要用于构建基于 MVC 模式的 Web 应用。它通过集中化的控制器来管理请求,并通过视图层和模型层分离业务逻辑和用户界面。
1.3.2 核心组件
- Action:处理用户请求的控制器
- Interceptor:拦截请求并进行预处理
- Result:决定请求处理后的结果视图
2. 实战案例
案例一:Spring Boot 构建简单的用户管理系统
2.1 项目结构
代码语言:txt复制user-management/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── usermanagement/
│ │ │ ├── controller/
│ │ │ │ └── UserController.java
│ │ │ ├── model/
│ │ │ │ └── User.java
│ │ │ ├── repository/
│ │ │ │ └── UserRepository.java
│ │ │ ├── service/
│ │ │ │ └── UserService.java
│ │ │ └── UserManagementApplication.java
│ │ └── resources/
│ │ └── application.properties
└── pom.xml
2.2 代码示例
1. User 实体类
代码语言:txt复制package com.example.usermanagement.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
// Getters and setters
}
2. UserRepository 接口
代码语言:txt复制package com.example.usermanagement.repository;
import com.example.usermanagement.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsername(String username);
}
3. UserService 服务类
代码语言:txt复制package com.example.usermanagement.service;
import com.example.usermanagement.model.User;
import com.example.usermanagement.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public User saveUser(User user) {
return userRepository.save(user);
}
public User findUserByUsername(String username) {
return userRepository.findByUsername(username);
}
}
4. UserController 控制器类
代码语言:txt复制package com.example.usermanagement.controller;
import com.example.usermanagement.model.User;
import com.example.usermanagement.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@PostMapping
public ResponseEntity<User> createUser(@RequestBody User user) {
return ResponseEntity.ok(userService.saveUser(user));
}
@GetMapping("/{username}")
public ResponseEntity<User> getUser(@PathVariable String username) {
return ResponseEntity.ok(userService.findUserByUsername(username));
}
}
5. 应用主类
代码语言:txt复制package com.example.usermanagement;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class UserManagementApplication {
public static void main(String[] args) {
SpringApplication.run(UserManagementApplication.class, args);
}
}
6. 配置文件 application.properties
代码语言:txt复制spring.datasource.url=jdbc:mysql://localhost:3306/userdb
spring.datasource.username=root
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=update
案例二:Hibernate 实现商品管理系统
2.1 项目结构
代码语言:txt复制product-management/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── productmanagement/
│ │ │ ├── dao/
│ │ │ │ └── ProductDao.java
│ │ │ ├── model/
│ │ │ │ └── Product.java
│ │ │ ├── service/
│ │ │ │ └── ProductService.java
│ │ │ └── ProductManagementApplication.java
│ │ └── resources/
│ │ └── hibernate.cfg.xml
└── pom.xml
2.2 代码示例
1. Product 实体类
代码语言:txt复制package com.example.productmanagement.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private double price;
// Getters and setters
}
2. ProductDao 接口
代码语言:txt复制package com.example.productmanagement.dao;
import com.example.productmanagement.model.Product;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class ProductDao {
private SessionFactory sessionFactory;
public ProductDao() {
sessionFactory = new Configuration().configure().buildSessionFactory();
}
public void saveProduct(Product product) {
Session session = sessionFactory.openSession();
session.beginTransaction();
session.save(product);
session.getTransaction().commit();
session.close();
}
public List<Product> getAllProducts() {
Session session = sessionFactory.openSession();
session.beginTransaction();
List<Product> products = session.createQuery("from Product", Product.class).list();
session.getTransaction().commit();
session.close();
return products;
}
}
3. ProductService 服务类
代码语言:txt复制package com.example.productmanagement.service;
import com.example.productmanagement.dao.ProductDao;
import com.example.productmanagement.model.Product;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ProductService {
@Autowired
private ProductDao productDao;
public void saveProduct(Product product) {
productDao.saveProduct(product);
}
public List<Product> getAllProducts() {
return productDao.getAllProducts();
}
}
4. 应用主类
代码语言:txt复制package com.example.productmanagement;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ProductManagementApplication {
public static void main(String[] args) {
SpringApplication.run(ProductManagementApplication.class, args);
}
}
5. Hibernate 配置文件 hibernate.cfg.xml
代码语言:txt复制<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost