Hibernate 入门 hello world

一个优秀的ORM框架

在这里插入图片描述
说白了orm就是对表里面列的操作转化为对对象的操作;

架构图

ORM框架就是对JDBC的封装
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

hibernate实操

在这里插入图片描述
项目结构基本上是这样

这样运行的话 他会报一个错: 说*.hbm.xml找不到,原因是 maven项目是由maven编译的 他会把resource目录下的文件都放到编译后的target.classes目录下,但是java目录下的就不会放进去,所以就没找到了,这个时候需要在maven的pom下配置

         <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
        </resources>


    </build>

加了之后就能够把这个也放进去,

News.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="Bean">

    <class name="News" table="news">
        <id name="id">
            <column name="id"/>
            <!-- 主键生成策略(手动生成) -->
            <generator class="native"></generator>

        </id>
        <property name="title" type="java.lang.String">
            <column name="N_TITLE"/>
        </property>
        <property name="author" type="java.lang.String">
            <column name="N_AUTHOR"/>
        </property>
        <property name="date" type="java.sql.Date">
            <column name="N_DATE"/>
        </property>
    </class>
</hibernate-mapping>

下面编写测试类

package org.example;

import static org.junit.Assert.assertTrue;

import Bean.News;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.junit.Test;

import java.sql.Date;

/**
 * Unit test for simple App.
 */
public class AppTest {
    /**
     * Rigorous Test :-)
     */
    @Test
    public void shouldAnswerWithTrue() {

//        1.创建一个SessionFactory对象
        SessionFactory sessionFactory = null;
//        1.1 创建一个Configuration对象  对应hibernate的基本配置信息和对象关系映射信息
//        configure(); 里面不写参数的话默认加载的就是hibernate的默认配置文件
        Configuration configuration = new Configuration().configure();
//        1.2 hibernate 的任何配置和服务都需要在该对象中注册后才能生效
        configuration.addClass(News.class);
        ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
//            1.3
        sessionFactory = configuration.buildSessionFactory(serviceRegistry);
//        2.创建一个Session 对象
        Session session = sessionFactory.openSession();
//        3.开启事务
        Transaction transaction = session.beginTransaction();

//        4.执行保存操作
        News news = new News(1,"Java", "ATGUIGU", new Date(new java.util.Date().getTime()));
        session.save(news);  //执行保存操作
     //       News news = session.get(News.class,1);  //查询操作
//        5.提交事务
        transaction.commit();
//        6.关闭Session
        session.close();
//        7.关闭SessionFactory对象
        sessionFactory.close();
    }
}

hibernate配置文件

<?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>
        <!--  mysql账户名  -->
        <property name="connection.username">root</property>
        <!--  mysql密码  -->
        <property name="connection.password">123123</property>
        <!--  mysql驱动  -->
        <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>

        <!--  mysql连接URL  -->
        <property name="connection.url">
            <![CDATA[jdbc:mysql://127.0.0.1:3306/hibernate?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT]]></property>
        <!--jdbc:mysql://121.36.36.156:3306/Hibernate?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8-->
        <!--  配置hibernate 基本信息-->
        <!--  数据库方言  -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

        <!--  显示sql语句 执行SQL时候是否在控制台打印SQL语句 -->
        <property name="show_sql">true</property>

        <!--  格式化sql语句  -->
        <property name="format_sql">true</property>

        <!--  根据需要创建数据库  -->
        <property name="hbm2ddl.auto">update</property>

        <!--        指定关联的 .hbm.xml文件-->
        <!--        <mapping class="Bean.News"/>-->
        <mapping resource="Bean/News.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

需要的依赖

   <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.4.9.Final</version>
        </dependency>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值