简单讲解Hibernate数据("轻松入门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的高级特性,以尽或许缩减损耗项目开发高效。