📅  最后修改于: 2023-12-03 15:41:42.420000             🧑  作者: Mango
Hibernate是一个流行的对象-关系映射(ORM)框架,可用于Java应用程序的持久化数据存储。它使用映射文件或注释来将Java对象映射到表格中,从而对开发人员隐藏了对数据库操作的复杂性。Hibernate支持标准的JPA API和自己的Hibernate API,可以与各种数据库平台一起使用。
将Java类映射到数据库表。
@Entity
@Table(name = "users")
public class User {
//...
}
定义主键。
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
定义列名。
@Column(name = "first_name")
private String firstName;
定义一对多关系。
@OneToMany(mappedBy = "category")
private List<Product> products;
Hibernate使用查询语言(HQL)来执行查询操作,它类似于SQL,但是不同的是HQL使用域对象而不是数据库表,从而隐藏了表之间的关系。
Query query = session.createQuery("FROM User WHERE age > :age");
query.setParameter("age", 18);
List<User> users = query.list();
Hibernate缓存是一种将经常请求的数据存储在内存中的机制,以便于快速访问和提高性能。Hibernate提供两种缓存机制:一级缓存和二级缓存。其中一级缓存是与Session密切相关的,而二级缓存是全局的,可用于跨多个Session的数据共享。
以下是一个简单的Hibernate示例,将Java对象映射到数据库表。
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "email")
private String email;
// getters and setters
}
public class HibernateExample {
public static void main(String[] args) {
SessionFactory sessionFactory = new Configuration()
.configure("hibernate.cfg.xml")
.addAnnotatedClass(User.class)
.buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
try {
User user = new User();
user.setFirstName("John");
user.setLastName("Doe");
user.setEmail("john.doe@email.com");
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
session = sessionFactory.getCurrentSession();
session.beginTransaction();
User retrievedUser = session.get(User.class, user.getId());
session.getTransaction().commit();
System.out.println("Retrieved user: " + retrievedUser.toString());
} catch (Exception ex) {
ex.printStackTrace();
} finally {
sessionFactory.close();
}
}
}