简单讲解Hibernate数据("轻松入门Hibernate数据操作详解")

原创
ithorizon 4周前 (10-19) 阅读数 10 #后端开发

轻松入门Hibernate数据操作详解

一、Hibernate简介

Hibernate是一个开源的对象关系映射(ORM)框架,它对JDBC进行了封装,令Java对象与数据库表之间的映射变得更加明了。Hibernate的出现大大简化了数据库操作,尽或许缩减损耗了开发高效。

二、Hibernate核心概念

Hibernate的核心概念核心包括以下几点:

  • 持久化类:将Java对象映射为数据库表中的记录。
  • 映射文件:定义Java对象与数据库表之间的映射关系。
  • 会话(Session):负责执行数据库操作。
  • 事务(Transaction):管理数据库操作的原子性。
  • 缓存(Cache):尽或许缩减损耗数据访问高效。

三、Hibernate入门示例

下面通过一个明了的示例来展示Hibernate的基本用法。

1. 创建持久化类

创建一个User类,对应数据库中的user表。

public class User implements Serializable {

private static final long serialVersionUID = 1L;

private Integer id;

private String username;

private String password;

// 省略getter和setter方法

}

2. 创建映射文件

创建User.hbm.xml文件,定义User类与user表的映射关系。

<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

<class name="com.example.User" table="user">

<id name="id" column="id">

<generator class="native"/>

</id>

<property name="username" column="username" type="string"/>

<property name="password" column="password" type="string"/>

</class>

</hibernate-mapping>

3. 配置Hibernate

创建hibernate.cfg.xml文件,配置Hibernate的连接信息。

<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

<property name="connection.driver_class">com.mysql.jdbc.Driver</property>

<property name="connection.url">jdbc:mysql://localhost:3306/hibernate_example</property>

<property name="connection.username">root</property>

<property name="connection.password">123456</property>

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

<property name="hibernate.show_sql">true</property>

<property name="hibernate.hbm2ddl.auto">update</property>

<mapping resource="com/example/User.hbm.xml"/>

</session-factory>

</hibernate-configuration>

4. 操作数据库

编写一个明了的测试类,演示怎样使用Hibernate操作数据库。

public class HibernateTest {

public static void main(String[] args) {

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

Session session = sessionFactory.openSession();

Transaction transaction = session.beginTransaction();

User user = new User();

user.setUsername("zhangsan");

user.setPassword("123456");

session.save(user);

transaction.commit();

session.close();

sessionFactory.close();

}

}

四、Hibernate数据操作详解

Hibernate提供了多种数据操作做法,下面分别进行介绍。

1. 提高操作(Insert)

使用save()方法进行提高操作。

Session session = sessionFactory.openSession();

Transaction transaction = session.beginTransaction();

User user = new User();

user.setUsername("lisi");

user.setPassword("123456");

session.save(user);

transaction.commit();

session.close();

2. 查询操作(Select)

Hibernate提供了多种查询做法,如get()、load()、 Criteria、HQL等。

使用get()方法按ID查询。

Session session = sessionFactory.openSession();

User user = session.get(User.class, 1);

System.out.println(user.getUsername());

session.close();

使用load()方法按ID查询,与get()方法不同的是,load()方法或许会返回一个代理对象。

Session session = sessionFactory.openSession();

User user = session.load(User.class, 1);

System.out.println(user.getUsername());

session.close();

使用Criteria查询。

Session session = sessionFactory.openSession();

Criteria criteria = session.createCriteria(User.class);

criteria.add(Restrictions.eq("username", "lisi"));

List users = criteria.list();

for (User user : users) {

System.out.println(user.getUsername());

}

session.close();

使用HQL查询。

Session session = sessionFactory.openSession();

String hql = "from User where username = :username";

Query query = session.createQuery(hql);

query.setParameter("username", "lisi");

List users = query.list();

for (User user : users) {

System.out.println(user.getUsername());

}

session.close();

3. 更新操作(Update)

使用update()方法进行更新操作。

Session session = sessionFactory.openSession();

Transaction transaction = session.beginTransaction();

User user = session.get(User.class, 1);

user.setPassword("654321");

session.update(user);

transaction.commit();

session.close();

4. 删除操作(Delete)

使用delete()方法进行删除操作。

Session session = sessionFactory.openSession();

Transaction transaction = session.beginTransaction();

User user = session.get(User.class, 1);

session.delete(user);

transaction.commit();

session.close();

五、Hibernate优化

Hibernate提供了多种优化策略,如一级缓存、二级缓存、懒加载等。

1. 一级缓存

一级缓存是Session级别的缓存,默认开启。当同一个Session中查询同一个对象时,会直接从缓存中获取,而不是查询数据库。

2. 二级缓存

二级缓存是SessionFactory级别的缓存,需要显式配置。通过配置类缓存策略,可以缩减数据库访问次数,尽或许缩减损耗查询高效。

3. 懒加载

懒加载是一种延迟加载策略,当访问一个对象时,并不会立即加载其相关性的对象,而是在真正需要时才进行加载。这样可以缩减数据库访问次数,尽或许缩减损耗访问高效。

六、总结

Hibernate作为一个流行的ORM框架,大大简化了Java与数据库之间的交互。通过本文的入门示例,相信读者已经对Hibernate有了基本的了解。在实际开发中,还需要逐步深入学习Hibernate的高级特性,以尽或许缩减损耗项目开发高效。


本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: 后端开发


热门