zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    (转)回车 执行button点击
    (转)sp_executesql介绍和使用
    (转)SQL Server 2008将数据导出为脚本 [SQL Server]
    (转)Phonegap VS AppCan
    (转)asp.net动态设置标题title 关键字keywords 描述descrtptions
    Ubuntu Tomcat Service
    Ubuntu使用ssh方法连接不上
    Ubuntu输入su提示认证失败的解决方法
    Redis通过命令行进行配置
    linux下安装redis3.2
  • 原文地址:https://www.cnblogs.com/junhua4254/p/7717380.html
Copyright © 2011-2022 走看看