ORM(对象关系映射)是一种编程技术,它将面向对象的编程语言中的对象与关系型数据库中的表进行映射。通过ORM,我们可以用面向对象的方式操作数据库,减少了手写SQL语句的复杂度以及对数据库的细节处理。ORM持久层是ORM的核心,是ORM与JDBC的中间层,负责把Java中的对象转换成SQL语句以及把数据库中的数据转换成Java中的对象。
一、JPA
JPA(Java Persistence API)是Sun.公司提出的持久化标准规范,是一种ORM持久化框架。JPA可以通过注解或XML文件将Java对象映射到关系型数据库中,使开发者可以更加方便地访问数据库,而不用编写繁琐的SQL语句。
下面是一个简单的使用JPA的代码示例:
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "age")
private Integer age;
//省略getter和setter方法
}
public interface UserRepository extends JpaRepository {
}
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
@Override
public User save(User user) {
return userRepository.save(user);
}
@Override
public User findById(Long id) {
return userRepository.findById(id).orElse(null);
}
@Override
public void deleteById(Long id) {
userRepository.deleteById(id);
}
@Override
public List findAll() {
return userRepository.findAll();
}
}
二、MyBatis
MyBatis是一个持久层框架,它利用了面向对象的思想来封装JDBC操作,使得开发者只需要关注SQL语句和映射关系,就可以轻松地完成数据库操作了。MyBatis支持自定义SQL语句,也支持动态SQL语句,可以将Java对象和XML配置文件中的SQL语句映射起来,并可根据需要自行扩展。
下面是一个简单的使用MyBatis的代码示例:
public interface UserMapper {
@Insert("insert into users(name, age) values(#{name}, #{age})")
int insert(User user);
@Delete("delete from users where id=#{id}")
int deleteById(Long id);
@Update("update users set name=#{name},age=#{age} where id=#{id}")
int update(User user);
@Select("select * from users where id=#{id}")
User findById(Long id);
@Select("select * from users")
List findAll();
}
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User save(User user) {
userMapper.insert(user);
return user;
}
@Override
public User findById(Long id) {
return userMapper.findById(id);
}
@Override
public void deleteById(Long id) {
userMapper.deleteById(id);
}
@Override
public List findAll() {
return userMapper.findAll();
}
}
三、Hibernate
Hibernate是一个非常流行的ORM框架,它通过自动生成SQL语句,将Java对象映射到关系型数据库中,同时也提供了高级特性,如缓存、延迟加载、对象关系映射等。Hibernate还提供了一种面向对象的查询语言HQL,使得开发者可以通过面向对象的方式操作实体对象,而不用直接操作SQL语句。
下面是一个简单的使用Hibernate的代码示例:
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "age")
private Integer age;
//省略getter和setter方法
}
@Service
public class UserServiceImpl implements UserService {
@Autowired
private EntityManager entityManager;
@Override
public User save(User user) {
entityManager.persist(user);
return user;
}
@Override
public User findById(Long id) {
return entityManager.find(User.class, id);
}
@Override
public void deleteById(Long id) {
User user = entityManager.find(User.class, id);
entityManager.remove(user);
}
@Override
public List findAll() {
String hql = "from User";
TypedQuery query = entityManager.createQuery(hql, User.class);
return query.getResultList();
}
}
四、总结
以上是三种常见的ORM持久层框架JPA、MyBatis和Hibernate的简单使用介绍。ORM持久层框架的出现,使得我们可以采用面向对象的方式操作关系型数据库,减少了手写SQL语句的复杂度以及对数据库的细节处理。使用ORM持久层框架,可以提高开发效率,降低维护成本,是现代化Java开发不可或缺的重要技术。
原创文章,作者:VUTGV,如若转载,请注明出处:https://www.506064.com/n/374506.html
微信扫一扫
支付宝扫一扫