Hibernate的Annotation版Hello world实例

下面我将为你详细讲解“Hibernate的Annotation版Hello world实例”的完整攻略:

1. 构建项目

首先,我们需要构建一个Maven项目,在项目的pom.xml文件中添加相关依赖:

<dependencies>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.4.28.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.4.28.Final</version>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.200</version>
    </dependency>
</dependencies>

2. 创建Java实体类

创建一个Java实体类Student,并添加注解@Entity标识它是一个实体类,@Table指定表名,@Id标识主键,@GeneratedValue指定主键生成策略,@Column指定属性类型和列名。

@Entity
@Table(name = "student")
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private int id;

    @Column(name = "name")
    private String name;

    @Column(name = "age")
    private int age;

    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 int getAge() {
        return age;
    }

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

3. 配置数据源和Hibernate的注解配置文件

src/main/resources目录下创建一个名为application.properties的文件,配置数据源和Hibernate的注解配置信息:

spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.username=sa
spring.datasource.password=

spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=create

hibernate.format_sql=true
hibernate.hbm2ddl.auto=create

4. 创建DAO层代码

需要创建一个接口StudentDao,定义CRUD操作的接口方法。

public interface StudentDao {
    void save(Student student);

    List<Student> getAll();
}

并创建一个实现类StudentDaoImpl,使用@Repository注解标识它是一个DAO层的实现类,使用@PersistenceContext注解注入EntityManager对象。

@Repository
public class StudentDaoImpl implements StudentDao {
    @PersistenceContext
    private EntityManager entityManager;

    @Override
    public void save(Student student) {
        entityManager.persist(student);
    }

    @Override
    public List<Student> getAll() {
        TypedQuery<Student> query = entityManager.createQuery("select s from Student s", Student.class);
        return query.getResultList();
    }
}

5. 编写测试用例

创建一个测试类StudentDaoImplTest,测试学生的新增和查询。

@RunWith(SpringRunner.class)
@SpringBootTest
public class StudentDaoImplTest {
    @Autowired
    private StudentDao studentDao;

    @Test
    public void testSave() {
        Student student = new Student();
        student.setName("张三");
        student.setAge(18);
        studentDao.save(student);
        Assert.assertTrue(student.getId() > 0);
    }

    @Test
    public void testGetAll() {
        List<Student> studentList = studentDao.getAll();
        Assert.assertFalse(studentList.isEmpty());
    }
}

6. 运行测试用例

最后运行测试用例,测试结果应该如下:

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.example.demo.dao.StudentDaoImplTest
Hibernate: 

    create table student (
       id integer generated by default as identity (start with 1),
        age integer not null,
        name varchar(255),
        primary key (id)
    )
Hibernate: 
    insert 
    into
        student
        (age, name, id) 
    values
        (?, ?, ?)
Hibernate: 
    select
        student0_.id as id1_0_,
        student0_.age as age2_0_,
        student0_.name as name3_0_ 
    from
        student student0_
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.194 s - in com.example.demo.dao.StudentDaoImplTest
[INFO]

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Hibernate的Annotation版Hello world实例 - Python技术站

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

相关文章

  • RMI使用学习 小结

    RMI使用学习 小结 1. RMI简介 RMI(远程方法调用)是Java编程语言中用于实现远程过程调用的应用程序编程接口。RMI使一个Java虚拟机上的对象能够调用在另一个Java虚拟机上的对象的方法。RMI实现了对象级别的远程过程调用,用户不必关心底层的网络通讯细节。 RMI使用Java远程调用(Java Remote Method Invocation)…

    Java 2023年6月15日
    00
  • Java SpringBoot实现文件上传功能的示例代码

    下面是Java SpringBoot实现文件上传功能的详细攻略: 1. 项目依赖 首先需要在SpringBoot项目中引入以下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-…

    Java 2023年5月19日
    00
  • java 将方法作为传参–多态的实例

    当我们在Java中定义一个方法时,有时需要将另一个方法作为参数进行传递。这种将方法作为另一个方法的参数的机制被称为方法参数化或方法传递。 这种技术是Java多态的实例之一,多态允许我们以不同的方式来处理不同类型的对象。将方法参数化允许我们根据需要传递不同的行为。 下面是完整的攻略,分为以下几个步骤: 1.定义一个接口 我们首先需要定义一个接口,它将定义我们需…

    Java 2023年5月26日
    00
  • Java 数据库连接池c3p0 介绍

    关于Java数据库连接池c3p0介绍的详细攻略,请仔细阅读以下内容。 什么是连接池? 在Java开发过程中,数据库连接占用了许多资源,如果在每次请求时都新连接数据库会使系统负载非常高,而且打开和关闭数据库连接也需要一定的时间。所以,使用连接池可以有效减少系统开销和提高系统的响应速度。 连接池是管理数据库连接,使得多个用户之间可以共享一个或多个数据库连接。连接…

    Java 2023年5月20日
    00
  • 如何使用Bean Validation 解决业务中参数校验

    当我们在开发业务应用时,通常需要对参数进行校验,以防止错误的输入或不合法的操作。而Bean Validation是Java EE的一项规范,可以帮助我们在业务中进行参数校验。下面是使用Bean Validation解决业务中参数校验的完整攻略: 第一步:引入Bean Validation依赖 在maven中,我们可以在pom.xml文件中添加以下依赖: &l…

    Java 2023年5月20日
    00
  • docker常用命令

    一、Docker基本概念 1.镜像(Image) Docker 镜像 是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像 不包含 任何动态数据,其内容在构建之后也不会被改变。 docker的镜像是由 镜像名+版本 组成的。如果没有指定镜像名没有指定版本,默认是…

    Java 2023年4月23日
    00
  • SpringBoot多环境开发该如何配置

    Spring Boot 多环境开发配置攻略 在本文中,我们将详细讲解 Spring Boot 多环境开发配置的完整攻略。我们将使用 Spring Boot 2.5.0 版本的源码进行分析。 步骤一:创建多个配置文件 在 Spring Boot 中,我们可以为不同的环境创建不同的配置文件。例如,我们可以为开发环境创建一个名为 application-dev.p…

    Java 2023年5月15日
    00
  • Spring+Vue整合UEditor富文本实现图片附件上传的方法

    我来详细讲解一下“Spring+Vue整合UEditor富文本实现图片附件上传的方法”的完整攻略。 1. 简介 此攻略将介绍如何在Spring和Vue框架里整合UEditor富文本编辑器,并且实现图片附件的上传与展示。UEditor是由百度开发的一款富文本编辑器,可以轻松实现类似Word的文本编辑功能。 2. 整合UEditor 2.1 引入UEditor …

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