IDEA配置hibernate的步骤详解

首先打开IDEA 新建一个Maven项目

 接下来导入maven依赖

<dependencies>
        <dependency>
            <groupId>com.oracle.database.jdbc</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.4</version>
        </dependency>

        <!-- log4j jar -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
        </dependency>
        <!--junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <!-- Hibernate jar-->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-agroal</artifactId>
            <version>5.4.27.Final</version>
            <type>pom</type>
        </dependency>
    </dependencies>

再配置hibernate.cfg.xml文件(IDEA自动生成)

1.点击

 

2.点击+号找到Hibernate文件一路next即可(我已经配过了所有里面没有)

在hibernate.cfg.xml文件中配置相相关属性(有注释):

<session-factory>
      <!-- 配置数据库的基本信息 -->
      <!--数据库连接url-->
      <property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:orcl</property>
      <!--连接数据库的Driver-->
      <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
      <!--用户名-->
      <property name="connection.username">scott</property>
      <!--密码-->
      <property name="connection.password">123456</property>
      <!-- 配置hibernate指定数据库的方言 -->
      <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>

    <!-- 配置hibernate的基本信息 -->
    <!-- 配置后才能使用session = sessionFactory.getCurrentSession(); -->
    <property name="current_session_context_class">thread</property>
    <!-- 打印sql语句到控制台 -->
    <property name="show_sql">true</property>
    <!-- 格式化sql语句 -->
    <property name="format_sql">true</property>
    <!-- 指定自动生成数据表的策略 -->
    <property name="hbm2ddl.auto">update</property>

    <!-- 注册实体关系映射文件 -->
    <mapping resource="com/xxx/pojo/users.hbm.xml"/>
  </session-factory>

创建持久化类和映射文件

public class users {
    private int id;
    private String name;
    private String password;
    private String telephone;
    private String username;
    private String isadmin;

    @Override
    public String toString() {
        return "users{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                ", telephone='" + telephone + '\'' +
                ", username='" + username + '\'' +
                ", isadmin='" + isadmin + '\'' +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getIsadmin() {
        return isadmin;
    }

    public void setIsadmin(String isadmin) {
        this.isadmin = isadmin;
    }
}

类对应的映射文件(有注释)

<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <!--name实体类路径 table数据库表名 schema表的拥有者-->
    <class name="com.xxx.pojo.users" table="users" schema="scott">
        <!--此id属性标志 主键映射 name为实体类中的属性名称 type为数据类型 column为数据库中的类名-->
        <id name="id" type="java.lang.Integer" column="id">
            <!--此属性用于指定具体注解生成策略 assigned策略,不使用主键生成策略,由手工输入-->
            <generator class="assigned"></generator>
        </id>
        <!--name为实体类中的属性名称 type为数据类型 column为数据库中的列名 not-null表示不能为空与数据库对应-->
        <property name="name" type="java.lang.String" column="name" not-null="true"/>
        <property name="password" type="java.lang.String" column="password"/>
        <property name="telephone" type="java.lang.String" column="telephone"/>
        <property name="username" type="java.lang.String" column="username"/>
        <property name="isadmin" type="java.lang.String" column="isadmin"/>
    </class>
</hibernate-mapping>

最后编写测试类,查询主键为1的users类的信息,进行测试是否配置OK(看注释)

import com.xxx.pojo.users;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

public class UserTest {
    @Test
    public void test1(){
        //创建一个sessionFactory对象
        SessionFactory factory = new Configuration().configure().buildSessionFactory();
        //创建一个session
        /*Session session=factory.getCurrentSession();*/
        Session session = factory.openSession();
        //开启事务
        Transaction transaction = session.beginTransaction();
        //查询数据
        users users = session.get(users.class, 1);
        System.out.println(users);

        //提交事务
        transaction.commit();
        //事务回滚
        // transaction.rollback();

        //关闭session
        session.close();
        //关闭sessionFactory
        factory.close();
    }
}

运行结果 

期间可能遇到的报错:

1.项目找不到xml文件,在maven文件中加入这段代码:

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

2.还有这个:Message: 2 字节的 UTF-8 序列的字节 2 无效

在项目的settings里面搜索 File Encoding将这两个选项都设置为UTF-8;(需要重启)

 我差不多就遇到这两个报错


版权声明:本文为qq_51663359原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。