什么是Hibernate,Hibernate有什么作用?
答;在没有使用Hibernate之前,我们程序员通过自己编写代码对DB(数据库)实现JDBC操作,其中出现了大量冗余的代码,管理起来十分不方便。
- Hibernate是一个简单的结构,将一系列操作封装起来,我们只管使用他们提供对API进行调用,完成JDBC操作;
- Hibernate是一个ORM(Object Relationship Mapping)对象映射框架,程序员在编写代码的时候,使用对是面向对象的思想,但是在关系型数据库存储数据的时候,使用的是一条条的数据。为了用纯面向对象的方式解决问题,将所有程序中的对象和数据库建立起映射关系,ORM就是这样的技术。而Hibernate就是这样的框架,用面向对象的方式来操作数据库。
- HIbernate屏蔽了数据库的差异,例如我们需要将数据库从mysql更换为Orecle,只需要更改方言等配置就可以实现;
开始使用Hibernate(使用Maven开发):
创建一个Maven项目:
2)在Src/main/resource中创建hibernate.cfg.xml(使用默认名字)
hibernate.cfg.xml中的配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory >
<!-- 配置数据库 -->
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/blxny?useSSL=false&serverTimezone=CTT</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">cuisizhe</property>
<!-- 配置mysql方言 -->
<!-- 一定要设置成5以上 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<!-- 是否显示mysql -->
<property name="hibernate.show_sql">true</property>
<!-- 格式化mysql -->
<property name="hibernate.format_sql">true</property>
<!-- 自动创建mysql表 -->
<property name="hibernate.hbm2ddl.auto">update</property>
</session-factory
</hibernate-configuration>
注意错误:
3)在src/main/java目录下创建Student类
在Student中创建字段,并且提供get和set方法,提供空的构造器和带参数构造器,覆盖toString方法.
4)产生映射文件(连续next 然后finish)
5)因为我们添加了映射文件,我们需要告诉hibernate.cfg.xml,因此需要配置
6)基本配置完成,创建测试类
如果不会:先点击OK,然后对着整个项目右键BuildPath->BuildLibrary-->JUnit--->JUnit4--->finish
测试类对运行方式是
@Test
public void test() {
//初始化 第一次比较繁琐 但是我们可以经过封装,以后就不用编写了
Configuration configuration = new Configuration().configure();
ServiceRegistry serviceRegistry = configuration.getStandardServiceRegistryBuilder().build();
SessionFactory sessionFactory = new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
//测试插入一个数据
Student s = new Student("测试1号","男");
session.save(s);
//关闭 先开后关
transaction.commit();
session.close();
sessionFactory.close();
}
大功告成 会生成一个Create语句和一个Insert语句 前面设置<property name="hibernate.hbm2ddl.auto">update</property> 表示如果不存在表则自动创建