1. ORM概述
ORM全称Object Relational Mapping,即对象关系映射,是一种程序设计技术,用于将关系数据库的表结构映射到对象的属性上。ORM可以让程序员摆脱SQL语句的束缚,不再需要编写大量的重复SQL语句,提高了开发效率。ORM的目的是使程序开发更加简单,同时简化对数据库的操作。ORM是现代开发中常用的一种数据访问方式,帮助开发人员快速高效地完成项目开发。
2. 常用ORM框架
下面是常用的ORM框架:
(1)Hibernate:由于Hibernate的普及程度非常高,是Java应用中最常用的ORM框架之一。它是JPA(Java Persistence API)的一个实现,能够映射 Java 类到关系数据库中的表,自动生成 SQL 语句,提供事务管理服务等。
(2)MyBatis:相较于Hibernate,虽然不被唯一地归类为ORM框架,但 MyBatis 能够实现自由切换 SQL 以及实现动态 SQL,支持存储过程调用等,提高了应用的整体性能和效率。
(3)Spring Data JPA:类似于JPA,是Spring的一个子项目,提供了一种与不同数据存储解决方案交互的方式,包括 MongoDB、Neo4j、Elasticsearch等。
(4)Ebean:另一个Java ORM框架,Ebean 遵循显式的 SQL 构建,使用了类似于ActiveRecord的模式。 优点是 使用简单、轻量,性能高,支持增量模式的 处理,对多表、多关系的建模取得很好的效果。
(5)TopLink:由Oracle推出的Java中的ORM框架。可以直接使用Java Persistence API(JPA)进行开发。
3. ORM框架使用方法
我们以Hibernate和MyBatis为例进行说明。
(1)Hibernate的使用方法:
a.配置Hibernate:在工程pom.xml中配置Hibernate框架,如下:
```
```
b.配置Hibernate的数据源:在application.properties文件中配置数据库信息,如下:
```
##datasource
spring.datasource.url=jdbc:mysql://localhost/xxx
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
```
c.映射实体类:编写实体类,使用Hibernate注解来指定映射到数据库的表名以及字段名。如下:
```
@Entity
@Table(name = "t_user")
public class UserBean {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Long id;
@Column(name = "user_name")
private String userName;
@Column(name = "password")
private String password;
//省略getter和setter
}
```
d.执行数据操作:使用Hibernate提供的API或接口来进行数据操作,如下:
```
@Repository
public class UserDaoImpl implements UserDao {
@Autowired
private SessionFactory sessionFactory;
@Override
public UserBean save(UserBean userBean) {
sessionFactory.getCurrentSession().save(userBean);
return userBean;
}
@Override
public UserBean findByUserName(String userName) {
return sessionFactory.getCurrentSession().createQuery("from UserBean where userName = :userName", UserBean.class).setParameter("userName", userName).uniqueResult();
}
}
```
(2)MyBatis的使用方法:
a.配置MyBatis:在工程pom.xml中配置MyBatis框架和数据库驱动,如下:
```
```
b.配置MyBatis数据源:在application.properties文件中配置数据库信息,如下:
```
##datasource
spring.datasource.url=jdbc:mysql://localhost/xxx
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
##mybatis
mybatis.mapperLocations=classpath:mapper/*.xml
```
c.映射实体类:编写实体类,并编写Mapper映射文件(xxxMapper.xml),如下:
```
@Alias(value="org.mybatis.example.User")
public class UserBean {
private Long id;
private String userName;
private String password;
//省略getter和setter
}
```
```
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
```
d.执行数据操作:使用MyBatis提供的API或接口来进行数据操作,如下:
```
@Repository
public class UserDaoImpl implements UserDao {
@Autowired
private UserMapper userMapper;
@Override
public UserBean save(UserBean userBean) {
userMapper.insert(userBean);
return userBean;
}
@Override
public UserBean findByUserName(String userName) {
return userMapper.findByUserName(userName);
}
}
```
4. ORM框架案例说明
下面是一个基于Hibernate的用户管理系统,包括用户登录、注册、CRUD等功能。
(1)用户注册:向数据库中保存用户信息
```
@PostMapping("/register")
public String register(UserBean userBean, Model model) {
userBean.setPassword(MD5Utils.getMd5(userBean.getPassword()));//密码加密
UserBean user = userDao.findByUserName(userBean.getUserName());
if (user != null) {//判断用户名是否已存在
model.addAttribute("message", "用户名已存在,请重新注册!");
return "redirect:/user/register";
}
userDao.save(userBean);//保存用户信息
return "redirect:/user/loginPage";
}
```
(2)用户登录:从数据库查询用户信息,实现登录验证
```
@PostMapping("/login")
public String login(UserBean userBean, Model model) {
userBean.setPassword(MD5Utils.getMd5(userBean.getPassword()));
UserBean user = userDao.findByUserName(userBean.getUserName());
if (user != null && user.getPassword().equals(userBean.getPassword())) {//判断用户名和密码是否匹配
model.addAttribute("user", user);
return "redirect:/user/success";
}
model.addAttribute("message", "用户名或密码错误,请重新登录!");
return "redirect:/user/loginPage";
}
```
(3)用户管理:查询、更新和删除用户信息
```
@GetMapping("/list")
public String list(Model model) {
List model.addAttribute("userList", userList); return "user/list"; } @GetMapping("/edit/{id}") public String edit(@PathVariable("id") Long id, Model model) { UserBean user = userDao.findById(id); model.addAttribute("user", user); return "user/edit"; } @PostMapping("/update") public String update(UserBean userBean, Model model) { userBean.setPassword(MD5Utils.getMd5(userBean.getPassword()));//密码加密 userDao.update(userBean); return "redirect:/user/list"; } @GetMapping("/delete/{id}") public String delete(@PathVariable("id") Long id) { userDao.deleteById(id); return "redirect:/user/list"; } ``` 总结: ORM框架可以显著提高程序开发效率,同时简化对数据库的操作。Hibernate和MyBatis都是常用的ORM框架,通过配置文件和API使用,实现了面向对象数据访问。以上案例说明了基于Hibernate的用户管理系统,包括了用户注册、登录、CRUD等功能。 如果你喜欢我们三七知识分享网站的文章,
欢迎您分享或收藏知识分享网站文章
欢迎您到我们的网站逛逛喔!https://www.37seo.cn/
您的耳垂又大又圆,一看就是大富大贵的人。
开心一整天幸福每一天!