Struts学习-Hibernate

Hibernate (开放源代码的对象关系映射框架)

http://www.cnblogs.com/wenwen123/p/5658625.html

一、

1.新建

2.配置

<!-- hibernate-core -->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>5.2.12.Final</version>
    </dependency>

    <!-- mysql-connector-java
     当前最新测试版本:8.0.8-dmr
     当前最新版稳定版本:6.0.6
     上一代的稳步版本:5.1.44
     -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.8-dmr</version>
    </dependency>

3.Test.java,配置类

public static void main(String[] args) {
        //第一步:需要一个配置类
        Configuration config = new Configuration();
        //第二步:对配置类加载一个配置文件
        config.configure("/hibernate.cfg.xml");
        //非常慢
        SessionFactory factory = config.buildSessionFactory();
        System.out.println("factory:"+factory);

    }

4.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>
    <!--
    JDBC中数据库的URL地址
    mysql5:jdbc:mysql://localhost:3306/pyq
    mysql6:jdbc:mysql://localhost:3306/pyq?serverTimezone=UTC
    -->

    <property name="connection.url">jdbc:mysql://localhost:3306/pyq?serverTimezone=UTC</property>
    <property name="connection.username">root</property>
    <property name="connection.password">123456</property>
    <!--
    老版本mysql5.0是:com.mysql.jdbc.Driver
    新版mysql6.0是:com.mysql.cj.jdbc.Driver
    -->
    <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
    <!--此属性留给以后再说-->
    <property name="hbm2ddl.auto">update</property>
    <!--指定一种数据库方言-->
    <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
    <!--SQL语句是否格式化,仅仅影响调试信息是否好看,不影响程序运行-->
    <property name="format_sql">true</property>
    <!--verifyServerCertificate-->



  </session-factory>
</hibernate-configuration>

Test.java右键(ps:要先把)数据库启动

地址:https://gitee.com/MuNianShi/Hibernate001.git

二、数据库的链接,这里用的是MySQL

Mysql里有一个数据库pyq,在数据库pyq里建表

 

1.先写一个实体类

2.在桌面上建立一个文件夹com.nf.entity在里面建Student.hbm.xml,再把它复制到resources里面

3.在测试类的第二步里

 //第二步:对配置类加载一个配置文件
        config.configure("/hibernate.cfg.xml");//这里要删掉

4.在hibernate.cfg.xml文件里添加

<mapping resource="com.nf.entity/Student.hbm.xml"></mapping>

5.编写Student.hbm.xml

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.nf.entity">
    <!--
    private Integer id;
    private String name;
    private String sex;
    -->
    <class name="Student" table="t_student">
        <id name="id" column="id888">
            <!--generator生成的意思
            mysql:native
            -->
            <generator class="native"></generator>
        </id>
        <property name="name" type="java.lang.String" column="name888" length="20" not-null="true"></property>
        <property name="sex" type="java.lang.String" column="sex888" length="4"></property>

    </class>

</hibernate-mapping>

地址:https://gitee.com/MuNianShi/Hibernate002.git

三、增删改查,事务

一、下载相关jar包
(POM.xml hibernate-core,mysql-connector-java)

二、配置数据库相关信息hibernate.cfg.xml
(driver,url,username,password,dialect)
目的:获得一个SessionFactory实例

【后期:合并到spring】

三、ORM技术,通过Xxx.hbm.xml
实现java类的属性跟表的字段要一一对应

四、通过Session的API,实现增删改查

3.主要处理测试类Test.java,在其中添加方法。

首先先修改这个文件

修改Test.java

package com.nf;

import com.nf.entity.Student;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class Test {

    public static void main(String[] args) {
        //第一步:需要一个配置类
        Configuration config = new Configuration();
        //第二步:对配置类加载一个配置文件
        config.configure("/hibernate.cfg.xml");
        //非常慢
        SessionFactory factory = config.buildSessionFactory();
        //System.out.println("factory:"+factory);

        //第三步:通过Session的API,实现增删改查
        Session session = factory.openSession();

        //1.增
        //这是我们学习Mysql使用的增加:"insert into Student(name,sex) values(?,?);"
        Student s1 = new Student();
        s1.setName("奶妈");
        s1.setSex("女");
        session.save(s1);

        //这里是关闭
        session.close();
        factory.close();
    }
}

删:其它不变

//4.删
        //要先查到,然后删除
        Student ss = session.get(Student.class,3);
        session.beginTransaction();
        session.delete(ss);
        session.getTransaction().commit();

改:其它不变

//3.改
        //要先查到,然后修改
        Student ss = session.get(Student.class,3);
        ss.setName("剑魔");
        session.beginTransaction();
        session.update(ss);
        session.getTransaction().commit();

查:其它不变

//2.查询 Query query = session.createQuery("from Student ");
        //查询分2种:
        // 1.按HQL查询(n条记录)(没写)
        // 2.直接过ID指定获取一个实例:select * from t_student where id=3
        Student ss = session.get(Student.class,3);
        System.out.println(   ss.getName()  );


        //这里是关闭
        session.close();
        factory.close();

事务:故意让他发生异常,但不修改内容

//5.感受一下事务的回滚
        session.beginTransaction();
        try {
            Student s1 = session.get(Student.class,1);
            Student s2 = session.get(Student.class,2);
            s1.setSex("女");
            s2.setSex("美颜后的女性");
            session.update(s1);
            session.update(s2);
            //如果全部成功,提交事务
            session.getTransaction().commit();
        }catch (Exception e){
            System.out.println("发生异常:"+e.getMessage());
            //如果有异常,事务回滚
            session.getTransaction().rollback();
        }

地址:https://gitee.com/MuNianShi/Hibernate002.git

原文地址:https://www.cnblogs.com/junhua4254/p/7717380.html