• hibernate学习之一 框架配置


    hibernate 框架

      1、hibernate框架应用在javaee三层结构中的dao层框架

      2、好处就是不需要写复杂jdbc代码,不需要sql语句实现

      3、是开源的轻量级框架

      hibernate使用orm思想对数据库进行crud操作, orm - object relational mapping, 对象关系映射,让实体类和数据库表一一对应,实体类属性与表里的字段一一对应。

    对数据库表进行操作,不需要对数据库操作,直接对实体类进行操作即可完成。它与jdbc的对比关系如下图

    MAVEN导包配置

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

    搭建hibernate步骤

      第一步,创建实体类

    public class LoginInfo {
            //对应数据库的主键,值唯一
            private String id;
            private String username;
            private String password;
    
            public String getId() {
                    return id;
            }
    
            public void setId(String id) {
                    this.id = id;
            }
    
            public String getUsername() {
                    return username;
            }
    
            public void setUsername(String username) {
                    this.username = username;
            }
    
            public String getPassword() {
                    return password;
            }
    
            public void setPassword(String password) {
                    this.password = password;
            }
    }

      注意:如果实体类对应的表不存在,hibernate可以自动创建数据表

      第二步 配置数据表与实体类的映射关系

      新建一个配置文件loginInfo.hbm.xml. 文件名字与位置没有固定,建议放在实体类所在包,名字样式为xxx.hbm.xml.在开始配置前,首先引入约束,约束文件为   http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd   点击下载MappingDTD文件

    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

       本例子中logininfo.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>
            <!--配置实体类与数据表对应关系
                    class 标签
                    name : 实体类名
                    table  :表名-->
            <class name="com.blueto.hibernate.LoginInfo" table="t_logininfo">
                    <id name="id" column="id">
                            <!--主键 自动增长-->
                            <!--<generator class="native"></generator>-->
                            <!--uuid方式生成主键-->
                            <generator class="uuid"></generator>
                    </id>
                    <!--name 实体类属性, column 表字段名-->
                    <property name="username"  column="username"></property>
                    <property name="password" column="password"></property>
            </class>
    
    </hibernate-mapping>

      第三步 创建hibernate的核心配置文件

      与mapping文件不一样,该配置文件名与位置必须固定,文件名只能为hibernate.cfg.xml, 并且只能放在目录src下面

      配置分三小步骤

        1)首先引入约束 http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd, 点击下载DTD

        2)配置数据库信息

        3)配置hibernate信息

        4)把映射配置文件(上一节的xxx.hbm.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>
                    <!--1) 配置数据库信息-->
                    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
                    <property name="hibernate.connection.url">jdbc:mysql:///t_logininfo</property>
                    <property name="hibernate.connection.username">root</property>
                    <property name="hibernate.connection.password">123</property>
                    <!-- 2)   配置hibernate信息,可选-->
                    <!--输出底层sql语句-->
                    <property name="hibernate.show_sql">true</property>
                    <!--输出sql格式-->
                    <property name="hibernate.format_sql">true</property>
                    <!--如果没有表,则创建,有则更新-->
                    <property name="hibernate.hbm2ddl.auto">update</property>
    
                    <!--配置数据库方言-->
                    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
                    <!--  3)  把映射配置文件放到核心配置文件中-->
                    <mapping resource="com/blueto/hibernate/logininfo.hbm.xml"></mapping>
            </session-factory>
    </hibernate-configuration>

      如果从没有接触过hibernate, 那怎么知道里面怎么配置啊?如果记不住配置内容,可以打开hibernate.properties文件查看里面的配置属性,找到对应的数据库按照properties里定义配置就好了。方便理解,上一张它们间的关系图

       我使用的是mysql数据库,其他数据库配置同样可以参考hibernate.properties文件配置(点击下载hibernate.properties)

      第四步 数据库的CRUD操作

    public class HiberDemo {
            @Test
            public void testAdd(){
                    // step 1 : 加载hibernate核心配置文件
                    Configuration cfg = new Configuration();
                    cfg.configure();
                    //setp 2  : 创建SessionFactory
                    SessionFactory sessionFactory = cfg.buildSessionFactory();
                    //step 3 :  创建session对象
                    Session session = sessionFactory.openSession();
                    //step 4 开启事务
                    Transaction tx = session.beginTransaction();
                    //step 5 crud
                    LoginInfo loginInfo = new LoginInfo();
                    loginInfo.setUsername("new name");
                    //写入数据表中,如果表不存在,则创建表,
                    // 前提是要在核心配置文件中配置 : <property name="hibernate.hbm2ddl.auto">update</property>
                    session.save(loginInfo);
                    //step 6 提交事务
                    tx.commit();
                    //step 7 关闭资源
                    session.close();
                    sessionFactory.close();
            }
    }
  • 相关阅读:
    [已解决] MAVEN安装代码到本地库,安装jar, source, javadoc的方式
    [已解决]Eclipse 插件Maven在使用 add dependency,找不到包,解决办法
    [已解决] windows 下 git 免输密码
    [已解决] windows 80端口被占用
    [已解决]Tomcat启动报 java.net.BindException: Address already in use: JVM_Bind
    [已解决] java.net.InetAddress.getHostName() 阻塞问题
    [已解决] 日常开发中禁用Tomcat自动重启
    [已解决] MyBatis 中bind用法
    [转]SOCKET通信中TCP、UDP数据包大小的确定
    使用beautifulsoup与requests爬取数据
  • 原文地址:https://www.cnblogs.com/lovemo1314/p/7258012.html
Copyright © 2020-2023  润新知