zoukankan      html  css  js  c++  java
  • sgg_2_hibernate开发步骤

    一、开发步骤

      1.1新建java项目

      1.2项目下见一个lib文件加用于存放所需jar包

      hibernate-release-4.2.21.Finallib equired*.jar、mysql驱动包及一个junit4.10.jar包

      1.3实体类及实体类映射文件的编写  

    package edu.aeon.hibernate.bean;
    /**
     * [说明]:学生实体类
     * @author aeon(qq:1584875179)
     */
    
    import java.sql.Date;
    public class Student{
        //学生编号
        private Integer stuId;
        //学生姓名
        private String stuName;
        //学生密码
        private String stuPassword;
        //学生性别
        private boolean stuSex;
        //学生年龄
        private Integer stuAge;
        //学生出生日期
        private Date stuBirthday;
        
        //无参构造
        public Student() {
        }
        //有参构造
        public Student(String stuName, String stuPassword, boolean stuSex, Integer stuAge, Date stuBirthday) {
            super();
            this.stuName = stuName;
            this.stuPassword = stuPassword;
            this.stuSex = stuSex;
            this.stuAge = stuAge;
            this.stuBirthday = stuBirthday;
        }
        //setter/getter
        public Integer getStuId() {
            return stuId;
        }
        public void setStuId(Integer stuId) {
            this.stuId = stuId;
        }
        public String getStuName() {
            return stuName;
        }
        public void setStuName(String stuName) {
            this.stuName = stuName;
        }
        public String getStuPassword() {
            return stuPassword;
        }
        public void setStuPassword(String stuPassword) {
            this.stuPassword = stuPassword;
        }
        public boolean isStuSex() {
            return stuSex;
        }
        public void setStuSex(boolean stuSex) {
            this.stuSex = stuSex;
        }
        public Integer getStuAge() {
            return stuAge;
        }
        public void setStuAge(Integer stuAge) {
            this.stuAge = stuAge;
        }
        public Date getStuBirthday() {
            return stuBirthday;
        }
        public void setStuBirthday(Date stuBirthday) {
            this.stuBirthday = stuBirthday;
        }
    }

      Student.hbm.xml

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- Generated 2019-4-30 15:14:09 by Hibernate Tools 3.4.0.CR1 -->
    <hibernate-mapping>
        <!--name要全局限定名(包名+类名)  table:表名 -->
        <class name="edu.aeon.hibernate.bean.Student" table="STUDENT">
            <!-- name:属性名    type:属性所对应的类型 -->
            <id name="stuId" type="java.lang.Integer">
                <!-- column->name:表字段 -->
                <column name="STUID" />
                <!-- 主键的生成策略 此处native:为根据数据库底层生成自增长的序列 -->
                <generator class="native" />
            </id>
            <property name="stuName" type="java.lang.String">
                <column name="STUNAME" />
            </property>
            <property name="stuPassword" type="java.lang.String">
                <column name="STUPASSWORD" />
            </property>
            <property name="stuSex" type="boolean">
                <column name="STUSEX" />
            </property>
            <property name="stuAge" type="java.lang.Integer">
                <column name="STUAGE" />
            </property>
            <property name="stuBirthday" type="java.sql.Date">
                <column name="STUBIRTHDAY" />
            </property>
        </class>
    </hibernate-mapping>

      1.4hibernate.cfg.xml配置文件的编写

    <?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>
            <!-- 一、数据库连接的(包括驱动类、url、用户名及密码)主配置信息 [start]-->
            <!-- 1.数据库连接驱动类 -->
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            <!-- 
              2.数据库连接url(资源定位:连那一台上的那一个端口下的那一个数据库)、此处连本地、3306端口这两个均为默认,可省略 
              jdbc:mysql:jdbc协议下的mysql子协议
              db_test:要连接的数据库名(即:create database db_test)
              -->
            <property name="connection.url">jdbc:mysql://localhost:3306/db_test</property>
            <!-- 3.要连接数据库的用户名 -->
            <property name="connection.username">root</property>
            <!-- 4.要连接数据库的用户名 所对应的密码-->
            <property name="connection.password">root</property>
            <!-- 数据库连接的主配置信息 [/end]-->
            <!-- 二、数据库连接的一些辅助(是否在控制台打印sql语句、打印的sql语句是否要进行格式化及一些创建表的策略)配置信息[start] -->
            <!-- 1.数据库方言 -->
            <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
            <!-- 2.是否在控制台打印sql语句    true:打印    |false不打印 -->
            <property name="show_sql">true</property>
            <!-- 3.打印出来的sql语句是否要格式化    true:格式化|false:不格式化 -->
            <property name="format_sql">true</property>
            <!-- 
                 4.创建数据库表策略 
                 create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
                 create-drop:每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。    
                 update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。
                 validate:每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。 
            -->
            <property name="hbm2ddl.auto">update</property>
            <!-- 数据库连接的一些辅助配置信息[/end] -->
            <!-- 三、引入实体类到关系数据库(实体类-表|属性-字段)的映射文件[start] -->
            <mapping resource="edu/aeon/hibernate/bean/Student.hbm.xml"/>
            <!-- 引入实体类到关系数据库的映射文件[/end] -->
        </session-factory>
    </hibernate-configuration>

      1.5测试类的编写

      

    package edu.aeon.hibernate.test;
    import java.sql.Date;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.service.ServiceRegistry;
    import org.hibernate.service.ServiceRegistryBuilder;
    import org.junit.Test;
    
    import edu.aeon.hibernate.bean.Student;
    /**
     * [说明]:测试类
     * @author aeon(qq:1584875179)
     *
     */
    public class HibernateTest {
        @Test
        public  void saveTest() {
            Configuration configuration=new Configuration().configure();
            ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
            SessionFactory sessionFactory=configuration.buildSessionFactory(serviceRegistry);
            Session session=sessionFactory.openSession();
            Student student=new Student("zhangsan", "zhangsan110", true, 22,new Date(new java.util.Date().getTime()));
            Transaction transaction = session.beginTransaction();
            session.save(student);
            transaction.commit();
            session.close();
        }
    }

      测试结果截图:

      数据库信息截图:

      

    如有任何疑问可联系邮箱: 给我发邮件、或直接联系QQ:1584875179 || 点返回首页

  • 相关阅读:
    用C++读写EXCEL文件的几种方式比较
    20个值得收藏的网页设计开放课件
    char* 应用, 去除字符串内多余空格, 用算法而非库函数
    东拉西扯:王建硕主义
    Lisp 的本质(The Nature of Lisp)
    web前端:html
    [原译]理解并实现原型模式实现ICloneable接口.理解深浅拷贝
    [原译]理解并实现装饰器模式
    3分钟理解Lambda表达式
    [原译]实现IEnumerable接口&理解yield关键字
  • 原文地址:https://www.cnblogs.com/aeon/p/10829259.html
Copyright © 2011-2022 走看看