Java框架之Hibernate--初识Hibernate

来源:互联网 发布:淘宝智能客服机器人 编辑:程序博客网 时间:2024/05/29 09:43

环境与工具:jdk1.8、IntelliJ IDEA 2017.1.4、Hibernate 5.2.10、JUnit4、MySql 5.7。
目标:在idea上编写第一个hibernate的例子(通过hibernate向mysql数据库中插入一条记录)

1、新建一个项目

1.1 本地无hibernate Jar包

如果本地没有hibernate的jar包的话,那么就勾选Download, Idea会自动去下载。
新建项目下载
点击Configure…可以选择下载hibernate的版本与存储位置,如下图。
下载hibernate

1.2 本地有hibernate Jar包

如果本地没有hibernate的jar包的话,那么选择 Use library,点击Create…选中所有需要的Jar包即可
导入本地Jar包

Jar包选择好后直接Next输入项目名称然后Finish即可。

2、链接到Mysql

点击Idea的界面的最右边Database,新建一个Mysql的Database。如下图:
这里写图片描述
填写好User与Password, Host与Port一般默认的就可以了,Database先不填。然后测试一下链接显示成功,点击Apply。
链接到数据库

3、创建数据库

这里写图片描述

  1. 打开Sql的Console
  2. 编写Sql语句,创建一个名为 hibernate 的数据库
  3. 运行
  4. 双击Schemas,显示所有的数据库
  5. 选着刚才创建好的hibernate
  6. 刷新

这里写图片描述

这里写图片描述
然后再指定hibernate数据库。

然后接着创建一张Student表
这里写图片描述

最后导入mysql-jdbc驱动的Jar包到项目。

4、编写hibernate.cfg.xml配置文件

在创建项目的时候 勾选了create default hibernate configuration and main class,在项目创建成功后就会在src文件夹下生成hibernate.cfg.xml配置文件。

<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC        "-//Hibernate/Hibernate Configuration DTD//EN"        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration>    <session-factory>        <!--连接数据库的url-->        <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>        <!--连接所用的驱动-->        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>        <!--数据库用户名-->        <property name="connection.username">root</property>        <!--数据库密码-->        <property name="connection.password">123456</property>        <!--方言:指定了与Hibernate进行交互的特定SQL变体-->        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>        <!--显示Sql语句-->        <property name="show_sql">true</property>        <!--格式化Sql语句-->        <property name="format_sql">true</property>        <!--将数据库模式直接自动生成到数据库中-->        <property name="hbm2ddl.auto">update</property>    </session-factory></hibernate-configuration>

5、自动生成持久化映射文件

这里写图片描述
1. 点击面板最左边的persistence
2. 右键HelloHibernate
3. 选择最下面的 Generate Persistence Mapping—>By Database Schema

这里写图片描述

如上图,依次选择刚才创建的数据库,生成的实体类所在的位置(填写或选择一个包),选择要映射的表,点开sutdent 可以看到Birthdate导入的是java.sql.Date ,这里把它换成 java.util.Date.
与最下面三个选项,点击OK.
这时候项目下就生成了两个文件 StudentEntity.java 与 StudentEntity.hbm.xml

这里写图片描述

为了方面后面的操作,在StudentEntity.java里面添加两个构造方法。

public StudentEntity() {    }public StudentEntity(int studentId, String name, int age, String sex,                          String address, Date birthdate, String phoneNumber) {        this.studentId = studentId;        this.name = name;        this.age = age;        this.sex = sex;        this.address = address;        this.birthdate = birthdate;        this.phoneNumber = phoneNumber;    }

同时hibernate.cfg.xml配置文件下面也添加了<mapping/>映射关系。
这里写图片描述
这里有一个比较疑惑的地方就是,每次自动生成entity类的时候勾选了Add Session Factory后,生成文件成功后,我在hibernate.cfg.xml配置文件里面设置的 connection.username 与connection.password总会被删除掉,这导致后面进行对数据库的操作的时候会报错,连接不上数据库。现在还不知道是什么原因导致的。

在这里要把被删掉的connection.username 与connection.password给添加上
<property name="connection.password">123456</property>
<property name="connection.username">root</property>

6、编写测试类

在项目下新建一个名为StudentSaveTest的测试类:
使用idea自带的JUnit4

*****import java.util.Date;public class StudentSaveTest {    private StandardServiceRegistry registry;    private SessionFactory sessionFactory;    private Session session;    private Transaction transaction;    @Before    public void init() {        registry = new StandardServiceRegistryBuilder().configure().build();        try {            sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();        } catch (Exception e) {            StandardServiceRegistryBuilder.destroy(registry);        }        /*  也可以通过这种方式获取sessionFactory        Configuration config = new Configuration().configure();        sessionFactory = config.buildSessionFactory();         */        /*        在早期的hibernate版本中还通过这种方式获取sessionFactory         Configuration config = new Configuration().configure();        //创建服务注册对象        ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().                applySettings(config.getProperties()).build();                sessionFactory = config.buildSessionFactory(serviceRegistry);         */        session = sessionFactory.openSession();        transaction = session.beginTransaction();    }    @After    public void destroy() {        transaction.commit();        session.close();        sessionFactory.close();    }    @Test    public void test() {        StudentEntity student = new StudentEntity(95001, "张三", 21, "男", "中国", new Date(), "123456789");        session.save(student);    }}

运行测试方法。
这里写图片描述
查看数据库:成功添加一条记录到数据库中
这里写图片描述

至此,已经成功的运用hibernate往数据库里面插入了一条记录。

原创粉丝点击