Java开源项目Hibernate的完整攻略
1. 什么是Hibernate
Hibernate是一种Java持久层框架,它允许将Java类映射到数据库表中,从而在Java程序员使用对象编程的方式来操作数据库。Hibernate为程序员提供了面向对象的查询语言HQL,使得Java程序员可以独立于底层数据库实现的细节。
2. 学习Hibernate的准备工作
在开始学习Hibernate之前,需要掌握Java、SQL、XML的基本知识。此外,还需要安装Java开发环境和Hibernate框架。可以在Hibernate官网(https://hibernate.org/orm/downloads/)下载最新版本的Hibernate框架。
3. 在Java项目中使用Hibernate
在Java项目中使用Hibernate的步骤如下:
3.1 创建Java类和数据库表映射关系
使用Hibernate需要创建JavaBean,映射成数据库表,这个映射关系通过Hibernate的映射配置文件来完成,Hibernate支持两种配置方式,XML和注解。
以下是一个使用XML文件进行映射配置的例子:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.example.User" table="user">
<id name="id" type="long">
<generator class="identity"/>
</id>
<property name="username" column="username" type="string"/>
<property name="password" column="password" type="string"/>
<property name="email" column="email" type="string"/>
</class>
</hibernate-mapping>
3.2 编写Hibernate Configuration
Hibernate在执行之前,需要一些配置,例如数据库连接信息等。Hibernate Configuration 是 Hibernate 应用程序的主要设置对象,用于启动Hibernate持久化服务。例如:
Configuration configuration = new Configuration()
.addAnnotatedClass(User.class)
.configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
3.3 操作数据库
Hibernate提供了会话工厂(SessionFactory)和会话(Session)来操作数据库,以下是一个示例:
//创建会话工厂
SessionFactory sessionFactory = configuration.buildSessionFactory();
//打开会话
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
//添加用户
User user = new User();
user.setUsername("admin");
user.setPassword("admin");
user.setEmail("admin@example.com");
session.save(user);
//查询用户
Query query = session.createQuery("FROM com.example.User WHERE username = :username");
query.setParameter("username", "admin");
User result = (User) query.uniqueResult();
//更新用户
result.setUsername("administrator");
session.update(result);
//删除用户
session.delete(result);
//提交事务
tx.commit();
//关闭会话
session.close();
4. 示例一:在Spring Boot项目中使用Hibernate
在Spring Boot项目中使用Hibernate的步骤如下:
4.1 添加Maven依赖
在Spring Boot项目的pom.xml文件中添加Hibernate依赖:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.32.Final</version>
</dependency>
4.2 创建Hibernate Configuration
创建Hibernate Configuration类来完成Hibernate的配置,例如:
@Configuration
public class HibernateConfig {
@Autowired
private Environment env;
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(env.getProperty("spring.datasource.driver-class-name"));
dataSource.setUrl(env.getProperty("spring.datasource.url"));
dataSource.setUsername(env.getProperty("spring.datasource.username"));
dataSource.setPassword(env.getProperty("spring.datasource.password"));
return dataSource;
}
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan("com.example.model");
Properties hibernateProperties = new Properties();
hibernateProperties.put("hibernate.dialect", env.getProperty("hibernate.dialect"));
hibernateProperties.put("hibernate.show_sql", env.getProperty("hibernate.show_sql"));
hibernateProperties.put("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
sessionFactory.setHibernateProperties(hibernateProperties);
return sessionFactory;
}
@Bean
@Autowired
public HibernateTransactionManager transactionManager(SessionFactory sessionFactory) {
HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(sessionFactory);
return txManager;
}
}
4.3 定义持久化对象
在项目中定义持久化实体类:
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String username;
@Column(nullable = false)
private String password;
@Column(nullable = false)
private String email;
// getter和setter方法
}
4.4 操作数据库
在项目中使用Hibernate操作数据库:
@Autowired
private SessionFactory sessionFactory;
@Transactional
public void addUser(User user) {
sessionFactory.getCurrentSession().save(user);
}
@Transactional(readOnly = true)
public User getUserByUsername(String username) {
Query query = sessionFactory.getCurrentSession()
.createQuery("FROM com.example.model.User WHERE username = :username");
query.setParameter("username", username);
User result = (User) query.uniqueResult();
return result;
}
示例二:使用Hibernate Criteria API查询数据
Hibernate Criteria API 是一种面向对象的查询方式,不用编写SQL语句。以下是一个使用Hibernate Criteria API查询数据的示例:
CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<User> criteria = builder.createQuery(User.class);
Root<User> root = criteria.from(User.class);
criteria.select(root).where(builder.equal(root.get("username"), "admin"));
List<User> results = session.createQuery(criteria).getResultList();
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java开源项目Hibernate - Python技术站