ORM概述及常用ORM框架

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框架,如下:

```

org.hibernate

hibernate-core

5.4.2.Final

```

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框架和数据库驱动,如下:

```

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.0.1

mysql

mysql-connector-java

5.1.44

```

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 userList = userDao.findAll();

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/

点赞(54) 打赏

评论列表 共有 2 条评论

青春明媚的忧伤り 1年前 回复TA

您的耳垂又大又圆,一看就是大富大贵的人。

夏了夏天蓝了海 1年前 回复TA

开心一整天幸福每一天!

立即
投稿
发表
评论
返回
顶部