IDEA2019.3配置Hibernate的详细教程(未使用IDEA的自动化)

下面就为你详细讲解“IDEA2019.3配置Hibernate的详细教程(未使用IDEA的自动化)”。

1. 下载Hibernate框架及其相关依赖

首先,要使用Hibernate框架,你需要先下载Hibernate框架及其相关依赖。可以从官方网站https://hibernate.org/orm/下载最新版的Hibernate框架。另外需要注意的是,Hibernate的运行需要JPA(Java Persistence API)的支持,所以还需要下载JPA规范的相关jar包(例如javax.persistence-api.jar)。

2. 配置Hibernate的使用环境

在IDEA中配置Hibernate的使用环境,需要先在Project Structure中为项目添加相关依赖。具体步骤如下:
1. 打开 Project Structure:File -> Project Structure
2. 在左侧菜单中选择 Modules,然后点击“+”号,在弹出的依赖菜单中选择“Jars or directories...”选项,添加下载好的Hibernate和JPA的jar包
3. 进入Project Structure面板的Modules选项卡下的Sources选项卡,将项目的根目录或src目录标记为Source
4. 在Project Structure面板的Modules选项卡下的Libraries选项卡中找到添加进去的JPA jar包,然后设置它们的Scope为Compile,这里示例代码块供参考:

<dependencies>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.4.26.Final</version>
    </dependency>
    <dependency>
        <groupId>javax.persistence</groupId>
        <artifactId>javax.persistence-api</artifactId>
        <version>2.2</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.4.26.Final</version>
    </dependency>
</dependencies>

3. 配置Hibernate的数据库连接

配置Hibernate可以连接使用的数据库,需要在项目的classpath下新建一个名为hibernate.cfg.xml的文件,该文件中包含了Hibernate的所有配置信息。示例代码块如下:

<?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>
        <!-- 数据库连接配置 -->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test?characterEncoding=utf-8</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">123456</property>

        <!-- hibernate异步执行 -->
        <property name="hibernate.order_inserts">true</property>
        <property name="hibernate.jdbc.batch_size">50</property>
        <property name="hibernate.order_updates">true</property>

        <!-- 打印所有sql -->
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
        <property name="hibernate.use_sql_comments">true</property>

        <!-- 配置持久化对象 -->
        <mapping class="com.somewhat.test.User"/>

    </session-factory>
</hibernate-configuration>

其中示例代码配置的是MySQL数据库,数据库名称为test,用户名为root,密码为123456。

4. 新建实体类并映射

由于Hibernate的设计初衷是为了简化JDBC操作,因此其所操作的持久化对象(POJO)必须要有标准的setter()和getter()方法。定义实体类时,需要按照Hibernate的规范进行实现,并为实体类添加映射关系,将它与数据库中的表进行关联。
下面是一个定义实体类的示例代码:

@Entity
@Table(name = "user")
public class User {
    private Integer id;
    private String name;
    private Integer age;

    @Id
    @Column(name = "id", unique = true, nullable = false)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Integer getId() {
        return id;
    }

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

    @Column(name = "name", nullable = false, length = 20)
    public String getName() {
        return name;
    }

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

    @Column(name = "age", nullable = false)
    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

5. 编写Hibernate DAO层

在Hibernate中,持久化操作的实现都需要借助Hibernate的Session,每个线程的Session是非线程安全的,在使用完后需要进行关闭。可以借助org.springframework.orm.hibernate5.support.HibernateDaoSupport类,它可以封装Session的基本操作,提供一些常用的实现方法。
示例代码:

@Repository("userDao")
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {

    @Autowired
    public UserDaoImpl(SessionFactory sessionFactory) {
        super.setSessionFactory(sessionFactory);
    }

    @Override
    public void add(User user) {
        this.getHibernateTemplate().save(user);
    }

    @Override
    public void delete(Integer id) {
        this.getHibernateTemplate().delete(this.get(id));
    }

    @Override
    public void update(User user) {
        this.getHibernateTemplate().update(user);
    }

    @Override
    public User get(Integer id) {
        return this.getHibernateTemplate().get(User.class, id);
    }

    @Override
    public List<User> queryAll() {
        return (List<User>) this.getHibernateTemplate().find("from User");
    }
}

6. 测试代码

在完成Hibernate DAO层后,我们可以编写一个简单的测试代码,来测试hibernate的增删改查操作是否正常。示例代码如下:

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserDaoImplTest {

    @Autowired
    private UserDao userDao;

    @Test
    public void add() {
        User user = new User();
        user.setName("测试");
        user.setAge(20);

        userDao.add(user);
    }

    @Test
    public void delete() {
        userDao.delete(1);
    }

    @Test
    public void update() {
        User user = userDao.get(1);
        user.setAge(30);

        userDao.update(user);
    }

    @Test
    public void get() {
        User user = userDao.get(1);
        System.out.println(user.getName() + ", " + user.getAge());
    }

    @Test
    public void queryAll() {
        List<User> userList = userDao.queryAll();
        for (User user : userList) {
            System.out.println(user.getName() + ", " + user.getAge());
        }
    }
}

至此,我们就完成了IDEA2019.3配置Hibernate的详细教程(未使用IDEA的自动化)。

希望我的回答能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:IDEA2019.3配置Hibernate的详细教程(未使用IDEA的自动化) - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 解决maven maven.compiler.source和maven.compiler.target的坑

    当使用 Maven 进行 Java 项目的构建时,有时候我们需要指定编译时使用的 JDK 版本,这时就需要通过设置 maven.compiler.source 和 maven.compiler.target 属性来实现。 但是在使用过程中,由于不同 JDK 版本之间的兼容性问题,可能会出现一些奇怪的编译错误,如“类或接口已过时”、“方法不存在”等,这时我们就…

    Java 2023年6月2日
    00
  • Spring Security 安全认证的示例代码

    关于 Spring Security 安全认证示例代码的完整攻略,我将按照以下步骤来讲解: 系统需求 Spring Security 简介 Spring Security 安全认证的示例代码 示例代码的详细解释 示例的运行方式 附加示例 1. 系统需求 首先,你需要确保你的系统已经安装了以下环境: Java 1.8+; Maven; Eclipse 或者 I…

    Java 2023年5月20日
    00
  • Java深入理解代码块的使用细节

    Java 深入理解代码块的使用细节 代码块的定义 代码块是指被一对大括号包含起来的代码段,其中包括了定义变量、方法、循环、分支等语句。 Java中的代码块可以分为以下两种: 实例代码块 实例代码块是定义在类中的非静态代码块,可以用于初始化实例变量。实例代码块会在构造方法执行前执行。 实例代码块的示例代码如下: public class Demo { priv…

    Java 2023年5月20日
    00
  • 关于Spring统一异常处理及说明

    关于Spring统一异常处理及说明 在项目开发过程中,我们经常会遇到各种异常情况,比如参数校验不通过、数据不存在、数据库连接失败等等。当应用存在多个异常类型时,异常处理就显得比较复杂,不方便维护。为了方便异常的管理和维护,我们可以使用Spring提供的统一异常处理机制。 统一异常处理的实现方式 在Spring中,处理异常的方式有两种:1. @Exceptio…

    Java 2023年5月27日
    00
  • javascript之正则表达式基础知识小结

    JavaScript之正则表达式基础知识小结 正则表达式(Regular Expression)是一个用来处理文本的强大工具,具有非常丰富的语法和大量的用途,它可以用来处理文本的搜索、匹配、替换、验证等方面的问题。 正则表达式创建 在 JavaScript 中,正则表达式可以通过两种方式来创建: 1. 通过字面量形式创建 var reg = /ab+c/; …

    Java 2023年5月26日
    00
  • Java transient 关键字是干啥的

    当Java中的对象被序列化时,它们的所有属性(包括私有属性)都将被保存。在某些情况下,某些属性可能不想被序列化。在这种情况下,使用Java中的transient关键字进行标记,表示该属性不应该被序列化,并且不存储在返回的字节数组中。 在Java中,transient是一个关键字,用于标记类成员变量,通常用于序列化和反序列化。 Markdown 格式 在Mar…

    Java 2023年5月20日
    00
  • java单点登录(SSO)的实现

    下面我将详细讲解Java单点登录(SSO)的实现攻略,主要分为以下几个步骤: 步骤一:准备工作 我们需要准备以下工具和环境: JDK 1.8或以上版本 Maven 3.0或以上版本 Servlet容器,如Tomcat或Jetty Spring Boot 2.0或以上版本 步骤二:配置SSO服务器和客户端 配置SSO服务器我们需要在SSO服务器上做以下配置: …

    Java 2023年5月18日
    00
  • 创建Java线程安全类的七种方法

    让我详细讲解“创建Java线程安全类的七种方法”的完整攻略。Java线程安全类是多线程环境下安全并发的类,可以保证并发性的正确性。在Java中,可以使用以下7种方法来创建线程安全的类: 不可变性(Immutability):在Java中,不可变的对象是线程安全的,因为不可变对象的状态是不可更改的。你可以通过使用final修饰符来创建不可变的对象。例如: pu…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部